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

线性回归中DataFrame组合结构是否引发非预期结果?

关于concat/div构建DataFrame与线性回归R²异常的排查建议

首先明确:R²为负不是concat或div方法的直接产物,它的本质是你的模型拟合效果远差于「仅用因变量均值做预测」的基准线。但如果concat或div操作不当,可能间接导致数据错位、异常值等问题,进而引发这种异常结果。

可能引发问题的concat/div操作细节

  • concat的潜在风险

    • 索引对齐错误:如果concat时未统一索引,会导致因变量和自变量的行数据错位(比如甲患者的NPRS差值和乙患者的获益比被配对到同一行),模型拟合的是完全无关的噪声,必然出现R²为负。
    • 冗余/错误列:concat后如果生成重复的特征或因变量列,后续建模时误选错误列,也会导致无意义的拟合。
  • div的潜在风险

    • 分母异常:计算主动/被动获益比时,若被动获益值为0(包括填充后的0值),会产生无穷大(inf)的极端值,这类值会严重干扰回归拟合,直接拉低模型效果。
    • 数据类型异常:div操作可能意外生成object类型的列(比如包含字符串的异常值),或填充的缺失值不合理(比如用极端值填充),导致模型无法正确计算。

具体排查步骤

  1. 检查最终建模DataFrame的合法性

    • 用df.head()、df.tail()核对每一行的因变量(4周NPRS-基础NPRS)和自变量(获益比)是否属于同一样本,索引是否完全对齐。
    • 用df['获益比'].describe()查看自变量分布:确认是否存在inf、NaN(div可能生成新的缺失/异常值)、或远超合理范围的极端值。
    • 用df.info()确认因变量和自变量均为数值类型(float64/int64),无object类型列。
  2. 验证模型输入的一致性

    • 打印建模用的X(自变量)和y(因变量)的形状,确保X.shape[0] == y.shape[0],且两者的缺失值数量均为0(X.isna().sum()、y.isna().sum())。
    • 先做一个基准测试:用因变量的均值做预测,此时R²应为0;如果连这个结果都不对,说明数据本身存在根本性错误。
  3. 排查模型参数设置

    • 确认statsmodels的OLS是否添加了截距:默认情况下OLS不包含截距,若未调用sm.add_constant(X)强制添加,模型会强制过原点,当因变量均值不为0时,极易出现R²为负的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:55:22