2017-04-17 22 views
1

多くのOLS回帰(〜1.600)を実行する必要があります。 〜1.600回の観測ごとに60データ点を収集しました。複数のOLS回帰をPythonで実行する

私はFama &フランス語の5因子モデルを使用しています。ここでは、観測ごとに60データポイントがサンプルの日付と一致しています。例えば。私は、開始日['2010-1-1']から終了日['2015-1-1']までの5つの要因パラメータをデータフレームに持っています。

特定の株式の株式リターンに対してこれらのパラメータを実行する必要があります。今度は、5つの要素のパラメータが、96.000行(1600 * 60)と5つの列(各要素)でデータフレームに収集されるため、最初の60回の観測を選択し、OLSを使用して、推定された係数を格納してから、係数パラメータと株価指数の両方について次のの観測値を選択します。

start = 0 
stop = 59 

empty_list = [] 

for i in my_data: 
    coef = my_date[i][start:stop] 
    # run regression with the coef slice and store them in a dataframe 
    start += 60 
    stop += 60 

しかし、私はこの仕事を得るように見えることはできません。

私のようなスライス使って試してみました。どのようにこれを解決するための任意の提案?

答えて

1

使用groupby + np.arange() // 60

from statsmodels.api import formula 
import pandas as pd 

df = pd.DataFrame(
    np.random.randn(96000, 6), 
    columns=['f1', 'f2', 'f3', 'f4', 'f5', 'r'] 

) 

f = 'r ~ f1 + f2 + f3 + f4 + f5' 

def regress(df, f): 
    return formula.ols(f, df).fit().params 

results = df.groupby(np.arange(len(df)) // 60).apply(regress, f=f) 

results.head() 

    Intercept  f1  f2  f3  f4  f5 
0 -0.108910 0.205059 0.006981 0.088200 0.064486 -0.003423 
1 0.155242 -0.057223 -0.097207 -0.098114 0.163142 -0.029543 
2 0.014305 -0.123687 -0.120924 0.017383 -0.168981 0.090547 
3 -0.254084 -0.063028 -0.092831 0.137913 0.185524 -0.088452 
4 0.025795 -0.126270 0.043018 -0.064970 -0.034431 0.081162 
+0

これは素晴らしい私がやりたいことのようなもの、のように見えます!しかし、このスクリプトは、5つの要因についてサンプル全体を回帰させず、60で除算しますか? –

+0

@MBV_DK番号それは一度に回帰の60です – piRSquared

+0

あなたは、英雄です。どうもありがとう! –

関連する問題