DMM*_*MML 10 python python-2.7 pandas statsmodels
我在Mac OSX Lion上使用pandas 0.11.0
(数据处理)进行逻辑回归并statsmodels 0.4.3
进行实际回归.
我将运行~2,900种不同的逻辑回归模型,需要将结果输出到csv文件并以特定方式格式化.
目前,我只知道做了print result.summary()
哪些打印结果(如下)到shell:
Logit Regression Results
==============================================================================
Dep. Variable: death_death No. Observations: 9752
Model: Logit Df Residuals: 9747
Method: MLE Df Model: 4
Date: Wed, 22 May 2013 Pseudo R-squ.: -0.02672
Time: 22:15:05 Log-Likelihood: -5806.9
converged: True LL-Null: -5655.8
LLR p-value: 1.000
===============================================================================
coef std err z P>|z| [95.0% Conf. Int.]
-------------------------------------------------------------------------------
age_age5064 -0.1999 0.055 -3.619 0.000 -0.308 -0.092
age_age6574 -0.2553 0.053 -4.847 0.000 -0.359 -0.152
sex_female -0.2515 0.044 -5.765 0.000 -0.337 -0.166
stage_early -0.1838 0.041 -4.528 0.000 -0.263 -0.104
access -0.0102 0.001 -16.381 0.000 -0.011 -0.009
===============================================================================
Run Code Online (Sandbox Code Playgroud)
我还需要比值比,由比率计算print np.exp(result.params)
,并打印在shell中:
age_age5064 0.818842
age_age6574 0.774648
sex_female 0.777667
stage_early 0.832098
access 0.989859
dtype: float64
Run Code Online (Sandbox Code Playgroud)
我需要的是将这些文件以非常类似的形式写入csv文件中(我不确定,此时,我是否需要类似的东西Log-Likelihood
,但为了彻底而包含它):
`Log-Likelihood, age_age5064_coef, age_age5064_std_err, age_age5064_z, age_age5064_p>|z|,...age_age6574_coef, age_age6574_std_err, ......access_coef, access_std_err, ....age_age5064_odds_ratio, age_age6574_odds_ratio, ...sex_female_odds_ratio,.....access_odds_ratio`
Run Code Online (Sandbox Code Playgroud)
我想你得到的图片 - 一个非常长的行,包含所有这些实际值,以及一个标题,所有列的名称都采用相似的格式.
我熟悉csv module
Python,并且越来越熟悉了pandas
.不确定这些信息是否可以格式化并存储在一个pandas dataframe
然后写入,to_csv
一旦所有约2,900个逻辑回归模型完成,就使用文件; 那肯定会好的.此外,在每个模型完成时编写它们也很好(使用csv module
).
更新:
所以,我更多地关注statsmodels网站,特别是试图弄清楚模型的结果是如何存储在类中的.看起来有一个名为'Results'的类,需要使用它.我认为使用这个类的继承来创建另一个类,其中一些方法/运算符被改变可能是要走的路,以获得我需要的格式.我在这方面的经验很少,并且需要花费相当多的时间来解决这个问题(这很好).如果有人可以帮助/有更多的经验,那将是非常棒的!
这是布置类的站点:statsmodels结果类
目前没有预制的参数表及其结果统计数据.
基本上你需要自己堆叠所有结果,无论是在列表,numpy数组还是pandas中DataFrame取决于什么对你更方便.
例如,如果我想要一个具有模型结果的numpy数组,llf并在summary参数表中生成结果,那么我可以使用
res_all = []
for res in results:
low, upp = res.confint().T # unpack columns
res_all.append(numpy.concatenate(([res.llf], res.params, res.tvalues, res.pvalues,
low, upp)))
Run Code Online (Sandbox Code Playgroud)
但是,与大熊猫对齐可能会更好,具体取决于您在模型中的结构.
您可以编写一个辅助函数,该函数从结果实例中获取所有结果并将它们连接起来.
(我不确定按行写csv最方便的是什么)
编辑:
以下是将回归结果存储在数据框中的示例
https://github.com/statsmodels/statsmodels/blob/master/statsmodels/sandbox/multilinear.py#L21
循环在第159行.
summary()和statsmodels之外的类似代码,例如http://johnbeieler.org/py_apsrtable/,用于组合多个结果,面向打印而不是存储变量.
write_path = '/my/path/here/output.csv'
with open(write_path, 'w') as f:
f.write(result.summary().as_csv())
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16983 次 |
最近记录: |