[R] curve() doesn't seem to use the whole range of x? And Error: longer object length is not a multiple of shorter object length
538280 at gmail.com
Mon Sep 26 20:52:19 CEST 2016
If your goal is to visualize the predicted curve from an lm fit (or
other model fit) then you may want to look at the Predict.Plot and
TkPredict functions from the TeachingDemos package.
On Sun, Sep 25, 2016 at 7:01 AM, Matti Viljamaa <mviljamaa at 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 at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
Gregory (Greg) L. Snow Ph.D.
538280 at gmail.com
More information about the R-help