是否有一种简单的方法可以拟合R中的多元回归,其中因变量根据Skellam distribution进行分布(两个泊松分布计数之间的差)?
就像是:
myskellam <- glm(A ~ B + C + D, data = mydata, family = "skellam")
这应该适应固定效果。但理想情况下,我更喜欢随机效应,因为我知道固定效应可能会引入测量偏差。因此,我想理想的解决方案应该是使用
lme4
或glmmADMB
包。或者,是否有一种方法可以转换数据以应用更常用的回归工具?
最佳答案
答案不完整,但似乎不仅仅是评论。
混合效果似乎很难。您可以使用AD Model Builder或Template Model Builder来实现,它们都具有用于Laplace逼近的内置功能。对于固定效果,您可以使用类似
library("skellam")
library("bbmle")
将
dskellam(x, lambda1, lambda2)
重新参数化为本质上是位置(几何平均lambda = gmlambda
= sqrt(lambda1*lambda2)
)和形状(lambda的差异:ldiff=sqrt(lambda1/lambda2)
(因此lambda1=gmlambda*ldiff
,lambda2=gmlambda/ldiff
)的形式。 dskellam2 <- function(x, gmlambda, ldiff, log=FALSE) {
dskellam(x,gmlambda*ldiff,gmlambda/ldiff,log=log)
}
然后这样的事情应该工作:
mle2(A~dskellam2(gmlambda=exp(logmu),ldiff=exp(logs), data=mydata,
parameters=list(logmu~B+C+D),
start=list(logmu=0,logs=0)))
...但是要使其正常工作可能需要花些时间。