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

Johnson-Neyman交互图绘制失败:ANCOVA交互项识别报错求助

多水平分类变量ANCOVA的Johnson-Neyman图绘制问题与解决方案

问题背景

构建带交互项的ANCOVA模型:

camomodel <- lm(FID ~ start_dist * pattern, data = camo)

其中pattern为4水平分类变量,模型输出显示存在显著交互项(如start_dist:patternspots、start_dist:patternstripes),但调用interact_plot绘制Johnson-Neyman(JN)区间时触发报错:

Error in `johnson_neyman()`:
! Could not find interaction term in the model, so Johnson-Neyman interval could not be calculated.
Backtrace:
 1. interactions::johnson_neyman(camomodel, pred = start_dist, modx = pattern)

报错原因

JN分析默认仅支持连续变量×连续变量或连续变量×二分类变量的交互场景。当分类变量存在多水平时,R会将其拆分为多个哑变量,生成多个独立的交互项(如你的模型中是start_dist:patternplain、start_dist:patternspots、start_dist:patternstripes),而非单一的start_dist:pattern交互项,导致johnson_neyman()函数无法识别整体交互项。

解决办法

需对分类变量的水平进行两两对比,分别计算每组对比的JN区间:

方法1:以默认基准水平为参照,逐一对比其他水平

假设pattern的默认基准水平为[基准水平名称](可通过levels(camo$pattern)查看因子水平排序),执行以下代码:

# 对比plain水平与基准水平
interactions::johnson_neyman(camomodel, pred = start_dist, modx = pattern, modx.values = c("[基准水平名称]", "plain"))

# 对比spots水平与基准水平
interactions::johnson_neyman(camomodel, pred = start_dist, modx = pattern, modx.values = c("[基准水平名称]", "spots"))

# 对比stripes水平与基准水平
interactions::johnson_neyman(camomodel, pred = start_dist, modx = pattern, modx.values = c("[基准水平名称]", "stripes"))

替换[基准水平名称]为实际的基准水平字符串

方法2:对比任意两个非基准水平

若需对比如spots和stripes这类非基准水平,可先重新设定模型的参考水平,再分析:

# 重新设定pattern的参考水平为spots
camo$pattern <- relevel(camo$pattern, ref = "spots")
# 重新拟合模型
camomodel_new <- lm(FID ~ start_dist * pattern, data = camo)
# 分析stripes与spots的交互JN区间
interactions::johnson_neyman(camomodel_new, pred = start_dist, modx = pattern, modx.values = c("spots", "stripes"))

交互效应解读

从模型系数输出可得出以下结论:

  • 基准水平(未在系数表中显示的pattern水平)的FID随start_dist的变化斜率为0.62283,即start_dist每增加1单位,FID平均提升0.62。
  • patternplain与基准水平的斜率差异为-0.04533,但无统计学显著性(p=0.618),说明两者的FID随start_dist的变化趋势无显著差异。
  • patternspots的斜率比基准水平低0.21434,且显著(p=0.019):start_dist越大,spots水平的FID增长速度越慢于基准水平。
  • patternstripes的斜率比基准水平低0.32816,显著度极高(p<0.001):stripes水平的FID随start_dist的增长速度远慢于基准水平,JN图将直观展示start_dist在哪个区间内,两者的FID差异具有统计学意义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 19:20:07