- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些纵向数据,我想从中获得指定时间的预测均值。该模型包括 2 个项,它们的交互作用和时间变量的样条项。当我尝试获取预测均值时,我得到“mm %*% fixef(m4) 中的错误:不一致的参数”
我使用 lmer 的 sleep 数据集来说明我的问题。首先,我导入数据并为我的交互创建一个变量“age”
sleep <- as.data.frame(sleepstudy) #get the sleep data
# create fake variable for age with 3 levels
set.seed(1234567)
sleep$age <- as.factor(sample(1:3,length(sleep),rep=TRUE))
然后我运行我的 lmer 模型
library(lme4)
library(splines)
m4 <- lmer(Reaction ~ Days + ns(Days, df=4) + age + Days:age + (Days | Subject), sleep)
最后,我创建了获得预测均值所需的数据和矩阵
#new data frame for predicted means
d <- c(0:9) # make a vector of days = 0 to 9 to obtain predictions for each day
newdat <- as.data.frame(cbind(Days=d, age=rep(c(1:3),length(d))))
newdat$Days <- as.numeric(as.character(newdat$Days))
newdat$age <- as.factor(newdat$age)
# create a matrix
mm<-model.matrix(~Days + ns(Days, df=4) + age + Days:age, newdat)
newdat$pred<-mm%*%fixef(m4)
正是在这一点上,我得到了错误:mm %*% fixef(m4) 中的错误:不一致的参数
我可以使用预测来获取手段
newdat$pred <- predict(m4, newdata=newdat, re.form=NA)
效果很好,但我希望能够计算置信区间,所以我需要一个一致的矩阵。
我在某处读到问题可能是 lmer 创建了别名(我找不到那个帖子)。此评论是针对无法将 effect() 用于类似任务而作出的。我不太明白如何克服这个问题。此外,我记得那个帖子有点旧,希望别名问题可能不再相关。
如果有人对我可能做错的地方提出建议,我将不胜感激。谢谢。
最佳答案
这里有几件事。
我已经稍微清理了代码......
library("lme4")
library("splines")
sleep <- sleepstudy #get the sleep data
set.seed(1234567)
## next line happens to sample only 2 and 3 ...
sleep$age <- as.factor(sample(1:3,length(sleep),rep=TRUE))
length(levels(sleep$age)) ## 2
适合模型:
m4 <- lmer(Reaction ~ Days + ns(Days, df=4) +
age + Days:age + (Days | Subject), sleep)
## message; fixed-effect model matrix is
## rank deficient so dropping 1 column / coefficient
检查固定效应:
f1 <- fixef(m4)
length(f1) ## 7
f2 <- fixef(m4,add.dropped=TRUE)
length(f2) ## 8
我们可以使用这个固定效果的扩展版本(其中有一个 NA
值),但这只会通过传播 NA 来搞乱我们
值通过计算...
检查模型矩阵:
X <- getME(m4,"X")
ncol(X) ## 7
(which.dropped <- attr(getME(m4,"X"),"col.dropped"))
## ns(Days, df = 4)4
## 6
预测均值的新数据框
d <- 0:9
## best to use data.frame() directly, avoid cbind()
## generate age based on *actual* levels in data
newdat <- data.frame(Days=d,
age=factor(rep(levels(sleep$age),length(d))))
创建一个矩阵:
mm <- model.matrix(formula(m4,fixed.only=TRUE)[-2], newdat)
mm <- mm[,-which.dropped] ## drop redundant columns
## newdat$pred <- mm%*%fixef(m4) ## works now
由 sianagh 添加:获取置信区间和绘制数据的代码:
predFun <- function(x) predict(x,newdata=newdat,re.form=NA)
newdat$pred <- predFun(m4)
bb <- bootMer(m4,
FUN=predFun,
nsim=200)
## nb. this produces an error message on its first run,
## but not on subsequent runs (using the development version of lme4)
bb_ci <- as.data.frame(t(apply(bb$t,2,quantile,c(0.025,0.975))))
names(bb_ci) <- c("lwr","upr")
newdat <- cbind(newdat,bb_ci)
剧情:
plot(Reaction~Days,sleep)
with(newdat,
matlines(Days,cbind(pred,lwr,upr),
col=c("red","green","green"),
lty=2,
lwd=c(3,2,2)))
关于lme4 - 尝试从模型矩阵中提取信息时 lmer 出现不一致参数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34221564/
我有一个包含 142 个数据条目的数据集:两次测量 121 个人(两年,治疗前和治疗后,年份 = 0 或 1),第二年有 46 个人在处理区,其余在控制区绘图(处理 = 0 或 1)。以下是一些示例数
我正在尝试编写一个函数来收集我在脚本中经常使用的一些调用 我在我的例子中使用了 lme4 包的 sleepstudy 数据 这是我开始使用的功能(的简化版本): trimModel1 <- funct
我经常遇到这个问题:我想用约束拟合多级回归。我不知道该怎么做。我通常最终会使用 lavaan,因为它允许对回归系数设置约束。但它仍然不能有随机斜率模型(只有随机截距,事实是我也不知道如何在 lavaa
我有一个具有以下结构的数据框: > t str(t) 'data.frame': 699 obs. of 7 variables: $ Awns : int 0
我正在尝试使用 lmer 函数运行混合效果模型。我的实验包括使用一些相同的个体在不同温度下的代谢率(一些缺失数据)。文本文件的结构如下所示: > str(data.by.animal) 'data.f
lme4 包中的函数lmer 默认使用minqa 包中的bobyqa 作为优化算法。 根据以下帖子https://stat.ethz.ch/pipermail/r-sig-mixed-models/2
我正在使用 lme4 运行混合模型在 R: full_mod3=lmer(logcptplus1 ~ logdepth*logcobb + (1|fyear) + (1 |flocation), da
我有一些纵向数据,我想从中获得指定时间的预测均值。该模型包括 2 个项,它们的交互作用和时间变量的样条项。当我尝试获取预测均值时,我得到“mm %*% fixef(m4) 中的错误:不一致的参数” 我
我目前正在尝试帮助一位同事,但我根本找不到解决方案。所以我希望其他人可以帮助我们。 我有一个数据集,其中包含使用不同研究设计评估的权重数据,针对不同研究中的不同物种(一项研究包括多种设计和多种物种)。
我正在为具有 4 个级别的预测器 root.type 上的单个响应变量运行线性混合模型;当我运行模型时,我只想要有关整个因素的信息,但它一直将其拆分为多个级别。有什么想法吗? Ca.auto |t|)
当您有一个包含大量因素和相互作用的多级模型时,固定效应矩阵的相关性大小可能会变得非常大且不清楚。 我可以使用 symbolic.cor=T打印方法中的参数以更清晰地打印摘要,如下所示: ratbrai
我想使用回归模型而不是“方差分析”(AOV)函数在 R 中运行重复测量方差分析。 这是我的 3 个主题内因素的 AOV 代码示例: m.aov<-aov(measure~(task*region*ac
我对混合模型使用了以下语法,然后 step 但它不起作用。 它通常是这样工作的还是我实际上不能使用 lmer 使用反向消除?谢谢! fullmodel<-lmer(Eeff~NDF+ADF+CP+NE
我有四个位置和四个基板的移植实验(取自每个位置)。我已经确定了每个位置和基质组合中每个种群的存活率。本实验重复 3 次。 我创建了一个 lmm 如下: Survival.model <- lmer(S
我需要提取 standard error来自 lmer 输出的方差分量. library(lme4) model <- lmer(Reaction ~ Days + (1|Subject), slee
我在 R 装了一个模型与 lmer() -功能来自 lme4包裹。我缩放了因变量: mod fixef(mod) (Intercept) X1 X2
我已经拟合了一个 lmer 模型,现在我正在尝试根据实际系数而不是缩放系数来解释系数。 我的顶级模特是: lmer(logcptplus1~scale.t6+scale.logdepth+(1|lo
我刚刚将 lme4 更新到 1.0-4 版,当我运行 lmer() 时,我之前收敛的混合效果模型现在会打印此警告: Warning message: In (function (fn, par, lo
我曾经使用下面的代码来计算 lmer 模型的标准化系数。但是,随着 lme 的新版本,返回对象的结构发生了变化。 如何调整函数 stdCoef.lmer 以使其与新的 lme4 版本一起使用? # I
我正在尝试在 drake 计划中安装一些 lme4::lmer 模型,但出现错误 'data' not found, and some variables missing from formula e
我是一名优秀的程序员,十分优秀!