运行Rolling Regression报错ValueError: endog需ndim为1但实际为2
问题根因
RollingOLS的位置参数顺序填写错误,statsmodels中该类的构造参数要求第一个传入被解释变量endog(即你的y值),第二个传入解释变量exog(即你的X值)。你将X放在了第一个参数位、y放在第二个,导致程序把二维结构的X识别为endog,触发维度校验错误。
修复方案
仅需要调换参数位置即可,修正后的代码如下:
rols = RollingOLS(y, X, window=60) rres = rols.fit() params = rres.params print(params.head()) print(params.tail())
补充说明
- 你此前对y做的维度转换逻辑完全正确,不需要额外调整y的处理代码
- 调用回归类接口时如果出现不符合预期的维度校验错误,可优先核对入参顺序是否匹配官方要求
内容的提问来源于stack exchange,提问作者A.McCann
相关产品推荐
相关产品推荐

