【问题标题】:Coefficients for all levels of a categorical factor unchanged in lmer after adding variables添加变量后 lmer 中所有级别的分类因子的系数不变
【发布时间】:2020-06-29 09:27:36
【问题描述】:

我正在估计具有受试者随机效应的 lmer 模型,以进行受试者内设计研究。我在三种不同的治疗条件下测量了每个受试者的因变量,从而实现了平衡设计。除了治疗假人,我在 lmer 模型中还有控制变量。

首先突出的是所有治疗假人都有相同的标准错误,这里已经提出并回答了:

https://stats.stackexchange.com/questions/170018/equal-standard-errors-for-all-levels-of-a-categorical-factor-in-lmer

突出的第二件事是,如果我将控制变量添加到模型中,治疗假人的系数不会改变。

这里用一些模拟数据再现了 lmer 的行为:

library(tidyverse)
library(lme4)
library(lmerTest)

#Some data:
id <- rep(1:50) #subject id
dependent_1 <- rnorm(50,10,5) #dependent measure in treatment 1
dependent_2 <- rnorm(50,18,3) #dependent measure in treatment 2
dependent_3 <- rnorm(50,28,4) #dependent measure in treatment 3
control_a <- rnorm(50, 100, 5) #first control
control_b <- rnorm(50, 200,33) #second control

df <- data.frame(id, dependent_1, dependent_2, dependent_3, control_a, control_b) #make dataframe

#Reshape to long form
df_long <- pivot_longer(df, 
                        cols = starts_with("dependent_"), 
                        names_to = c(".value","treatment"),
                        names_sep = "\\_")

#Treatment to factor
df_long$treatment <- as.factor(df_long$treatment)

#LMER Models
lmer_model.1 <- lmer(dependent ~ treatment +(1|id), data = df_long, REML = FALSE) #Model with treatment dummies only
lmer_model.2 <- lmer(dependent ~ treatment + control_a + control_b + (1|id), data = df_long, REML = FALSE) #Model with treatment dummies and controls

我得到以下结果:

===============================================================
                            Model 1               Model 2             
---------------------------------------------------------------
(Intercept)             9.246 (0.567) ***    17.535 (7.796) *  
treatment2              8.157 (0.787) ***     8.157 (0.787) ***
treatment3             20.030 (0.787) ***    20.030 (0.787) ***
control_a                                    -0.067 (0.072)    
control_b                                    -0.008 (0.011)    
---------------------------------------------------------------
AIC                   852.194               854.977            
BIC                   867.247               876.051            
Log Likelihood       -421.097              -420.488            
Num. obs.             150                   150                
Num. groups: id        50                    50                
Var: id (Intercept)     0.596                 0.457            
Var: Residual          15.492                15.492            
===============================================================
*** p < 0.001; ** p < 0.01; * p < 0.05

谁能给我解释一下为什么会这样?

【问题讨论】:

    标签: r lme4 multi-level


    【解决方案1】:

    这显然是关于统计,而不是编程。考虑改为在Cross Validated 上询问。

    您的问题的答案似乎在于您设置示例数据的方式。额外的控制/预测变量 X2 仅影响另一个先前包含的预测变量 X1 的估计,它们(至少有点)相关。实际上,这几乎是正确的,因为您在现实生活中的数据中很难得到 r = .00 的相关性。但是您设置数据的方式使treatmentcontrol_acontrol_b 正交。因此,包括任一控制都不会影响处理虚拟变量的系数。

    【讨论】:

    • 谢谢,我把我的问题移到了 stackexchange(抱歉,这里有点新问题)。我认为您是对的,但这也应该通过反复测量来成立,因为个人特征不应与治疗假人相关。
    猜你喜欢
    • 2015-09-04
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 2017-04-22
    • 1970-01-01
    相关资源
    最近更新 更多