以下代码在R中生成一个qudaratic回归。
lm.out3 = lm(listOfDataFrames1$avgTime ~ listOfDataFrames1$betaexit + I(listOfDataFrames1$betaexit^2) + I(listOfDataFrames1$betaexit^3))
summary(lm.out3)
Call:
lm(formula = listOfDataFrames1$avgTime ~ listOfDataFrames1$betaexit +
I(listOfDataFrames1$betaexit^2) + I(listOfDataFrames1$betaexit^3))
Residuals:
Min 1Q Median 3Q Max
-14.168 -2.923 -1.435 2.459 28.429
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 199.41 11.13 17.913 < 2e-16 ***
listOfDataFrames1$betaexit -3982.03 449.49 -8.859 1.14e-12 ***
I(listOfDataFrames1$betaexit^2) 32630.86 5370.27 6.076 7.87e-08 ***
I(listOfDataFrames1$betaexit^3) -93042.90 19521.05 -4.766 1.15e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 7.254 on 63 degrees of freedom
Multiple R-squared: 0.9302, Adjusted R-squared: 0.9269
F-statistic: 279.8 on 3 and 63 DF, p-value: < 2.2e-16
但是怎么办我在曲线图上绘制的曲线很困惑。
获取图表:
plot(listOfDataFrames1$avgTime~listOfDataFrames1$betaexit)
但曲线?
如果不手动复制值,是否有任何操作? 就像mso建议的那样虽然有效。
答案 0 :(得分:5)
这应该有用。
# not tested
lm.out3 = lm(avgTime ~ poly(betaexit,3,raw=TRUE),listofDataFrames3)
plot(avgTime~betaexit,listofDataDFrames3)
curve(predict(lm.out3,newdata=data.frame(betaexit=x)),add=T)
由于您未提供任何数据,因此以下是使用内置mtcars数据集的工作示例。
fit <- lm(mpg~poly(wt,3,raw=TRUE),mtcars)
plot(mpg~wt,mtcars)
curve(predict(fit,newdata=data.frame(wt=x)),add=T)
一些注意事项:
(1)将formula=...
参数中的外部数据结构引用到lm(...)
是一个非常糟糕的主意。相反,引用data=...
论证中引用的数据框的列,如上所述和@mso指出。
(2)您可以将公式指定为@mso建议,或者您可以将poly(...)
函数与raw=TRUE
一起使用。
(3)curve(...)
函数将表达式作为其第一个参数。此表达式必须具有变量x
,该变量将由图形的x轴中的值自动填充。所以在这个例子中,表达式是:
predict(fit,newdata=data.frame(wt=x))
在模型上使用predict(...)
,数据框由wt
给出x
(预测变量)。
答案 1 :(得分:3)
尝试使用ggplot:
library(ggplot)
ggplot(listOfDataFrames1, aes(x=betaexit, y=avgTime)) + geom_point()+stat_smooth(se=F)
使用mtcars数据:
ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point()+stat_smooth(se=F, method='lm', formula=y~poly(x,3))
答案 2 :(得分:1)
尝试:
with(listOfDataFrames1, plot(betaexit, avgTime))
with(listOfDataFrames1, lines(betaexit, 199-3982*betaexit+32630*betaexit^2-93042*betaexit^3))