以下代码在 R 中生成二次回归。
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 建议的那样,虽然它有效。
最佳答案
这应该有效。
# 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
给出.
关于r - 如何在R中绘制二次回归?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26959527/