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

二项混合效应模型BIC:R与SPSS结果差异及调整问询

解决R与SPSS二项混合效应模型结果差异的问题

我之前在计算Bayes Factor时,碰到过一模一样的问题——R里拟合的二项混合效应模型BIC大概在2280左右,但SPSS里跑出的结果居然高达13973,不过线性模型的结果倒是完全一致。先把我当时用的代码和语法贴出来,方便对照:

R代码

# 空模型
memory.model = glmer(correct ~ (1|ps) + (1|item), 
                     data=memorystudy, 
                     family=binomial, 
                     glmerControl(optimize = "bobyqa"))
# 主效应模型
memory.model2 = glmer (correct ~ encoding + retrieval + (1|ps) + (1|item), 
                       data=memorystudy, 
                       family=binomial, 
                       glmerControl(optimize = "bobyqa"))
# 交互效应模型
memory.model3 = glmer (correct ~ encoding*retrieval + (1|ps) + (1|item), 
                       data=memorystudy, 
                       family=binomial, 
                       glmerControl(optimize = "bobyqa"))

原SPSS语法

# 主效应模型
GENLINMIXED /FIELDS TARGET = correct 
/DATA_STRUCTURE SUBJECTS = ps*item COVARIANCE_TYPE = VARIANCE_COMPONENTS 
/TARGET_OPTIONS DISTRIBUTION = BINOMIAL LINK = LOGIT REFERENCE = 0 
/FIXED EFFECTS = encoding retrieval 
/RANDOM USE_INTERCEPT = TRUE SUBJECTS = ps*item.

# 交互效应模型
GENLINMIXED /FIELDS TARGET = correct 
/DATA_STRUCTURE SUBJECTS = ps*item COVARIANCE_TYPE = VARIANCE_COMPONENTS 
/TARGET_OPTIONS DISTRIBUTION = BINOMIAL LINK = LOGIT REFERENCE = 0 
/FIXED EFFECTS = encoding retrieval encoding*retrieval 
/RANDOM USE_INTERCEPT = TRUE SUBJECTS = ps*item.

问题核心原因

你会发现结果差异巨大,本质是随机效应结构的定义完全不一致:

  • R里的(1|ps) + (1|item)是定义了两个独立的随机截距,分别捕捉被试(ps)和项目(item)各自的变异;
  • 但SPSS原语法里的SUBJECTS = ps*item是把被试和项目的交叉组合当成了一个单一的随机分组,这相当于创建了一个“被试-项目”的嵌套结构,和R的模型完全不是一回事,自然拟合结果天差地别。

调整后的SPSS语法

要让SPSS拟合和R完全一致的模型,需要分别定义被试和项目的随机截距,同时调整输出选项来获取足够的对比指标:

主效应模型(对应R的memory.model2)

GENLINMIXED 
  /FIELDS TARGET = correct 
  /DATA_STRUCTURE SUBJECTS = ps, item  # 同时指定两个随机因子
  /TARGET_OPTIONS DISTRIBUTION = BINOMIAL LINK = LOGIT REFERENCE = 0 
  /FIXED EFFECTS = encoding retrieval 
  /RANDOM USE_INTERCEPT = TRUE SUBJECTS = ps  # 被试的随机截距
  /RANDOM USE_INTERCEPT = TRUE SUBJECTS = item  # 项目的随机截距
  /COVARIANCE_TYPE = VARIANCE_COMPONENTS  # 和glmer默认的方差成分结构一致
  /PRINT MODELFIT INFORMATION CRITERIA  # 输出BIC等拟合指标
  /PRINT PARAMETER ESTIMATES  # 输出参数估计,方便和R对比
  /CRITERIA CONVERGENCE = 1E-6 MAXITERATIONS = 1000.  # 匹配R的收敛标准

交互效应模型(对应R的memory.model3)

GENLINMIXED 
  /FIELDS TARGET = correct 
  /DATA_STRUCTURE SUBJECTS = ps, item 
  /TARGET_OPTIONS DISTRIBUTION = BINOMIAL LINK = LOGIT REFERENCE = 0 
  /FIXED EFFECTS = encoding retrieval encoding*retrieval 
  /RANDOM USE_INTERCEPT = TRUE SUBJECTS = ps 
  /RANDOM USE_INTERCEPT = TRUE SUBJECTS = item 
  /COVARIANCE_TYPE = VARIANCE_COMPONENTS 
  /PRINT MODELFIT INFORMATION CRITERIA 
  /PRINT PARAMETER ESTIMATES 
  /CRITERIA CONVERGENCE = 1E-6 MAXITERATIONS = 1000.

额外注意事项

  • 收敛标准:R的glmer默认收敛容差是1e-6,SPSS默认可能更宽松,手动指定CONVERGENCE = 1E-6能让模型拟合的收敛条件和R对齐;
  • 输出选项:原SPSS语法没有指定输出模型拟合指标,添加/PRINT MODELFIT INFORMATION CRITERIA后就能得到BIC、AIC等指标,方便和R的结果对比;
  • 空模型对应:如果要拟合R里的memory.model(空模型,只有随机截距),只需要把/FIXED EFFECTS部分去掉即可。

调整完这些设置后,SPSS的模型结构就和R完全一致了,BIC等拟合指标应该会和R的结果接近,参数估计也能对应上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:01:38