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

基于MICE插补数据,在R中实现仅交互项回归模型及LR卡方检验

针对MICE插补数据拟合纯交互项模型及LR卡方检验的方案

先给你理清R公式的关键细节:你之前用的~A*B其实是R的语法糖,等价于~A+B+A:B,所以两种写法结果完全一致,都会包含主效应和交互项。如果想要仅保留A和B的纯交互项(不含任何主效应),得用:表示纯交互,同时显式去掉默认的截距项,公式写成Y ~ 0 + A:B或者Y ~ A:B - 1都可以。

接下来针对MICE插补后的数据集,一步步实现你要的LR卡方检验:

1. 拟合仅含截距项的基准模型

用with()函数对每个插补后的子集拟合仅截距模型,之后用pool()合并插补结果:

# 仅截距模型
fit_null <- with(data = imp, lm(Y ~ 1))
# 合并插补结果
pooled_null <- pool(fit_null)

2. 拟合仅含纯交互项的目标模型

同样用with()拟合纯交互模型(必须去掉截距,否则R会自动加入截距,模型就不是纯交互项了):

# 仅纯交互项模型(去掉截距)
fit_interaction_only <- with(data = imp, lm(Y ~ 0 + A:B))
# 合并插补结果
pooled_interaction <- pool(fit_interaction_only)

你可以用summary(pooled_interaction)查看合并后的系数,确认输出里只有A和B各水平组合的交互项,没有单独的A或B主效应项。

3. 执行LR卡方检验(比较两个嵌套模型)

对于MICE的多插补模型,不能直接用普通的anova()函数,得用mice包自带的pool.compare()函数来比较两个嵌套模型(仅截距模型 vs 纯交互项模型):

# 执行似然比检验
lr_result <- pool.compare(fit_interaction_only, fit_null, method = "likelihood")
# 查看检验结果
print(lr_result)

输出结果里会包含LR卡方值、自由度和对应的p值,这就是你需要的检验统计量。

额外提醒

  • 如果你不小心写成Y ~ A:B(没去掉截距),R会自动加入截距项,此时模型其实是Y ~ 1 + A:B,这和你要的纯交互项模型不一样,一定要注意去掉截距。
  • pool.compare()的method="likelihood"参数指定用似然比检验,这正是你需要的LR卡方检验方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:09:43