之前一直不知道怎么在R语言中实现线性回归的公式的简便计算。今天,偶然发现了这个问题的解决办法。真的是悠然见南山啊!!!!!!!!!!!!!!!!!!!
假设有如下的数据:
> x <- c(1,2,3,4,5,6,7,8,9,11)
> y <- c(12,11,10,9,8,7,6,5,4,3)
然后对其进行线性拟合:
> fit <- lm(y ~ x)
直接运行fit,得到如下的结果:
> fitCall:
lm(formula = y ~ x)
Coefficients:
(Intercept) x
12.7727 -0.9416
此时我们就能得到这个线性拟合的方程了:
y = -0.9416x + 12.7727
但是还没有常见的R2啊!
这个东西到底隐藏在哪里了呢?R语言作为数据处理的神器,不可能还要User再去计算一遍啊!
找啊找,找啊找,呵,找到了.........
> summary(fit)
运行这段代码,就能找到我们要的R2了。
> summary(fit)
Call:
lm(formula = y ~ x)
Residuals:
Min 1Q Median 3Q Max
-0.29870 -0.16721 -0.03571 0.09578 0.58442
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 12.77273 0.17916 71.29 1.67e-12 ***
x -0.94156 0.02812 -33.49 6.91e-10 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.2703 on 8 degrees of freedom
Multiple R-squared: 0.9929, Adjusted R-squared: 0.992
F-statistic: 1121 on 1 and 8 DF, p-value: 6.905e-10
斜体的这个就是我们要的R2了。
你以为这就完了?
包括那些显著性检验结果都有了啊喂。
那我们再画个图看看呗:
> plot(x,y)
> abline(fit)

So,y = -0.9416x + 12.7727, R2= 0.992.
还是得多读书啊!
(简书排版代码真的是很感人了,还是某笔记好!)
网友评论