banner

R语言入门秘录22/25:计算回归统计量

作者: afenxi来源: afenxi时间:2016-12-12 13:42:46

摘要:数据分析网整理自tbkken的《R语言入门25招》,一招招技能带你走进R语言。

问题

需要计算回归分析中的一些关键统计量,例如R2、F值、系数的置信区间、残差、ANOVA表等等。

解决方案

首先把回归模型保存到变量中:

代码 1 > m <- lm(y ~ u + v + w)

然后就可以用各种函数从模型中获得所需的统计量或信息:

anova(m): ANOVA表

coefficients(m): 模型的系数

coef(m): 跟coefficients(m)一样

confint(m): 回归系数的置信区间

deviance(m): 残差平方和

effects(m): 正交效应向量(Vector of orthogonal effects )

fitted(m): 拟合的Y值向量Vector of fitted y values

residuals(m): 模型残差Model residuals

resid(m): 跟residuals(m)一样

summary(m):关键统计量,例如R2、F统计量和残差标准差(σ)

vcov(m):主参数的协防差矩阵

讨论

在我最初使用R的时候,在文档中看到说lm函数适用于做线性回归的。所以我使用了这个函数,得到了第21招中的输出:

代码 1

 

2

3

4

5 > lm(y ~ u + v + w)

Call: lm(formula = y ~ u + v + w)

Coefficients:

(Intercept) 1.4222

u 1.0359 v 0.9217 w 0.7261

太坑爹了!这根SAS之类的软件输出的结果相比,简直是一无是处。R2呢?系数的可信区间呢?还有F统计量,它的P值,和ANOVA表呢?其实,这些数据都有,只管向R要就是了。有些统计软件会一股脑儿地输出所有的统计量,而R只会输出最简单的统计量。然后你可以根据具体情况自行查询其他统计量。

lm函数会返回一个模型对象。可以用赋值操作符(<-)将这个模型保存到变量中。这个例子就像模型对象保存到了变量m中:

代码 1 > m <- lm(y ~ u + v + w)

然后可以用各种函数从模型对象中抽取所需的信息。其中最重要的函数是summary:

代码 1

 

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18 > summary(m)

Call:

lm(formula = y ~ u + v + w)

Residuals:

Min     1Q      Median  3Q     Max

-3.3965 -0.9472 -0.4708 1.3730 3.1283

Coefficients:

             Estimate Std. Error t value Pr(>|t|)

(Intercept)  1.4222       1.4036   1.013  0.32029

u            1.0359       0.2811   3.685  0.00106  **

v            0.9217       0.3787   2.434  0.02211  *

w            0.7261       0.3652   1.988  0.05744 .

---

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

 

Residual standard error: 1.625 on 26 degrees of freedom Multiple

R-squared: 0.4981,       Adjusted R-squared: 0.4402

F-statistic: 8.603 on 3 and 26 DF, p-value: 0.0003915

上面的摘要显示了估计的系数。显示了关键的统计量,例如R2、F统计量。还显示了估计的σ,即残差的标准差。

还有一些抽取其他重要的信息的专用函数:

模型系数(点估计)

代码 1

 

2

3 > coef(m)

(Intercept) u  v   w

 1.4222050 1.0358725 0.9217432 0.7260653

模型系数的置信区间

代码 1

 

2

3

4

5

6 > confint(m)

              2.5 % 97.5 %

(Intercept) -1.46302727 4.307437

u           0.45805053 1.613694

v           0.14332834 1.700158

w           -0.02466125 1.476792

模型残差

代码 1

 

2

3

4

5

6

7

8

9

10

11 > resid(m)

1           2          3            4          5           6

-1.41440465 1.55535335 -0.71853222 -2.22308948 -0.60201283 -0.96217874

7           8          9           10          11          12

-1.52877080 0.12587924 -0.03313637 0.34017869 1.28200521 -0.90242817

13          14         15          16          17         18

2.04481731 1.13630451 -1.19766679 -0.60210494 1.79964497 1.25941264

19          20         21          22          23          24

-2.03323530 1.40337142 -1.25605632 -0.84860707 -0.47307439 -0.76335244

25          26         27          28          29          30

2.16275214  1.53483429 1.65085364  -3.39647629 -0.46853750 3.12825629

残差平方和:

代码 1

 

2 > deviance(m)

[1] 68.69616

ANOVA表

代码 1

 

2

3

4

5

6

7

8

9

10 > anova(m)

Analysis of Variance Table

Response: y

         Df Sum Sq Mean Sq F value Pr(>F)

u         1 27.916 27.9165 10.5658 0.003178 **

v         1 29.830 29.8299 11.2900 0.002416 **

w         1 10.442 10.4423 3.9522 0.057436 .

Residuals 26 68.696 2.6422

---

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

如果觉得把模型保存到变量中很麻烦,也可以只用一行代码:

代码 1 > summary(lm(y ~ u + v + w))

banner
看过还想看
可能还想看
最新文章
Yonghong Z-Suite一站式大数据分析平台 —— 以卓越的数据技术为客户创造价值,实现客户成功。