我在R glm.nb()
包中使用MASS
函数来估计负二项回归模型的参数。如何在给定新数据的情况下计算预测概率(概率质量函数),我可以使用哪个R函数?
我的数据集如下。 y遵循负二项分布,x是协变量。我使用glm.nb(y ~ x, data=data)
来估计模型参数。给定新x
和y
,我如何计算预测概率。
有没有办法用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
答案 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
(使用x
从predict
获取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)
}