Okay here’s a pretty short code to reproduce it: data <- read.table("http://users.jyu.fi/~slahola/files/glm1_datoja/yoruotsi.txt", header=TRUE) attach(data)
fit2 <- lm(ruotsi.pist ~ mies + koulu + lka + koulu*clka) bs <- coef(fit2) varitB <- c(data[koulu == 'B',]$mies) varitB[varitB == 0] = 2 plot(data[data$koulu == 'B',]$lka, data[koulu == 'B',]$ruotsi.pist, col=varitB, pch=16, xlab='', ylab='', main='Lukio B’) curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x+bs["kouluB:clka"]*clka, from=min(lka), to=max(lka), add=TRUE, col='red') > On 25 Sep 2016, at 19:24, Jeff Newmiller <jdnew...@dcn.davis.ca.us> wrote: > > Go directly to C. Do not pass go, do not collect $200. > > You think curve does something, but you are missing what it actually does. > Since you don't seem to be learning from reading ?curve or from our > responses, you need to give us an example you can learn from. > -- > Sent from my phone. Please excuse my brevity. > > On September 25, 2016 9:04:09 AM PDT, mviljamaa <mvilja...@kapsi.fi> wrote: >> On 2016-09-25 18:52, Jeff Newmiller wrote: >>> You seem to be confused about what curve is doing vs. what you are >>> doing. >> >> But my x-range in curve()'s parameters from and to should be the entire >> >> lka vector, since they are from=min(lka) and to=max(lka). Then why does >> >> this not span the entire of lka? Because of duplicate entries or what? >> >> It seems like I cannot use curve(), since my x-axis must be exactly lka >> >> for the function to plot the y value for every lka value. >> >>> A) Compute the points you want to plot and put them into 2 vectors. >>> Then figure out how to plot those vectors. Then (perhaps) consider >>> putting that all into one line of code again. >>> >>> B) The predict function is the preferred way to compute points. It >> may >>> be educational for you to do the computations by hand at first, but >> in >>> the long run using predict will help you avoid problems getting the >>> equations right in multiple places in your script. >>> >>> C) Learn what makes an example reproducible (e.g. [1] or [2]), and >> ask >>> your questions with reproducible code and data so we can give you >>> concrete responses. >>> >>> [1] http://adv-r.had.co.nz/Reproducibility.html >>> [2] >>> >> http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example >>> -- >>> Sent from my phone. Please excuse my brevity. >>> >>> On September 25, 2016 8:36:49 AM PDT, mviljamaa <mvilja...@kapsi.fi> >>> wrote: >>>> On 2016-09-25 18:30, Duncan Murdoch wrote: >>>>> On 25/09/2016 9:10 AM, Matti Viljamaa wrote: >>>>>> Writing: >>>>>> >>>>>> >>>> >> bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*lka+bs["kouluB:clka"]*clka >>>>>> >>>>>> i.e. without that being inside curve produces a vector of length >>>> 375. >>>>>> >>>>>> So now it seems that curve() is really skipping some >> lka-/x-values. >>>>> >>>>> How could curve() know what the length of lka is? You're telling >> it >>>>> to set x to a sequence of values of length 101 (the default) from >>>>> min(lka) to max(lka). You never tell it to set x to lka. >>>>> >>>>> curve() is designed to plot expressions or functions, not vectors. >>>> If >>>>> you actually want to plot line segments using your original data, >> use >>>>> lines(). (You'll likely need to sort your x values into increasing >>>>> order if you do that, or you'll get a pretty ugly plot.) >>>>> >>>>> Duncan Murdoch >>>> >>>> I know that about curve(), but since this function uses lka as a >>>> parameter, then how should I formulate it for curve so that I don't >>>> get >>>> >>>> the error about wrong lengths? >>>> >>>>>> >>>>>>> On 25 Sep 2016, at 16:01, Matti Viljamaa <mvilja...@kapsi.fi> >>>> wrote: >>>>>>> >>>>>>> I’m trying to plot regression lines using curve() >>>>>>> >>>>>>> The way I do it is: >>>>>>> >>>>>>> bs <- coef(fit2) >>>>>>> >>>>>>> and then for example: >>>>>>> >>>>>>> >>>> >> curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x+bs["kouluB:clka"]*clka, >>>> >>>>>>> from=min(lka), to=max(lka), add=TRUE, col='red') >>>>>>> >>>>>>> This above code runs into error: >>>>>>> >>>>>>> Error in curve(bs["(Intercept)"] + bs["mies"] * 0 + bs["kouluB"] >> + >>>>>>> bs["lka"] * : >>>>>>> 'expr' did not evaluate to an object of length 'n' >>>>>>> In addition: Warning message: >>>>>>> In bs["(Intercept)"] + bs["mies"] * 0 + bs["kouluB"] + bs["lka"] >> * >>>> : >>>>>>> longer object length is not a multiple of shorter object length >>>>>>> >>>>>>> Which I’ve investigated might be related to the lengths of the >>>>>>> different objects being multiplied or summed. >>>>>>> Taking length(g$x) or length(g$y) of >>>>>>> >>>>>>> g <- >> curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x, >>>> >>>>>>> from=min(lka), to=max(lka), add=TRUE, col='red') >>>>>>> >>>>>>> returns 101. >>>>>>> >>>>>>> However length(lka) is 375. But perhaps these being different is >>>> not >>>>>>> the problem? >>>>>>> >>>>>>> I however do see that the whole range of lka is not plotted, for >>>> some >>>>>>> reason. So how can I be sure >>>>>>> that it passes through all x-values in lka? And i.e. that the >>>> lengths >>>>>>> of objects inside curve() are correct? >>>>>>> >>>>>>> What can I do? >>>>>> >>>>>> ______________________________________________ >>>>>> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >>>>>> https://stat.ethz.ch/mailman/listinfo/r-help >>>>>> PLEASE do read the posting guide >>>>>> http://www.R-project.org/posting-guide.html >>>>>> and provide commented, minimal, self-contained, reproducible code. >>>>>> >>>> >>>> ______________________________________________ >>>> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >>>> https://stat.ethz.ch/mailman/listinfo/r-help >>>> PLEASE do read the posting guide >>>> http://www.R-project.org/posting-guide.html >>>> and provide commented, minimal, self-contained, reproducible code. > ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.