OLS with pandas: datetime index as a predictor

I would like to use the pandas OLS function to match the trend line for my data series. Does anyone know how to use the pandas series datetime index as a predictor in OLS?

For example, suppose I have a simple time series:

>>> 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 

I would like to do OLS on it using the index as a predictor:

 model = pd.ols(y=ts,x=ts.index,intercept=True) 

But since x is a datetime index list, the function returns an error. Anyone have an idea?

I could use linregress from scipy.stats, but I am wondering if this is possible with Pandas.

Thanks Greg

+7
source share
1 answer

The problem is that you cannot pass Index to ols .
Change it to 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--------------------------------- 
+5
source

All Articles