如何计算负二项回归模型的预测概率?

时间:2014-03-06 01:56:05

标签: r glm

我在R glm.nb()包中使用MASS函数来估计负二项回归模型的参数。如何在给定新数据的情况下计算预测概率(概率质量函数),我可以使用哪个R函数?

我的数据集如下。 y遵循负二项分布,x是协变量。我使用glm.nb(y ~ x, data=data)来估计模型参数。给定新xy,我如何计算预测概率。

有没有办法用Java计算它?

y     x

91    1.000000                                                                                       
79    1.000000

86    1.000000

32    1.000000

41    1.000000

29    0.890609

44    1.000000

42    1.000000

31    0.734058

35    1.000000

1 个答案:

答案 0 :(得分:10)

假设你设置了这样的数据:

set.seed(1)
x = seq(-2, 8, .01)
y = rnbinom(length(x), mu=exp(x), size=10)
fit = glm.nb(y ~ x)

并且您有一个新观点:您希望找到y=100给出x=5的概率。

您可以使用y(使用xpredict获取type="response"的预测值,并在应用链接功能的反转后告诉您需要它):

predicted.y = predict(fit, newdata=data.frame(x=5), type="response")

然后你可以找出概率:

dnbinom(100, mu=predicted.y, size=fit$theta)

(这是使用fit$theta,负二项式的“size”参数的最大似然估计值。

所以在一个函数中:

prob = function(newx, newy, fit) {
    dnbinom(newy, mu=predict(fit, newdata=data.frame(x=newx), type="response"), size=fit$theta)
}