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

多变量线性回归预测结果差异异常问题求助

问题分析与解决方案

一、先排查代码中的明显错误

看第二组数据的代码,存在几个低级错误,这大概率是差异巨大的直接原因:

  • 变量名不匹配:model = sm.OLS(sst_n, X_n) 里的sst_n根本没定义,你实际赋值的是sst = skin_temp_array,这里应该改成model = sm.OLS(sst, X_n)
  • 预测用错了特征矩阵:predicted_sst_same_data = results.predict(X) 用的是第一组的X,而不是当前第二组的X_n,等于用第二组训练的模型去预测第一组的特征,完全驴唇不对马嘴
  • 差异计算逻辑错误:用第二组的真实值sst减去第一组特征的预测值,结果肯定全是偏差

二、修正后的第二组数据代码

# 使用另一组数据
X_n = np.column_stack((tir1, tir1_z, bt_diff, bt_diff_z, bt_diff_sst, s_theta, np.ones_like(tir1)))
sst = skin_temp_array
# 拟合OLS模型
model = sm.OLS(sst, X_n)  # 修正sst_n为sst
results = model.fit()

# 打印回归结果摘要
print(results.summary())

# 用当前组的特征矩阵做预测
predicted_sst = results.predict(X_n)

# 计算实际值与预测值的差异
difference = sst - predicted_sst

三、如果修正代码后仍然差异大,需要进一步排查这些方向

1. 数据分布一致性检查

  • 对比两组数据的特征(tir1、tir1_z等)和目标变量的统计分布:包括均值、方差、极值、分布形态,用直方图、箱线图可视化。如果两组数据分布差异极大,线性模型的泛化能力会直接崩盘
  • 检查第二组数据是否存在异常值,极端值会严重拉偏回归系数,导致预测偏差

2. 特征共线性与相关性问题

  • 计算特征的方差膨胀因子(VIF),如果VIF>10说明存在严重共线性,会导致系数不稳定,预测误差陡增。可以用statsmodels的variance_inflation_factor工具计算
  • 检查特征与目标变量的相关性,如果第二组中某些特征和SST的相关性和第一组完全相反,线性模型就不再适用

3. 线性回归假设验证

线性回归要求数据满足:线性关系、同方差性、残差正态分布、无自相关。针对第二组数据验证这些假设:

  • 画残差的QQ图,看是否近似正态分布
  • 画残差与预测值的散点图,看是否存在异方差(比如残差随预测值增大而明显波动)
  • 用Durbin-Watson检验检查自相关
    如果假设不成立,要么对特征做变换(对数、标准化),要么换非线性模型(比如树模型、多项式回归)

4. 数据预处理一致性

确保两组数据的预处理步骤完全一致:比如是否都做了标准化/归一化、缺失值填充、特征筛选。如果第一组做了标准化而第二组没做,预测结果肯定偏差巨大

四、基于你提供的数据文件的快速分析建议

可以先加载两组数据做初步统计对比:

import numpy as np
import pandas as pd

# 加载数据
X1 = np.load('x.npy')
y1 = np.load('y.npy')
X2 = np.load('x1.npy')
y2 = np.load('y1.npy')

# 查看数据形状
print(f"第一组数据:X={X1.shape}, y={y1.shape}")
print(f"第二组数据:X={X2.shape}, y={y2.shape}")

# 查看特征统计描述
print("\n第一组特征统计:")
print(pd.DataFrame(X1).describe())
print("\n第二组特征统计:")
print(pd.DataFrame(X2).describe())

通过这些统计量能快速判断两组数据的分布差异。

内容的提问来源于stack exchange,提问作者The Emerging Star

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 04:50:16