2016-06-21 3 views
2

私は何か基本的なものを欠いていると思います。しかし、ここに私の質問です。私は25日間の時系列データを持っています、私は時系列であるY値とdatetimeインデックスであるX値でOLS回帰を実行したいと思います。pandasで日時オブジェクトシリーズが独立した値(x)のOLS回帰を実行する方法

df['jDate'] = df.index.to_julian_date() 
ols(x=df.jDate, y=df.abc) 

コンプリート次のようになります:ここに私のコードが

import pandas as pd 
from pandas.stats.api import ols 

indx = [Timestamp('2015-06-01 00:00:00'), Timestamp('2015-06-02 00:00:00'), Timestamp('2015-06-03 00:00:00'), Timestamp('2015-06-04 00:00:00'), Timestamp('2015-06-05 00:00:00'), Timestamp('2015-06-06 00:00:00'), Timestamp('2015-06-07 00:00:00'), Timestamp('2015-06-08 00:00:00'), Timestamp('2015-06-09 00:00:00'), Timestamp('2015-06-10 00:00:00'), Timestamp('2015-06-11 00:00:00'), Timestamp('2015-06-12 00:00:00'), Timestamp('2015-06-13 00:00:00'), Timestamp('2015-06-14 00:00:00'), Timestamp('2015-06-15 00:00:00'), Timestamp('2015-06-16 00:00:00'), Timestamp('2015-06-17 00:00:00'), Timestamp('2015-06-18 00:00:00'), Timestamp('2015-06-19 00:00:00'), Timestamp('2015-06-20 00:00:00'), Timestamp('2015-06-21 00:00:00'), Timestamp('2015-06-22 00:00:00'), Timestamp('2015-06-23 00:00:00'), Timestamp('2015-06-24 00:00:00'), Timestamp('2015-06-25 00:00:00')] 
col = [51.219999999999999, 51.189999999999998, 51.210000000000001, 51.229999999999997, 51.219999999999999, 51.219999999999999, 51.219999999999999, 51.229999999999997, 51.240000000000002, 51.219999999999999, 51.200000000000003, 51.200000000000003, 51.200000000000003, 51.219999999999999, 51.219999999999999, 51.219999999999999, 51.219999999999999, 51.270000000000003, 51.280000000000001, 51.280000000000001, 51.299999999999997, 51.299999999999997, 51.280000000000001, 51.280000000000001, 51.270000000000003] 
df = pd.DataFrame(col,index=indx,columns=['abc']) 
sumstat = ols(y=df['abc'],x=df.index) 

あるインデックスはdatetime型のオブジェクト

Exception: Invalid RHS type: <class 'pandas.tseries.index.DatetimeIndex'> 

答えて

0

はあなたのコードにこれを追加しているので、私は以下のエラーを取得

import pandas as pd 
from pandas.stats.api import ols 

indx = [Timestamp('2015-06-01 00:00:00'), Timestamp('2015-06-02 00:00:00'), Timestamp('2015-06-03 00:00:00'), Timestamp('2015-06-04 00:00:00'), Timestamp('2015-06-05 00:00:00'), Timestamp('2015-06-06 00:00:00'), Timestamp('2015-06-07 00:00:00'), Timestamp('2015-06-08 00:00:00'), Timestamp('2015-06-09 00:00:00'), Timestamp('2015-06-10 00:00:00'), Timestamp('2015-06-11 00:00:00'), Timestamp('2015-06-12 00:00:00'), Timestamp('2015-06-13 00:00:00'), Timestamp('2015-06-14 00:00:00'), Timestamp('2015-06-15 00:00:00'), Timestamp('2015-06-16 00:00:00'), Timestamp('2015-06-17 00:00:00'), Timestamp('2015-06-18 00:00:00'), Timestamp('2015-06-19 00:00:00'), Timestamp('2015-06-20 00:00:00'), Timestamp('2015-06-21 00:00:00'), Timestamp('2015-06-22 00:00:00'), Timestamp('2015-06-23 00:00:00'), Timestamp('2015-06-24 00:00:00'), Timestamp('2015-06-25 00:00:00')] 
col = [51.219999999999999, 51.189999999999998, 51.210000000000001, 51.229999999999997, 51.219999999999999, 51.219999999999999, 51.219999999999999, 51.229999999999997, 51.240000000000002, 51.219999999999999, 51.200000000000003, 51.200000000000003, 51.200000000000003, 51.219999999999999, 51.219999999999999, 51.219999999999999, 51.219999999999999, 51.270000000000003, 51.280000000000001, 51.280000000000001, 51.299999999999997, 51.299999999999997, 51.280000000000001, 51.280000000000001, 51.270000000000003] 
df = pd.DataFrame(col,index=indx,columns=['abc']) 
df['jDate'] = df.index.to_julian_date() 
sumstat = ols(x=df.jDate, y=df.abc) 
+0

これは機能します。ありがとう。しかし、単純な日時フォーマットを使用すると何が間違っていましたか?私は、julian_date()関数がdatetimeをintに変換することを観察します。 –

+0

は、計算に数値が必要です。日付は数字ではありません。 'to_julian_date'は、トレンド回帰を行うときの直感に一致する数値に変換するのに非常に合理的な方法です。すなわち、「2016-03-31」から「2016-04-01」は、ある日の変化を構成します。それをやったもう一つの方法は、タイムディスタのリストであったであろう日付の最初の違いを取ることでした。これらを数日または数秒に変換します。私は提案した方法が最も単純で意味があると感じました。 – piRSquared

+0

はそれを得ました!あなたの礼拝に感謝します –

関連する問題