使用sm.tsa.statespace.SARIMAX拟合自回归遇频率警告,求设置方法
解决SARIMAX的频率信息警告问题
嘿,这个警告我之前也碰到过!本质是你的训练数据train的时间索引没有明确设置频率,statsmodels只能自动推断为MS(每月起始),虽然推断通常没问题,但手动指定能彻底消除警告,也让代码逻辑更清晰。
这里有两种简单的解决方法,你可以根据自己的需求选:
方法1:提前给时间序列设置频率
如果你的train数据的索引已经是datetime类型,可以在预处理阶段直接给它指定频率:
# 将train的时间索引设置为每月起始频率(MS) train = train.asfreq('MS') # 再正常拟合模型 fit1 = sm.tsa.statespace.SARIMAX( train.Demand, order=(1, 0, 0), enforce_stationarity=False, enforce_invertibility=False ).fit()
要是你是刚创建datetime索引,也可以一步到位指定频率:
# 创建datetime索引时直接指定freq参数 train.index = pd.to_datetime(train.index, freq='MS')
方法2:直接在SARIMAX模型中指定freq参数
SARIMAX类本身支持freq参数,不用修改原数据,直接把频率字符串传进去就行:
fit1 = sm.tsa.statespace.SARIMAX( train.Demand, order=(1, 0, 0), enforce_stationarity=False, enforce_invertibility=False, freq='MS' # 这里手动指定频率 ).fit()
常见频率代码参考
根据你的数据周期选对应的字符串就行:
MS:每月第一天(和警告里推断的频率一致)M:每月最后一天D:每日W:每周Q:每季度(季度末)QS:每季度起始
这样修改后,警告就会消失,模型也会严格按照你指定的频率来处理时间序列啦。
内容的提问来源于stack exchange,提问作者Lê Ngọc Thạch
相关产品推荐
相关产品推荐

