[英]How to normalize a Lmer model?
lmer:默:
mixed.lmer6 <- lmer(Size ~ (Time+I(Time^2))*Country*STemperature +
(1|Country:Locality)+ (1|Locality:Individual)+(1|Batch)+
(1|Egg_masses), REML = FALSE, data = data_NoNA)
residuals:残差:
plot_model(mixed.lmer6, type = "diag")
Tried manual log,power, sqrt transformations in my formula but no improvement and I also can not find a suitable automatic transformation R function such as BoxCox (which does not work for LMER's)在我的公式中尝试了手动 log、power、sqrt 转换,但没有任何改进,我也找不到合适的自动转换 R 函数,例如 BoxCox(不适用于 LMER)
Any help or tips would be appreciated任何帮助或提示将不胜感激
This might be better suited for CrossValidated ("what should I do?" is appropriate for CV; "how should I do it?" is best for Stack Overflow), but I'll take a crack.这可能更适合CrossValidated (“我应该做什么?”适合 CV;“我应该怎么做?”最适合 Stack Overflow),但我会尝试一下。
fitted_model <- lmer(..., data = mydata)
bcfun <- function(lambda, resp = "y") {
y <- mydata[[resp]]
mydata$newy <- if (lambda==0) log(y) else (y^lambda -1)/lambda
## https://stats.stackexchange.com/questions/261380/how-do-i-get-the-box-cox-log-likelihood-using-the-jacobian
log_jac <- sum((lambda-1)*log(y))
newfit <- update(fitted_model, newy ~ ., data = mydata)
return(-2*(c(logLik(newfit))+ log_jac))
}
lambdavec <- seq(-2, 2, by = 0.2)
boxcox <- vapply(lambdavec, bcfun, FUN.VALUE = numeric(1))
plot(lambdavec, boxcox - min(boxcox))
(lightly tested! but feel free to let me know if it doesn't work) (经过轻微测试!但如果它不起作用,请随时告诉我)
brms
package can fit such models (but takes you down the Bayesian/MCMC rabbit hole), and the heavy
package (currently archived on CRAN) will work, but doesn't appear to handle crossed random effects. brms
包可以适合这样的模型(但会让你陷入贝叶斯/MCMC 兔子洞),而heavy
包(目前在 CRAN 上存档)可以工作,但似乎不能处理交叉随机效应。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.