如何使用predict()函数

4

想要预测一个值,但这显然不是解决方案。我正在进行一项多项选择测试,0.304...不是一个答案。如何正确使用predict()函数?

library(glm2)
data(crabs)
fit= glm(Satellites~Width,data=crabs, family="poisson")
plot(Satellites~Width,data=crabs)
abline(fit)
predict(fit, newdata=data.frame(Width=c(22)))
1 
0.3042347 

1
这个有什么问题吗? - joran
2
我认为这个值不正确,因为我正在进行一项多项选择测试,0.304..不是一个答案。 - Roland Kofler
1
嗯... 22 * fit$coef[2] + fit$coef[1] 给出了你所发布的内容。这是正确的。但显然,这不是你期望的结果! - Simon O'Hanlon
5
predict() 函数返回的值是期望值的对数,因为你进行了泊松回归。只需使用 exp(value) 就可以得到与原始值相同的比例尺。 - Didzis Elferts
2
应该是一个答案!@DidzisElferts - Roland Kofler
显示剩余3条评论
1个回答

12

泊松回归(一般线性模型)中的predict()函数默认会计算以线性预测为刻度的值,即在此情况下是对数刻度(请参阅 predict.glm 的帮助文件)。

predict(fit, newdata=data.frame(Width=c(22)))
        1 
0.3042347 
为了获得与响应变量相同的度量单位的预测值,在函数 predict() 中添加参数 type="response"
predict(fit, newdata=data.frame(Width=c(22)),type="response")
       1 
1.355587 

+1!predict有时看起来使用起来有些笨重,但它真的是一个非常出色的工具! - agstudy
我不确定线性预测器的尺度与log()有什么关系...更加困惑了。 - Roland Kofler
4
您拟合了一个泊松模型。正如 ?poisson 所述,泊松分布的默认链接函数是对数函数(在帮助文档中显示为 poisson(link = "log"))。在这个上下文中,“在线性预测器的比例尺上”意味着在对数比例尺上。如果您对此完全不熟悉,阅读一些关于泊松广义线性模型的资料可能会有所帮助... - Ben Bolker
1
@Roo,Venables和Ripley的MASS图书有一个完整的章节专门解释这个问题:http://www.amazon.com/Modern-Applied-Statistics-W-N-Venables/dp/0387954570 - Ricardo Saporta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接