2013-01-16 19 views
7

Veri serilerime bir eğilim çizgisine uyacak şekilde pandalar OLS işlevini kullanmak istiyorum. Datetime endeksini OLS'deki pandalar Serisinden öngörücü olarak kullanmayı bilen var mı? x olarakpanda ile OLS: yordayıcı olarak datetime endeksi

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

Ama:

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

Ben belirleyicisi olarak dizini kullanarak Üzerinde OLS yapmak istiyorum: Örneğin

, ben basit zaman serileri var diyelim datetime endeksinin bir listesi, fonksiyon bir hata verir. Herkesin bir fikri var mı?

scipy.stats'dan linregress özelliğini kullanabilirim ama Panda'larla mümkün olup olmadığını merak ediyorum.

sayesinde Greg

cevap

5

Sorun, Indexols geçememektedirler olmasıdır. Bir Series için
değiştirme it: Yardımlarınız için

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

çok teşekkür ederiz! – leroygr

+2

Bu çözüm artık işe yaramayabilir (2 yıl sonra). Buraya bakın: http://stackoverflow.com/questions/30425490/linear-regression-from-time-series-pandas/30431930#30431930 Muhtemelen değişiklikler nedeniyle pandalar datetime endeksini yaptı? – JohnE