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」协议转载学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请联系「我们」处理。

发表评论

登录后才能评论

联系我们

如有建议:>>给我留言 大数据交流群: 统  计  学 数据分析网-统计学 商业智能 数据分析网-商业智能 数据挖掘 数据分析-数据挖掘 数据产品 数据分析网-数据产品

QR code