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

如何使用含滞后Y变量的线性回归模型填充时间序列数据的NaN值

带滞后因变量的月度数据滚动预测实现方法

因为你的模型包含上一期的pkg_yld作为自变量,后续预测依赖上一期的输出结果,无法直接调用model.predict()批量计算,按以下步骤逐期迭代计算即可:

1. 提取模型参数

直接从已拟合的模型对象中读取系数,避免手动录入误差:

import pandas as pd
import statsmodels.api as sm

# 从拟合完成的model中提取回归系数
const = model.params['const']
adv_coef = model.params['adv']
lag_coef = model.params['pkg_yld_lag']

2. 预处理数据确认预测区间

首先确保数据按时间升序排列,定位到最后一个实际观测的pkg_yld值作为初始滞后项:

# 确保索引为时间格式且按升序排列
df.index = pd.to_datetime(df.index)
df = df.sort_index()

# 提取最后一个已实际观测的pkg_yld值作为初始滞后值
last_actual_value = df[df['pkg_yld'].notna()]['pkg_yld'].iloc[-1]
# 筛选所有需要预测的行(pkg_yld为空的行)
pred_rows = df[df['pkg_yld'].isna()]

3. 逐期迭代计算预测值

按月份顺序逐个计算预测值,每完成一期计算就更新滞后项为当期预测结果,供下一期计算使用:

current_lag_value = last_actual_value
for idx, row in pred_rows.iterrows():
    # 代入回归公式计算当期pkg_yld预测值
    pred_value = const + adv_coef * row['adv'] + lag_coef * current_lag_value
    # 回填预测值到原数据表
    df.loc[idx, 'pkg_yld'] = pred_value
    # 更新滞后值为当期预测值,用于下一期计算
    current_lag_value = pred_value

运行完成后,原数据表中所有空缺的pkg_yld值就会按你要求的规则完成填充,和手动计算的2021年7月、8月结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:48:03