4

によって生成された結果から変数の名前にアクセスしようとしていますstatsmodels。サンプルコードの後でさらに詳しく説明します。

import scikits.statsmodels.api as sm
import pandas as pd
data = sm.datasets.longley.load()
df = pd.DataFrame(data.exog, columns=data.exog_name)
y = data.endog
df['intercept'] = 1.
olsresult = sm.OLS(y, df).fit()

この要約出力には、変数名が含まれています。olsresult.paramsのようなものを呼び出すと、次のように返されます。

In [21]: olsresult.params
Out[21]: 
GNPDEFL           15.061872
GNP               -0.035819
UNEMP             -2.020230
ARMED             -1.033227
POP               -0.051104
YEAR            1829.151465
intercept   -3482258.634596

今、私が興味を持っているのは、変数名をキーとして、パラメーター値を値として持つ辞書のようなものを作成することです。だから、のようなものなど{'GNPDELF':15.0618, 'GNP':-0.035819}。これを行うことが不可能な場合、変数の名前と値に個別にアクセスする他の方法はありますか?

4

2 に答える 2

6

明白なことを試す価値は常にあります..:^)

In [14]: olsresult.params
Out[14]: 
GNPDEFL           15.061872
GNP               -0.035819
UNEMP             -2.020230
ARMED             -1.033227
POP               -0.051104
YEAR            1829.151465
intercept   -3482258.634597

In [15]: dict(olsresult.params)
Out[15]: 
{'ARMED': -1.0332268671737328,
 'GNP': -0.035819179292614578,
 'GNPDEFL': 15.061872271452557,
 'POP': -0.051104105653539733,
 'UNEMP': -2.0202298038172479,
 'YEAR': 1829.151464613984,
 'intercept': -3482258.6345966831}

オブジェクトの.to_dict()メソッドも参照してください。Series

于 2012-08-06T21:41:15.663 に答える
5

olsresult.paramsは、dictのようなpandas.Seriesオブジェクトです。おそらく、dictに変換する必要はありません。

In [12]: olsresult.params.get('GNP')
Out[12]: -0.035819179292566283

In [13]: olsresult.params['GNP']
Out[13]: -0.035819179292566283

In [14]: for key, value in olsresult.params.iteritems():
   ....:     print key, value
   ....:
GNPDEFL 15.0618722714
GNP -0.0358191792926
UNEMP -2.02022980382
ARMED -1.03322686717
POP -0.0511041056537
YEAR 1829.15146461
intercept -3482258.6346
于 2012-08-07T10:04:04.987 に答える