我将解决这个问题的所有三个部分。
有两个混合的问题,首先是在这种情况下您用来拟合回归模型的方法。第二个是如何对您的估计进行区间估计以预测新的估计。
如果您的响应变量是二项式分布的,您通常会使用逻辑回归或概率回归(glm 与正常 cdf 作为链接函数)。
如果您进行逻辑回归,则将响应设为观察计数除以已知上限的比率,即。然后将您的预测变量/协变量放入您对 glm 函数的 R 调用中。返回的对象包含您进行其余计算所需的一切。 yi/ni
x<- rnorm(100, sd=2)
prob_true <- 1/(1+exp(-(1+5*x)))
counts <- rbinom(100, 50,prob_true)
print(d.AD <- data.frame(counts,x))
glm.D93 <- glm(counts/50 ~ x, family = binomial() )
对于线性回归模型,预测区间的公式为:
y^i±tn−psy1+1n+(xi−x¯)2(n−1)s2x−−−−−−−−−−−−√
您可以使用线性回归模型作为 glm 的近似值。为此,在进行反向链接变换之前,您需要对预测变量的线性组合进行线性回归公式,以使概率回到 0-1 范围内。执行此操作的代码包含在 predict.glm() R 函数中。这是一些示例代码,它们也将制作一个漂亮的图。(编辑:此代码是置信区间,而不是预测区间)
y_hat <- predict(glm.D93, type="link", se.fit=TRUE)
t_np<- qt(.975, 100-2, ncp=0)
ub <- y_hat$fit + t_np * y_hat$se.fit
lb <- y_hat$fit - t_np * y_hat$se.fit
point <- y_hat$fit
p_hat <- glm.D93$family$linkinv(point)
p_hat_lb <- glm.D93$family$linkinv(lb)
p_hat_ub <- glm.D93$family$linkinv(ub)
plot(x,p_hat)
points(x, p_hat_ub, col='red')
points(x, p_hat_lb, col='blue')
您可以对任何 glm 执行相同的操作,例如泊松、逆高斯、伽马等。在每种情况下,都在预测变量的线性组合的范围内进行预测区间。在获得预测区间的两个端点后,您可以通过反向链接转换这些端点。对于我提到的每个 glms,反向链接可能与我在这里写的 logit 案例不同。希望这可以帮助。