如何在R中计算线性回归模型中斜率的95%置信区间

60

这是Introductory Statistics with R中的一道练习:

使用rmr数据集,绘制代谢率与体重之间的关系图。拟合一个线性回归模型来描述它们之间的关系。根据拟合的模型,当体重为70公斤时,预测的代谢率是多少?给出直线斜率的95%置信区间。

rmr数据集在'ISwR'包中。它看起来像这样:

> rmr
   body.weight metabolic.rate
1         49.9           1079
2         50.8           1146
3         51.8           1115
4         52.6           1161
5         57.6           1325
6         61.4           1351
7         62.3           1402
8         64.9           1365
9         43.1            870
10        48.1           1372
11        52.2           1132
12        53.5           1172
13        55.0           1034
14        55.0           1155
15        56.0           1392
16        57.8           1090
17        59.0            982
18        59.0           1178
19        59.2           1342
20        59.5           1027
21        60.0           1316
22        62.1           1574
23        64.9           1526
24        66.0           1268
25        66.4           1205
26        72.8           1382
27        74.8           1273
28        77.1           1439
29        82.0           1536
30        82.0           1151
31        83.4           1248
32        86.2           1466
33        88.6           1323
34        89.3           1300
35        91.6           1519
36        99.8           1639
37       103.0           1382
38       104.5           1414
39       107.7           1473
40       110.2           2074
41       122.0           1777
42       123.1           1640
43       125.2           1630
44       143.3           1708

我知道如何在给定x的情况下计算预测的y值,但是如何计算斜率的置信区间?

6
你尝试过使用?confint吗? - Arun
1个回答

99

让我们拟合模型:

> library(ISwR)
> fit <- lm(metabolic.rate ~ body.weight, rmr)
> summary(fit)

Call:
lm(formula = metabolic.rate ~ body.weight, data = rmr)

Residuals:
    Min      1Q  Median      3Q     Max 
-245.74 -113.99  -32.05  104.96  484.81 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 811.2267    76.9755  10.539 2.29e-13 ***
body.weight   7.0595     0.9776   7.221 7.03e-09 ***
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 157.9 on 42 degrees of freedom
Multiple R-squared: 0.5539, Adjusted R-squared: 0.5433 
F-statistic: 52.15 on 1 and 42 DF,  p-value: 7.025e-09 

斜率的95%置信区间是估计系数(7.0595)±两个标准误差(0.9776)。

可以使用confint函数进行计算:

> confint(fit, 'body.weight', level=0.95)
               2.5 % 97.5 %
body.weight 5.086656 9.0324

16
这相当于以下内容: coef=summary(fit)$coefficients[2,1] err=summary(fit)$coefficients[2,2] coef + c(-1,1)*err*qt(0.975, 42) [1] 5.086656 9.032400 它是估计系数加减 qt(1-alpha/2, df) 标准误差。 - ds440
1
谢谢,NPE!因此,估计系数+/-两个标准误差是一种近似方法,而后一种方法提供了一种准确计算置信区间的方式,对吗? - Yu Fu
5
是的,这两个标准误差是一个很好的估算值:如果线性模型的假设成立,那么它将遵循T分布,因此随着样本量的增加,它会趋近于约1.96,而对于较小的样本,它会更高。 - ds440
1
@NPE:你是否假定斜率值的概率密度函数为高斯分布?如果这个假设不成立,你可以使用自助法。 - jpcgandre

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接