亲爱的Stack Overflow社区,
目前我正试图在最新版本的R和lme4上重新运行旧数据分析,二项式glmer模型(从2013年初开始),因为我不再使用旧版本的R和lme4了.但是,我通过dmartin和carine(第一个警告消息)以及堆栈溢出之外的其他线程(警告2和3)经历与先前线程类似的警告消息.我使用的早期版本的R和lme4上没有弹出这些警告消息,所以它必须与最新更新有关?
我的数据集的一个子集:
df <- structure(list(SUR.ID = structure(c(1L, 1L, 2L, 2L, 3L, 3L, 1L,
1L, 2L, 2L, 3L, 3L, 1L, 1L, 2L, 2L, 3L, 3L, 1L, 1L, 2L, 2L, 3L,
3L, 1L, 1L, 2L, 2L, 3L, 3L, 1L, 1L, 2L, 2L, 3L, 3L, 1L, 1L, 2L,
2L, 3L, 3L, 1L, 1L, 2L, 2L, 3L, 3L, 1L, 1L, 2L, 2L, 3L, 3L, 1L,
1L, 2L, 2L, 3L, 3L, 1L, 1L, 2L, 2L, 3L, 3L, 1L, 1L, 2L, 2L, 3L,
3L, …Run Code Online (Sandbox Code Playgroud) 我从包中装了一个R带有lmer()-function 的模型lme4.我缩放了因变量:
mod <- lmer(scale(Y)
~ X
+ (X | Z),
data = df,
REML = FALSE)
Run Code Online (Sandbox Code Playgroud)
我看一下固定效应系数fixef(mod):
> fixef(mod)
(Intercept) X1 X2 X3 X4
0.08577525 -0.16450047 -0.15040043 -0.25380073 0.02350007
Run Code Online (Sandbox Code Playgroud)
从固定效应系数手动计算平均值非常容易.但是,我希望它们不被缩放,我不确定如何完全这样做.我知道缩放意味着减去每个平均值Y并且偏离标准偏差.但是,平均值和标准偏差都是从原始数据计算出来的.在lmer()使用原始数据的均值和标准偏差拟合-model 后,我可以简单地反转此过程吗?
谢谢你的帮助!
更新:我提出上述模型的方式似乎意味着通过取所有响应的均值并除以所有响应的标准差来缩放因变量.通常,它的完成方式不同.不是采用总体平均值和标准偏差,而是通过使用该受试者的反应的平均值和标准偏差来对每个受试者标准化响应.(这是奇怪的,lmer()我认为随机拦截应该照顾...更不用说我们正在谈论按顺序计算方法的事实......)然而问题保持不变:一旦我适合这样一个模型,是否有一种干净的方法来重新调整拟合模型的系数?
我已经使用该包安装了混合模型lme4。scale()在拟合模型之前,我用函数转换了自变量。我现在想使用 在图表上显示结果predict(),因此我需要将预测数据恢复到原始比例。我该怎么做呢?
简化示例:
database <- mtcars
# Scale data
database$wt <- scale(mtcars$wt)
database$am <- scale(mtcars$am)
# Make model
model.1 <- glmer(vs ~ scale(wt) + scale(am) + (1|carb), database, family = binomial, na.action = "na.fail")
# make new data frame with all values set to their mean
xweight <- as.data.frame(lapply(lapply(database[, -1], mean), rep, 100))
# make new values for wt
xweight$wt <- (wt = seq(min(database$wt), max(database$wt), length = 100))
# predict from new values
a …Run Code Online (Sandbox Code Playgroud) 假设我有 10 个国家(第 2 级)的 300 家公司(第 1 级)的数据。1 级变量是 PQ 和大小。水平 2 变量是人均 GDP。
library(lme4)
set.seed(1)
PQ <- runif(300,7,21)
id <- (1:300)
country <- sample(1:10,300,replace=T)
size <- sample(1:25000,300,replace=T)
GDP <- sample(800:40000,10,replace=T)
Country1 <- 1:10
L1data <- as.data.frame(cbind(id,country,PQ,size))
L2data <- as.data.frame(cbind(Country1,GDP))
MLdata <- merge(L1data,L2data, by.x = "country", by.y = "Country1")
dummymodel <- lmer(PQ ~ size + GDP + (size|country), data = MLdata, REML = F)
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我收到警告消息
警告消息: 1:一些预测变量的尺度非常不同:考虑重新调整 2:在 checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, 中:模型未能与 max|grad| 收敛= 1.77081 (tol …
我试图得到一个线性模型,其中Y是因变量,X1,X2,X3是我的自变量.
在R中使用'scale'方法缩放我的输入并获得eo-efficients和intercept.
Y = a1X1 + a2X2 + a3X3 + c
Run Code Online (Sandbox Code Playgroud)
现在,为了预测给定值(X1,X2,X3)的Y,可以使用上面的方程直接计算Y的值,还是应该在将它们放入等式之前对输入变量进行缩放?如果是,我们如何扩展它们?