我使用Excel计算预测值的置信区间,置信区间为95%,因此计算t-value
我使用函数TINV(5%,6)
,每侧分别为2.5%和2.5%,其中6是自由度。
但在R中,预测函数,当我给level= 0.95
时,我得到一个不同的区间范围,但是给level=0.975
给出了与excel相同的答案。
所以,似乎在预测何时给出level=0.975
,那么每边需要分别为2.5%和2.5%
但是所有这些网站,对于example,另一个example,我们说我们正在寻找95%置信区间,给出公式级别= 0.95(这意味着每边有5%的分割),但那是90%,95%的间隔应该是0.975。
怎么回事?我可能会感到困惑。
编辑:
predict(model, data.frame(c= 12.75, p= 6, f=8), level = 0.975, interval = "confidence")
此处的模型为multiple linear regression
数据:
y <- c(85.10,106.30,50.20,130.60,54.80,30.30,79.40,91.00,135.40,89.30) # Total Sales
c <- c(8.50,12.90,5.20,10.70,3.10,3.50,9.20,9.00,15.10,10.20) # production cost
p <- c(5.10,5.80,2.10,8.40,2.90,1.20,3.70,7.60,7.70,4.50) # Promotion cost
f <- c(4.70,8.80,15.10,12.20,10.60,3.50,9.70,5.90,20.80,7.90) #First year box office
model <- lm(y ~ c + p + f)
Excel:
我用黄色标记了预测 Excel
问题是,使用Excel我的预测值为106.72,上限为119.35,下限为93.36,=tinv(5%,6)
使用R我的预测值为106.72,上限为117.7,低于95.65,level=0.95
使用level=0.975
我得到的确切值为Excel。
在Excel中:
=tinv(5%,6) = 2.45``Variance = 5.46
106.72 +/- tvalue*variance
:119.35
93.36
在R:
se.ci <- predi$se.fit # Variance: 4.518
alpha <- qt((1-0.95)/2,6) # Value: -2.45
predi$fit[1] + c(alpha, -alpha) * se.ci # gives me 117.77165 95.65941
正如您所看到的,tstat值相同但预测不同。
但是当我这样做时:
alpha <- qt((1-0.975)/2,6) # Value: -2.968
我得到93.30182 120.12924
与excel相同! (在level=0.975
中使用predict
可以得到答案,因此会产生混淆)
答案 0 :(得分:1)
在简单线性回归中,给定x *的y的预测区间为:
其中sy由下式给出:
让我们考虑以下例子:
df <- faithful
n <- nrow(df)
names(df) <- c("y","x")
mx <- mean(df$x)
sx <- sd(df$x)
mod = lm(y ~ x, data=df)
yhat <- predict(mod)
xnew <- 80
newdata = data.frame(x=xnew)
alpha <- 0.05
(ypred <- predict(mod, newdata, interval="predict", level = 1-alpha))
#### 95% Prediction interval #####
fit lwr upr
1 4.17622 3.196089 5.156351
我们可以使用上面给出的公式“手动”计算这个间隔:
SE <- sqrt(sum((df$y-yhat)^2)/(n-2))*sqrt(1+1/n+(xnew-mx)^2/((n-1)*sx^2))
tval <- qt(1-alpha/2,n-2)
c(ypred[1]-tval*SE, ypred[1]+tval*SE)
#### 95% Prediction interval #####
[1] 3.196089 5.156351