如何强制所有治疗在 lme4 中具有相同的截距?
How to force all treatments to have same intercept in lme4?
这是我第一次在这里发帖,所以我希望我的问题不是愚蠢的,虽然我担心它没有答案。
我 运行 一项喂养试验,我喂食五种不同藻类中的一种蜗牛,然后随时间测量个体长度。我使用 R 的 lme4
:
构建了一个 LMM
model<-lmer(log(length)~treatment*day+(1+day|individual), data=real, REML=F)
在我的模型中,其中一种处理的截距与其他处理的截距截然不同:
Plot of my model, showing the treatment with outlier intercept, and other treatments with roughly matching intercepts.
我在 61 天内测量了 4 次长度(第 7、20、42、61 天),但不幸的是我没有在第 0 天测量它。所有蜗牛都来自同一批次,所以每次处理都有第 0 天的平均长度相同。有什么方法可以告诉 R 这是真的,即使我不知道第 0 天的平均长度是多少?理论上,我可以调整截距使它们匹配,但如果模型考虑了这些信息,直线的斜率似乎也会改变。
我知道这个模型是这样写的,所以所有的人都有 运行dom 截距。但是,用(0+day|individual)
这个词写模型,让个体有固定的截距并不能解决问题,因为个体的截距只在处理内部相同,而在处理之间是不同的。可能是我要求 R 做不可能或不道德的事情,即伪造数据。
提前感谢您的任何建议!
编辑一个可重现的例子:
如果使用 R "ChickWeights" 数据集(这些数据不是完美的线性趋势,但作为示例足够好)也会出现同样的问题
model.chix<-lmer(weight~Diet*Time+(Time|Chick), data=ChickWeight, REML=FALSE)
> summary(model.chix)
Linear mixed model fit by maximum likelihood ['lmerMod']
Formula: weight ~ Diet * Time + (Time | Chick)
Data: ChickWeight
AIC BIC logLik deviance df.resid
4824.2 4876.5 -2400.1 4800.2 566
Scaled residuals:
Min 1Q Median 3Q Max
-2.7508 -0.5693 -0.0401 0.4694 3.5415
Random effects:
Groups Name Variance Std.Dev. Corr
Chick (Intercept) 103.61 10.179
Time 10.01 3.165 -0.99
Residual 163.36 12.781
Number of obs: 578, groups: Chick, 50
Fixed effects:
Estimate Std. Error t value
(Intercept) 33.6541 2.8023 12.009
Diet2 -5.0205 4.8072 -1.044
Diet3 -15.4038 4.8072 -3.204
Diet4 -1.7475 4.8145 -0.363
Time 6.2799 0.7304 8.598
Diet2:Time 2.3293 1.2508 1.862
Diet3:Time 5.1430 1.2508 4.112
Diet4:Time 3.2528 1.2515 2.599
Correlation of Fixed Effects:
(Intr) Diet2 Diet3 Diet4 Time Dt2:Tm Dt3:Tm
Diet2 -0.583
Diet3 -0.583 0.340
Diet4 -0.582 0.339 0.339
Time -0.881 0.513 0.513 0.513
Diet2:Time 0.514 -0.882 -0.300 -0.299 -0.584
Diet3:Time 0.514 -0.300 -0.882 -0.299 -0.584 0.341
Diet4:Time 0.514 -0.300 -0.300 -0.882 -0.584 0.341 0.341
截距估计值预测第 0 天的小鸡体重。预计采用饮食 1 的小鸡体重为 33.7 克,而采用饮食 3 的小鸡预计比其轻 15.4 克。如果在第 0 天强制所有雏鸡体重相同以符合实际情况,该模型是否更合适?
你能提供一个可重现的例子来更好地理解这一点吗?
我得到的是你想要移除随机效果,对吗?那么就是
library(lme4)
library(ggplot2)
model <- lmer(log(hwy) ~ -1 + displ + (displ || year), data=mpg, REML=F)
我发现我可以通过包含没有主效应项的交互项来获得匹配的截距:
model.chix<-lmer(weight~Diet:Time+(Time|Chick), data=ChickWeight, REML=FALSE)
但是,要包括交互作用,您还必须包括主效应项,否则您的统计数据是错误的。所以,我选择了上面写的模型,并将证明它最适合现有数据,如果不是截距的话。
这是我第一次在这里发帖,所以我希望我的问题不是愚蠢的,虽然我担心它没有答案。
我 运行 一项喂养试验,我喂食五种不同藻类中的一种蜗牛,然后随时间测量个体长度。我使用 R 的 lme4
:
model<-lmer(log(length)~treatment*day+(1+day|individual), data=real, REML=F)
在我的模型中,其中一种处理的截距与其他处理的截距截然不同:
Plot of my model, showing the treatment with outlier intercept, and other treatments with roughly matching intercepts.
我在 61 天内测量了 4 次长度(第 7、20、42、61 天),但不幸的是我没有在第 0 天测量它。所有蜗牛都来自同一批次,所以每次处理都有第 0 天的平均长度相同。有什么方法可以告诉 R 这是真的,即使我不知道第 0 天的平均长度是多少?理论上,我可以调整截距使它们匹配,但如果模型考虑了这些信息,直线的斜率似乎也会改变。
我知道这个模型是这样写的,所以所有的人都有 运行dom 截距。但是,用(0+day|individual)
这个词写模型,让个体有固定的截距并不能解决问题,因为个体的截距只在处理内部相同,而在处理之间是不同的。可能是我要求 R 做不可能或不道德的事情,即伪造数据。
提前感谢您的任何建议!
编辑一个可重现的例子: 如果使用 R "ChickWeights" 数据集(这些数据不是完美的线性趋势,但作为示例足够好)也会出现同样的问题
model.chix<-lmer(weight~Diet*Time+(Time|Chick), data=ChickWeight, REML=FALSE)
> summary(model.chix)
Linear mixed model fit by maximum likelihood ['lmerMod']
Formula: weight ~ Diet * Time + (Time | Chick)
Data: ChickWeight
AIC BIC logLik deviance df.resid
4824.2 4876.5 -2400.1 4800.2 566
Scaled residuals:
Min 1Q Median 3Q Max
-2.7508 -0.5693 -0.0401 0.4694 3.5415
Random effects:
Groups Name Variance Std.Dev. Corr
Chick (Intercept) 103.61 10.179
Time 10.01 3.165 -0.99
Residual 163.36 12.781
Number of obs: 578, groups: Chick, 50
Fixed effects:
Estimate Std. Error t value
(Intercept) 33.6541 2.8023 12.009
Diet2 -5.0205 4.8072 -1.044
Diet3 -15.4038 4.8072 -3.204
Diet4 -1.7475 4.8145 -0.363
Time 6.2799 0.7304 8.598
Diet2:Time 2.3293 1.2508 1.862
Diet3:Time 5.1430 1.2508 4.112
Diet4:Time 3.2528 1.2515 2.599
Correlation of Fixed Effects:
(Intr) Diet2 Diet3 Diet4 Time Dt2:Tm Dt3:Tm
Diet2 -0.583
Diet3 -0.583 0.340
Diet4 -0.582 0.339 0.339
Time -0.881 0.513 0.513 0.513
Diet2:Time 0.514 -0.882 -0.300 -0.299 -0.584
Diet3:Time 0.514 -0.300 -0.882 -0.299 -0.584 0.341
Diet4:Time 0.514 -0.300 -0.300 -0.882 -0.584 0.341 0.341
截距估计值预测第 0 天的小鸡体重。预计采用饮食 1 的小鸡体重为 33.7 克,而采用饮食 3 的小鸡预计比其轻 15.4 克。如果在第 0 天强制所有雏鸡体重相同以符合实际情况,该模型是否更合适?
你能提供一个可重现的例子来更好地理解这一点吗?
我得到的是你想要移除随机效果,对吗?那么就是
library(lme4)
library(ggplot2)
model <- lmer(log(hwy) ~ -1 + displ + (displ || year), data=mpg, REML=F)
我发现我可以通过包含没有主效应项的交互项来获得匹配的截距:
model.chix<-lmer(weight~Diet:Time+(Time|Chick), data=ChickWeight, REML=FALSE)
但是,要包括交互作用,您还必须包括主效应项,否则您的统计数据是错误的。所以,我选择了上面写的模型,并将证明它最适合现有数据,如果不是截距的话。