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

如何在Python中为指定变量构建多变量Unobserved Component Model(UCM)

多变量Unobserved Component Model(UCM)分析的正确实现方式

嘿,你的思路方向是对的,但原代码里有两个小细节问题需要修正,才能顺利跑通多变量UCM分析:

问题1:DataFrame多列索引写法错误

原代码里df['Promo_Var1','Promo_Var2','Promo_Var3']的写法不符合Pandas的索引规则,要选取多列必须使用双层方括号,也就是df[['Promo_Var1','Promo_Var2','Promo_Var3']]。

问题2:UnobservedComponents的参数传递错误

Statsmodels的UnobservedComponents类中,自变量(外生变量)需要通过exog关键字参数明确传入,而非直接放在因变量之后的位置——默认第一个参数是endog(因变量),后续非默认参数都要指定关键字。

修正后的完整代码示例

import statsmodels.api as sm

# 先正确提取多列自变量
exog_features = df[['Promo_Var1','Promo_Var2','Promo_Var3']]

# 初始化并拟合模型,通过exog传入自变量
model = sm.tsa.UnobservedComponents(
    endog=df['Sales'],
    exog=exog_features,
    # 可选:根据数据特性添加UCM组件,比如
    # trend='local linear',  # 加入局部线性趋势
    # seasonal=12            # 若为月度数据,添加周期为12的季节成分
).fit()

# 查看模型拟合结果
print(model.summary())

额外小提示

  • 务必确保你的数据集是时间序列格式,也就是DataFrame的索引为datetime类型,否则模型无法正确识别时间维度的规律。
  • 你可以根据业务场景自由添加UCM的其他组件(趋势、季节、循环项等),这些都可以在初始化UnobservedComponents时通过参数指定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:28:37