You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对三水平变量进行对比编码?(混合模型场景)

对比编码在混合模型中的应用与多水平变量编码疑问

我最近发现**对比编码(contrast-coding)**在混合模型(mixed models)里比虚拟编码(dummy-coding)更高效。下面是我用的简化逻辑,方便说明问题:


指定对比编码

> contrasts(TASK1_Reaction_Times$TYPE_OF_LEARNING) <- c(-0.5, 0.5)
> contrasts(TASK1_Reaction_Times$MOMENT_OF_TEST) <- c(-0.5, 0.5)

变量围绕0中心化后的结果

> contrasts(TASK1_Reaction_Times$TYPE_OF_LEARNING)
                   [,1]
ORTHOGRAPHIC_LEARNING -0.5
PHONOLOGICAL_LEARNING  0.5

> contrasts(TASK1_Reaction_Times$MOMENT_OF_TEST)
              [,1]
IMMEDIATELY    -0.5
AFTER_ONE_WEEK  0.5

构建混合模型

> TASK1 <- lmer(RT ~ TYPE_OF_LEARNING * MOMENT_OF_TEST
  + (1 + MOMENT_OF_TEST) + (1 + TYPE_OF_LEARNING), 
   data = TASK1_Reaction_Times)

模型汇总输出

> summary(TASK1)

(...)

Fixed effects:
                         Estimate Std. Error         df     t value      Pr(>|t|)    
(Intercept)                  1000         25         50          40    0.0005 ***
TYPE_OF_LEARNING1             100         25        100          10    0.0005 ***
MOMENT_OF_TEST1              -100         25         50         -10    0.0005 ***
(values are grossly simplified)

我对结果的理解:正字法学习的被试反应时比语音法学习的快约100ms;测试一周后的反应时比即时测试平均慢100ms。


我的问题

当变量有三个水平时(比如三种学习类型、三个测试时间点),该怎么操作?

  • 还能沿用这个方法吗?
  • 该怎么给这类变量做对比编码?比如用-0.5,0,0.5这种方式?

解答

完全可以沿用对比编码的思路,针对三水平变量,核心是设置正交对比编码,既保证每个对比项独立解释变异,适配混合模型需求,又能让结果解读更直观。

三水平变量的对比编码方法

假设你的变量是LEARNING_TYPE,三个水平为A、B、C,常见的两种正交设置方式如下:

1. Helmert均值对比

这种对比将每个水平与之前所有水平的均值做比较,R内置函数可直接生成:

# 设置Helmert对比并缩放,保证权重围绕0中心化
contrasts(your_data$LEARNING_TYPE) <- contr.helmert(3) / 2

生成的编码矩阵为:

[,1] [,2]
A -0.5 -0.5
B  0.5 -0.5
C   0   1.0
  • 第一列:对比B与A的均值差异
  • 第二列:对比C与A+B的均值差异

2. 自定义正交对比

如果需要指定特定的两两对比(比如A vs C,以及B vs 均值(A,C)),可以手动构建满足正交性的矩阵:

# 自定义对比:第一列对比A和C,第二列对比B与A/C的均值
contrasts(your_data$LEARNING_TYPE) <- matrix(
  c(-0.5, 0, 0.5, -0.25, 0.5, -0.25), 
  nrow = 3
)

这个矩阵满足两个核心要求:

  • 正交性:任意两列的点积为0,避免效应解释互相干扰
  • 权重和为0:保证变量围绕0中心化,此时截距代表所有水平的总均值

关键注意事项

  • 对比矩阵必须满足正交性,这是混合模型中对比编码高效性的核心,能提升模型收敛性,同时让每个固定效应的解释更独立。
  • 每列权重和必须为0,确保截距项的解读是所有水平的总均值,而非某一个参照组的均值。
  • 模型构建和结果解读逻辑和两水平时完全一致,每个对比项的系数直接对应分组间的差异大小。

内容的提问来源于stack exchange,提问作者asderad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 12:03:23