如何在R中使用回归模型找到预测值的置信区间?

使用回归模型可以找到使用回归模型的预测值的置信区间,我们只需要使用区间参数作为置信度,并为此使用适当的水平即可。例如,如果我们有一个模型M,并且自变量值的数据帧被命名为newdata,那么我们可以对置信区间使用以下语法-

predict(M,newdata,se.fit=TRUE,interval="confidence",level=0.95)

示例

请看以下数据帧-

set.seed(1234)
x1<-sample(0:10,20,replace=TRUE)
y1<-sample(6:10,20,replace=TRUE)
df1<-data.frame(x1,y1)
df1

输出结果

 x1 y1
1  9 8
2  5 9
3  4 10
4  8 7
5  4 10
6  5 7
7  3 8
8  1 9
9  6 9
10 5 8
11 9 6
12 5 8
13 3 9
14 7 7
15 3 8
16 3 7
17 4 10
18 7 6
19 3 8
20 7 6

示例

M1<-lm(y1~x1,data=df1)
summary(M1)

输出结果

Call:
lm(formula = y1 ~ x1, data = df1)
Residuals:
   Min      1Q   Median   3Q    Max
-1.6617 -0.6775 -0.1775 1.0566 1.6611
Coefficients:
           Estimate Std.   Error t value Pr(>|t|)
(Intercept) 9.6299 0.6342 15.185 1.05e-11 ***
      x1   -0.3228 0.1155 -2.795 0.012 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.113 on 18 degrees of freedom
Multiple R-squared: 0.3026, Adjusted R-squared: 0.2638
F-statistic: 7.809 on 1 and 18 DF, p-value: 0.01198

创建新数据并找到该数据的拟合值的95%置信区间-

示例

newdata_x1<-data.frame(x1=c(5,2,3))
predict(M1,newdata_x1,se.fit=TRUE,interval="confidence",level=0.95)
$fit

输出结果

      fit      lwr    upr
1 8.016138 7.492902 8.539373
2 8.984400 8.078130 9.890670
3 8.661646 7.939804 9.383488

示例

$se.fit

输出结果

     1          2       3
0.2490503 0.4313678 0.3435835

示例

$df

输出结果

[1] 18

示例

$residual.scale

输出结果

[1] 1.113487

找到该数据的拟合值的90%置信区间-

示例

predict(M1,newdata_x1,se.fit=TRUE,interval="confidence",level=0.90)
$fit

输出结果

      fit      lwr    upr
1 8.016138 7.584269 8.448007
2 8.984400 8.236381 9.732419
3 8.661646 8.065850 9.257442

示例

$se.fit

输出结果

     1          2       3
0.2490503 0.4313678 0.3435835

示例

$df

输出结果

[1] 18

示例

$residual.scale

输出结果

[1] 1.113487

找到该数据的拟合值的80%置信区间-

示例

predict(M1,newdata_x1,se.fit=TRUE,interval="confidence",level=0.80)
$fit

输出结果

      fit      lwr     upr
1 8.016138 7.684803 8.347472
2 8.984400 8.410512 9.558288
3 8.661646 8.204546 9.118746

示例

$se.fit

输出结果

      1       2          3
0.2490503 0.4313678 0.3435835

示例

$df

输出结果

[1] 18

示例

$residual.scale

输出结果

[1] 1.113487

找到该数据的拟合值的75%置信区间-

示例

predict(M1,newdata_x1,se.fit=TRUE,interval="confidence",level=0.75)
$fit

输出结果

      fit       lwr    upr
1 8.016138 7.720089 8.312187
2 8.984400 8.471628 9.497172
3 8.661646 8.253224 9.070068

示例

$se.fit

输出结果

      1       2       3
0.2490503 0.4313678 0.3435835

示例

$df

输出结果

[1] 18

示例

$residual.scale

输出结果

[1] 1.113487

找到该数据的拟合值的99%置信区间-

示例

predict(M1,newdata_x1,se.fit=TRUE,interval="confidence",level=0.99)
$fit

输出结果

      fit       lwr    upr
1 8.016138 7.299261 8.733014
2 8.984400 7.742734 10.226067
3 8.661646 7.672662 9.650631

示例

$se.fit

输出结果

      1       2          3
0.2490503 0.4313678 0.3435835

示例

$df

输出结果

[1] 18

示例

$residual.scale

输出结果

[1] 1.113487