Sto eseguendo la regressione logistica utilizzando pandas 0.11.0
(gestione dati) e statsmodels 0.4.3
per eseguire la regressione effettiva, su Mac OSX Lion.Python 2.7 - statsmodels - formattazione e scrittura dell'output di sintesi
Ho eseguito ~ 2.900 diversi modelli di regressione logistica e ho bisogno dell'output dei risultati nel file csv e formattato in un modo particolare.
Attualmente, sto solo a conoscenza di fare print result.summary()
che stampa i risultati (come segue) alla 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
===============================================================================
mi dovrà anche l'odds ratio, che viene calcolato dal print np.exp(result.params)
, e viene stampato nella shell in quanto tale:
age_age5064 0.818842
age_age6574 0.774648
sex_female 0.777667
stage_early 0.832098
access 0.989859
dtype: float64
cosa ho bisogno è per queste ciascuna da scrivere in un file CSV in forma di una fila lon molto simile (non sono sicuro, a questo punto, se ho bisogno di cose come Log-Likelihood
, ma l'ho incluso per il bene di completezza):
`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`
Penso che si ottiene l'immagine - una lunghissima fila, con tutti questi valori reali, e un colpo di testa con tutte le designazioni di colonna in un formato simile.
Ho familiarità con lo csv module
in Python e sto diventando più familiare con pandas
. Non sono sicuro se queste informazioni possano essere formattate e archiviate in un e quindi scritte, utilizzando to_csv
in un file una volta completati tutti i ~ 2.900 modelli di regressione logistica; questo andrebbe bene. Inoltre, anche la loro scrittura dopo il completamento di ciascun modello è soddisfacente (utilizzando csv module
).
UPDATE:
Così, stavo guardando più al sito statsmodels, in particolare cercando di capire come i risultati di un modello vengono memorizzati all'interno delle classi. Sembra che esista una classe chiamata "Risultati", che dovrà essere utilizzata. Penso che usare l'ereditarietà di questa classe per creare un'altra classe, dove alcuni dei metodi/operatori vengano cambiati potrebbe essere la strada da percorrere, per ottenere la formattazione richiesta. Ho pochissima esperienza nel modo di farlo, e avrò bisogno di dedicare un po 'di tempo a capirlo (che va bene). Se qualcuno può aiutare/ha più esperienza sarebbe fantastico!
Ecco il sito dove le classi sono disposti: statsmodels results class
Aggiunto un aggiornamento alla fine di questa domanda. Per favore dai un'occhiata! – DMML
Se si considera la risposta all'aggiornamento, si prega di considerare una risposta autonoma. – Jacinda