繁体   English   中英

如何在R中绘制二次回归?

[英]How to plot quadratic regression in R?

以下代码在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建议虽然它有效。

这应该工作。

# 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=... argumennt中引用的数据帧的列,如上所述和@mso指出的那样。

(2)您可以将公式指定为@mso建议,或者您可以将raw=TRUE poly(...)函数与raw=TRUE

(3) curve(...)函数将表达式作为其第一个参数。该表达式必须具有变量x ,该变量将由图形的x轴中的值自动填充。 所以在这个例子中,表达式是:

predict(fit,newdata=data.frame(wt=x))

它使用模型上的predict(...) ,其数据框具有由x给出的wt (预测变量)。

尝试使用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))

在此输入图像描述

尝试:

with(listOfDataFrames1, plot(betaexit, avgTime))
with(listOfDataFrames1, lines(betaexit, 199-3982*betaexit+32630*betaexit^2-93042*betaexit^3))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM