大家好,我想请教一个问题,是关于用R做poisson分布 canonical link的GLM。模型建好了之后我想做一下预测并且计算预测值95%的置信区间,因为R里predict并没有能直接对poisson GLM计算置信区间的选项,就打算输出预测值的标准差后手动计算。记得比较普遍的方法是先算出linear predictor scale的置信区间,然后再inverse转换回original scale
temp <- predict(model.glm, newdata=predict.data, type="link", se.fit=T)
predict1 <- temp$fit + c(-1, 0, 1)*qt(0.975, 95) * temp$se.fit
exp(predict1)
[1] 3.881081 4.437126 5.072836
后来想起predict函数里可以直接输出response的标准差,那就不用再inverse了,于是试了一下:
temp <- predict(model.glm, newdata=predict.data, type="response", se.fit=T)
predict2 <- temp$fit + c(-1, 0, 1)*qt(0.975, 95) * temp$se.fit
predict2
[1] 3.843025 4.437126 5.031227
发现两种方法的结果是有差别的。网上搜了一下好像普遍都是用第一种,先算scale of linear predictor的CI然后再inverse整个CI,但是感觉这样不太对劲啊,exp(SE(log(y)))和SE(y)显然不等价啊,求能否帮忙解释一下啊。