我正在尝试解释以下类型的逻辑模型:
mdl <- glm(c(suc,fail) ~ fac1 + fac2, data=df, family=binomial)
predict(mdl)
是每个数据点的预期成功几率的输出吗?是否有一种简单的方法可以将模型的每个因子水平的几率制表,而不是所有数据点?
我正在尝试解释以下类型的逻辑模型:
mdl <- glm(c(suc,fail) ~ fac1 + fac2, data=df, family=binomial)
predict(mdl)
是每个数据点的预期成功几率的输出吗?是否有一种简单的方法可以将模型的每个因子水平的几率制表,而不是所有数据点?
帮助页面
predict.glm
状态:“因此,对于默认二项式模型,默认预测是对数赔率(logit 标度上的概率),'type = "response"' 给出了预测概率”。因此,predict(mdl)
返回 log(odds),并使用 "type = "response" 返回预测的概率。您可能会发现这个玩具示例很有启发性:
> y <- c(0,0,0,1,1,1,1,1,1,1)
> prop.table(table(y))
y
0 1
0.3 0.7
> glm.y <- glm(y~1, family = "binomial")
> ## predicted log(odds)
> predict(glm.y)
1 2 3 4 5 6 7 8
0.8472979 0.8472979 0.8472979 0.8472979 0.8472979 0.8472979 0.8472979 0.8472979
9 10
0.8472979 0.8472979
> ## predicted probabilities (p = odds/(1+odds))
> exp(predict(glm.y))/(1+exp(predict(glm.y)))
1 2 3 4 5 6 7 8 9 10
0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7
> predict(glm.y, type = "response")
1 2 3 4 5 6 7 8 9 10
0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7
关于第二个问题,您可能想查看 John Fox 的效果包http://socserv.socsci.mcmaster.ca/jfox/Misc/effects/index.html;另请参阅他的 JSS 文章“R 中用于广义线性模型的效果显示”(第 8-10 页)。