我试图用时间序列数据进行多元回归,但当我将时间序列列添加到模型中时,它最终将每个唯一值视为一个单独的变量,如下所示(我的“日期”列的类型为datetime):
est = smf.ols(formula='r ~ spend + date', data=df).fit()
print est.summary()
coef std err t P>|t| [95.0% Conf. Int.]
Intercept -6.249e-10 inf -0 nan nan nan
date[T.Timestamp('2014-10-08 00:00:00')] -2.571e-10 inf -0 nan nan nan
date[T.Timestamp('2014-10-15 00:00:00')] 9.441e-11 inf 0 nan nan nan
date[T.Timestamp('2014-10-22 00:00:00')] 5.619e-11 inf 0 nan nan nan
date[T.Timestamp('2014-10-29 00:00:00')] -8.035e-12 inf -0 nan nan nan
date[T.Timestamp('2014-11-05 00:00:00')] 6.334e-11 inf 0 nan nan nan
date[T.Timestamp('2014-11-12 00:00:00')] 7.9e+04 inf 0 nan nan nan
date[T.Timestamp('2014-11-19 00:00:00')] 1.58e+05 inf 0 nan nan nan
date[T.Timestamp('2014-11-26 00:00:00')] 1.58e+05 inf 0 nan nan nan
date[T.Timestamp('2014-12-03 00:00:00')] 1.58e+05 inf 0 nan nan nan
date[T.Timestamp('2014-12-10 00:00:00')] 2.28e+05 inf 0 nan nan nan
date[T.Timestamp('2014-12-17 00:00:00')] 3.28e+05 inf 0 nan nan nan
date[T.Timestamp('2014-12-24 00:00:00')] 3.705e+05 inf 0 nan nan nan
spend 2.105e-10 inf 0 nan nan nan
我也试过statsmodel的tms软件包,但不知道该怎么处理“频率”:
^{pr2}$
我真的希望看到一个数据示例以及一个代码片段来重现您的错误。 如果没有这些,我的建议将不会解决您的特定错误消息。但是,它允许您对pandas数据帧中存储的一组时间序列运行多元回归分析。假设您在时间序列中使用连续值而不是类别值,下面是我如何使用pandas和statsmodels来实现:
具有随机值的数据帧:
输出-要处理的某些数据:
^{2}$下面的函数将允许您指定一个源数据帧、一个因变量y和一组自变量x1、x2。使用statsmodels,一些期望的结果将存储在一个数据帧中。在这里,R2将是数值类型,而回归系数和p值将是列表,因为这些估计值的数量将随您希望包含在分析中的自变量的数量而变化。在
下面是一个测试运行:
输出:
以下是简单复制粘贴的全部内容:
你为每一个日期拟合一个线性模型,因为ols将日期视为一个分类变量。我建议你试试:
对于statsmodel,请尝试:
^{2}$相关问题 更多 >
编程相关推荐