如何拟合 Skellam 回归?

bdu*_*bdu 3 statistics r lme4 glm mixed-models

是否有一种简单的方法来拟合 R 中的多元回归,其中因变量根据Skellam 分布(两个泊松分布计数之间的差异)分布?就像是:

myskellam <- glm(A ~ B + C + D, data = mydata, family = "skellam")
Run Code Online (Sandbox Code Playgroud)

这应该适应固定效应。但理想情况下,我更喜欢随机效应,因为我知道固定效应可能会引入测量偏差。因此我想理想的解决方案应该是使用lme4orglmmADMB包。

或者,有没有办法转换数据以应用更常用的回归工具?

Ben*_*ker 5

不完整的答案,但似乎不仅仅是评论。

混合效果似乎很难;您可以使用AD Model BuilderTemplate Model Builder 来完成,它们都具有用于拉普拉斯近似的内置工具。对于固定效果,您可以使用类似

library("skellam")
library("bbmle")
Run Code Online (Sandbox Code Playgroud)

重新参数化为dskellam(x, lambda1, lambda2)本质上是位置(几何平均 lambda gmlambda= sqrt(lambda1*lambda2))和形状(lambdas 中的差异:(ldiff=sqrt(lambda1/lambda2)因此lambda1=gmlambda*ldifflambda2=gmlambda/ldiff)的形式)。

 dskellam2 <- function(x, gmlambda, ldiff, log=FALSE) {
     dskellam(x,gmlambda*ldiff,gmlambda/ldiff,log=log)
 }
Run Code Online (Sandbox Code Playgroud)

然后这样的事情应该工作:

 mle2(A~dskellam2(gmlambda=exp(logmu),ldiff=exp(logs), data=mydata,
      parameters=list(logmu~B+C+D),
      start=list(logmu=0,logs=0)))
Run Code Online (Sandbox Code Playgroud)

......但它可能需要一些大惊小怪才能让它发挥作用。