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

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

问题

需要计算回归分析中的一些关键统计量,例如R2F值、系数的置信区间、残差、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):关键统计量,例如R2F统计量和残差标准差(σ)

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

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

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

模型系数(点估计)

代码
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))

本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「我们」留言处理。

(0)
小胖的头像小胖编辑
上一篇 2016-01-15 14:45
下一篇 2016-01-18 14:55

相关文章

关注我们
关注我们
分享本页
返回顶部