我在Mac OSX Lion上使用pandas 0.11.0
(数据处理)和statsmodels 0.4.3
进行逻辑回归来进行实际的回归。
我将运行大约2900个不同的logistic回归模型,需要将结果输出到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
===============================================================================
我还需要比值比,它由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
我需要的是将它们以非常长的行的形式写入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`
我想你得到的图片-一个非常长的行,包含所有这些实际值,以及一个标题,其中包含类似格式的所有列名称。
我熟悉Python中的csv module
,并且越来越熟悉pandas
。不确定这些信息是否可以格式化并存储在pandas dataframe
中,然后在所有~2900个逻辑回归模型完成后使用to_csv
将其写入文件;这当然可以。另外,在每个模型完成时编写它们也很好(使用csv module
)。
更新:
所以,我更关注statsmodels站点,特别是想弄清楚一个模型的结果是如何存储在类中的。似乎有一个名为“Results”的类需要使用。我认为使用这个类的继承来创建另一个类,其中一些方法/运算符可能会发生更改,以便获得所需的格式。我在这方面没有什么经验,需要花很多时间来解决这个问题(这很好)。如果有人能帮忙/有更多的经验那就太棒了!
这里是类的布局位置:statsmodels results class
我发现这个公式有点直截了当。通过遵循示例中的语法(pvals、coeff、conf_lower、conf_higher),可以添加/减去列。
当前没有参数及其结果统计信息的预制表。
本质上,您需要自己堆叠所有结果,无论是在列表、numpy数组还是pandas数据帧中,这取决于什么对您更方便。
例如,如果我想要一个numpy数组,它在summary参数表中包含模型的结果llf和结果,那么我可以使用
不过,根据不同模型的结构,最好与熊猫保持一致。
您可以编写一个helper函数,从results实例中获取所有结果并将它们连接成一行。
(我不确定哪种方式最方便按行写入csv)
编辑:
下面是一个将回归结果存储在数据帧中的示例
https://github.com/statsmodels/statsmodels/blob/master/statsmodels/sandbox/multilinear.py#L21
回路在159号线上。
summary()和statsmodels之外的类似代码,例如用于组合多个结果的http://johnbeieler.org/py_apsrtable/,面向打印而不是存储变量。
顺便说一下,您可以使用dir(results)查找对象的所有属性
相关问题 更多 >
编程相关推荐