使用配有Gamma dist的GLMM调用模拟时产生的NA。和日志链接

时间:2016-02-23 01:27:34

标签: r statistics lme4 mixed-models

我尝试为GLLM进行基于模拟的功效分析,如here所述。

我的模型对象使用带有日志链接的Gamma分布来配置glmer:

fit.gamma = glmer(time ~ display + root + technique + order + (1|user), data=Static, family = Gamma(link="log"))

当我提供拟合的模型对象时,响应的模拟效果很好:

simulate(fit.gamma, nsim=1, newdata=expdat)

结果看起来不错:

    sim_1
1     1.8300779
2    12.8543403
3    30.7541107
4     8.2714460
5   162.2040545

但是,当我通知模型公式和模型的参数时,我得到警告和输出错误:

newparams <- list(beta = fixef(fit.gamma), theta = getME(fit.gamma, "theta"),
    sigma = getME(fit.gamma, "sigma"))
simulate(~ display + root + technique + order + (1|user), 
      nsim=1, 
      family=Gamma(link="log"), 
      newdata=expdat, 
      newparams=newparams, 
      allow.new.levels=T)

我收到以下警告:

Warning message:
In rgamma(nsim * length(ftd), shape = shape, rate = shape/ftd) :
NAs produced

响应向量看起来像这样:

    sim_1
1     NaN
2     NaN
3     NaN
4     NaN
5     NaN

可以使用以下代码重现该问题:

dd   <- data.frame(x=rep(seq(-2,2,length=15),10),  f=factor(rep(1:10,each=15))); 
dd$y <- simulate(~x+(1|f), family=Gamma(link="log"), seed=101, newdata=dd, newparams=list(beta = c(0,2), theta = 1, sigma = 1))[[1]]

使用公式会更好,因为我可以操作参数来模拟各种效果大小。

函数模拟应该适用于模型对象或公式。我错过了什么吗?有没有一个论据我没有传递给函数?

0 个答案:

没有答案