2

私はデータフレームを持っていますdf:

[250 rows x 120 columns]
                    0         1         2         3         4         5   \
lag time [s]                                                               
0.041667      0.038638  0.193427  0.126253  0.058737  0.122129  0.117425   
0.083333      0.104397  0.323418  0.390540  0.194786  0.247005  0.242796   
0.125000      0.168620  0.577642  0.782489  0.389399  0.381930  0.325373   
0.166667      0.241057  0.912038  1.361542  0.560007  0.346316  0.343614   
0.208333      0.246506  0.636547  1.863711  0.767916  0.487872  0.203043   
...

各列のラグタイムにy = a*x合わせる必要がありますx=df.index.values

一部の列には NaN が含まれている可能性があり、異なる結果を pd.DataFrame({'column' : [],'slope' : [], 'stderr' : [] })

個別xyデータを抽出し、numpy を使用してデータを適合させることはできますfitline()が、これは面倒に思えます。

panda ols を使用して仕事をするためのより良い方法はありますか?

4

1 に答える 1

2

ラグタイムを指標として保持する必要がありますか? 最も簡単な方法は、おそらくそれをデータフレームの列として組み込み、statsmodels の数式インターフェイスを使用することです。

import statsmodels.formula.api as sm

df2 = df.reset_index()

modres = {}
for colname in df2.drop('index', axis=1).columns:
    mod = sm.ols(formula=colname+' ~ index', data=df2)
    modres[colname] = mod.fit()

リストのデータフレームを要求されましたが、ほとんどの情報を破棄するよりも、各回帰からの結果オブジェクト全体を保持する方が理にかなっていると思います。私の提案は、回帰結果の辞書を保存します。y1 ~ x回帰の係数と標準誤差にアクセスするには、と を記述modres['y1'].paramsmodres['y1'].bseます。

オブジェクトを内省すると、各結果オブジェクトから AIC や t-stats などを取得できることがわかります。statsmodelsまた、予測やバックキャスティングなどのために、それらを他の多くの関数に渡すこともできます。

于 2014-01-30T14:17:21.663 に答える