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

逐步回归报错:AIC为负无穷致step无法执行,求解决方法

解决逐步回归AIC为负无穷的报错问题

出现AIC is -infinity for this model的核心问题出在模型存在完全共线性——要么是自变量之间完全相关,要么是某个自变量能完美预测因变量,导致残差平方和为0,AIC计算直接出现异常。

具体排查解决步骤如下:

  • 检查自变量间的共线性
    提取所有自变量计算相关矩阵,查看是否存在相关系数为±1的变量对(完全相关的变量留一个即可):

    # 提取自变量列
    predictors <- Sem_1[, c("Val_tema","Val_material","Val_interacció","Val_participa","Val_oral","Val_feina","Val_fatiga","Val_temps_pràctica","Val_ajust_temps")]
    # 计算相关矩阵
    cor_matrix <- cor(predictors)
    # 打印查看相关系数
    print(cor_matrix)
    

    找到完全相关的变量后,删除其中一个再重新建模。

  • 检查因变量与自变量的完全相关性
    查看因变量Val_general和每个自变量的相关系数,若存在相关系数为±1的情况,说明该变量可完美预测因变量,此时逐步回归无意义,可直接用该变量建模,或删除该变量后再运行逐步回归:

    cor(Sem_1$Val_general, predictors)
    
  • 确认样本量是否充足
    若样本量小于等于自变量数量,模型易出现过度拟合,引发AIC异常。查看样本量:

    nrow(Sem_1)
    

    若样本不足,可增加样本量,或结合领域知识先筛选掉部分非必要自变量。

  • 清理数据中的异常/重复值
    检查是否存在重复行,或因变量/自变量取值完全一致的情况,这类数据会干扰模型计算:

    # 统计重复行数量
    sum(duplicated(Sem_1))
    # 查看因变量的取值分布
    table(Sem_1$Val_general)
    

    发现重复或异常值后先清理再建模。

  • 换用更稳健的逐步回归函数
    若以上排查后仍有问题,可尝试MASS包的stepAIC函数,它对极端情况的处理更稳健:

    library(MASS)
    # 构建全变量模型
    full_model <- lm(Val_general ~ Val_tema+Val_material+Val_interacció+Val_participa+Val_oral+Val_feina+Val_fatiga+Val_temps_pràctica+Val_ajust_temps, data=Sem_1)
    # 运行逐步回归
    step_model <- stepAIC(full_model, direction="backward")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 08:27:25