![](/img/trans.png)
[英]Pandas Statsmodels ols regression prediction using DF predictor?
[英]OLS with pandas: datetime index as predictor
我想使用pandas OLS函数来为我的数据系列拟合趋势线。 有谁知道如何使用熊猫系列中的日期时间索引作为OLS中的预测器?
例如,假设我有一个简单的时间序列:
>>> ts
2001-12-31 19.828763
2002-12-31 20.112191
2003-12-31 19.509116
2004-12-31 19.913656
2005-12-31 19.701649
2006-12-31 20.022819
2007-12-31 20.103024
2008-12-31 20.132712
2009-12-31 19.850609
2010-12-31 19.290640
2011-12-31 19.936210
2012-12-31 19.664813
Freq: A-DEC
我想使用索引作为预测器对其进行OLS:
model = pd.ols(y=ts,x=ts.index,intercept=True)
但由于x是日期时间索引的列表,因此该函数返回错误。 有人有想法吗?
我可以使用来自scipy.stats的linregress,但我想知道它是否可能与Pandas。
谢谢,格雷格
问题是你无法将Index
传递给ols
。
将其更改为Series
:
In [153]: ts
Out[153]:
2011-01-01 00:00:00 19.828763
2011-01-01 01:00:00 20.112191
2011-01-01 02:00:00 19.509116
Freq: H, Name: 1
In [158]: type(ts.index)
Out[158]: pandas.tseries.index.DatetimeIndex
In [154]: df = ts.reset_index()
In [155]: df
Out[155]:
index 1
0 2011-01-01 00:00:00 19.828763
1 2011-01-01 01:00:00 20.112191
2 2011-01-01 02:00:00 19.509116
In [160]: type(df['index'])
Out[160]: pandas.core.series.Series
In [156]: model = pd.ols(y=df[1], x=df['index'], intercept=True)
In [163]: model
Out[163]:
-------------------------Summary of Regression Analysis-------------------------
Formula: Y ~ <x> + <intercept>
Number of Observations: 3
Number of Degrees of Freedom: 1
R-squared: -0.0002
Adj R-squared: -0.0002
Rmse: 0.3017
F-stat (1, 2): -inf, p-value: 1.0000
Degrees of Freedom: model 0, resid 2
-----------------------Summary of Estimated Coefficients------------------------
Variable Coef Std Err t-stat p-value CI 2.5% CI 97.5%
--------------------------------------------------------------------------------
x 0.0000 0.0000 0.00 0.9998 -0.0000 0.0000
intercept 0.0000 76683.4934 0.00 1.0000 -150299.6471 150299.6471
---------------------------------End of Summary---------------------------------
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.