如何计算predict()R函数预测差异的置信区间

  • 本文关键字:区间 函数 何计算 计算 predict r
  • 更新时间 :
  • 英文 :


我是R的新手,我想问一下如何获得使用predict((函数估计的两个预测值之间的差的置信区间。例如,

data("cars", package = "datasets")
model <- lm(dist ~ speed, data = cars)
summary(model)
prediction1 = predict(model, newdata = list(speed = 12), interval = "confidence")
prediction1
prediction2 = predict(model, newdata = list(speed = 20), interval = "confidence")
prediction2
predict.dif = prediction2 - prediction1
predict.dif

我得到的是
prediction1=29.60981(lwr(24.39514(upr(34.82448
prediction2=61.06908(lwr,55.24729(upr,66.89088

对于预测的差异,我得到
predict.diff=31.455927(lwr(30.85215(upr(32.06639

我的问题是,在前面的例子中,我得到了预测的差异,R也减去了置信区间。以这种方式减去CI是否正确?为什么?如果没有,我想知道是否有一种方法可以计算预测差异的CI

非常感谢

你提出了一个很好的问题。总之,我们不应该单独计算置信区间,然后取其各自的下界和上界之间的差。

为什么

为了解释原因,我将通过一个例子来说明,而不是过多地研究数学:

  1. 让我们拿你的代码片段,当速度等于13:时,只需将prediction2更改为预测

    data("cars", package = "datasets")
    model <- lm(dist ~ speed, data = cars)
    summary(model)
    prediction1 = predict(model, newdata = list(speed = 12), interval = "confidence")
    prediction1
    prediction2 = predict(model, newdata = list(speed = 13), interval = "confidence")
    prediction2
    predict.dif = prediction2 - prediction1
    predict.dif
    

    在这种情况下,您的输出将是:

    fit      lwr     upr
    1 3.932409 4.336198 3.52862
    

    但问问自己,我们在这里做什么。您有一个形式为dist = a + b*speed的模型。然后计算speed = 12speed = 13的模型预测,并取差。从而得到CCD_ 5。因此,差值的置信区间应该等于我的参数b的置信区间。让我们检查一下情况是否如此:

    confint(model)
    2.5 %    97.5 %
    (Intercept) -31.167850 -3.990340
    speed         3.096964  4.767853
    
  2. 你可以看到他们并不平等。在您的方法中,间隔为(4.336198, 3.52862),而第二种方法的间隔为(3.096964, 4.767853)

如果我在这背后的数学方面找到了一个好的/容易理解的参考,我会在评论中链接。

解决方案

为此,您可以利用contrast软件包。使用此软件包,我们可以调用:

contrast(model, a = list(speed = 13), b = list(speed = 12))

这将输出差值所需的置信区间:

lm model parameter contrast
Contrast      S.E.    Lower    Upper    t df Pr(>|t|)
1 3.932409 0.4155128 3.096964 4.767853 9.46 48        0

回到你的例子,我们可以做

contrast(model, a = list(speed = 20), b = list(speed = 12))

获取

lm model parameter contrast
Contrast     S.E.    Lower    Upper    t df Pr(>|t|)
1 31.45927 3.324102 24.77571 38.14283 9.46 48        0

最新更新