这是可破解的。您需要添加一个观察级随机效应,该效应仅应用于具有larger残差方差(您需要提前知道这一点!),通过(0+dummy(Var7,"1")|obs)
;如果观察值位于组“1”中,则这具有将每个观察值水平随机效应值乘以 1 的效果Var7
, 否则为 0。您还需要使用lmerControl()
覆盖一些检查lmer
确实要尝试确保您没有添加多余的随机效应。
Data1$obs <- factor(seq(nrow(Data1)))
Model2 <- lmer(log(Var1)~log(Var2)+log(Var3)+
(Var4)+(Var5) + (1|Var6) +
(0+dummy(Var7,"1")|obs),
Data1, REML=TRUE,
control=lmerControl(check.nobs.vs.nlev="ignore",
check.nobs.vs.nRE="ignore"))
all.equal(REMLcrit(Model2), c(-2*logLik(Model1))) ## TRUE
all.equal(fixef(Model1), fixef(Model2), tolerance=1e-7)
如果你想使用这个模型hnp
你需要解决这样一个事实hnp
没有通过lmerControl
正确选择。
library(hnp)
d <- function(obj) resid(obj, type="pearson")
s <- function(n, obj) simulate(obj)[[1]]
f <- function(y.) refit(Model2, y.)
hnp(Model2, newclass=TRUE, diagfun=d, simfun=s, fitfun=f)
您可能还对达玛套餐,它执行类似的基于模拟的诊断。