Python 2.7 - statsmodels - formatowanie i pisanie podsumowania
Używam regresji logistycznejpandas 0.11.0
(obsługa danych) istatsmodels 0.4.3
zrobić rzeczywistą regresję na Mac OSX Lion.
Będę uruchamiał ~ 2900 różnych modeli regresji logistycznej i będzie potrzebował wyników do pliku csv i sformatowany w określony sposób.
Obecnie wiem tylko o tymprint result.summary()
który wypisuje wyniki (w następujący sposób) do powłoki:
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
===============================================================================
Potrzebuję również ilorazu szans obliczonego przezprint np.exp(result.params)
i jest drukowany w powłoce jako taki:
age_age5064 0.818842
age_age6574 0.774648
sex_female 0.777667
stage_early 0.832098
access 0.989859
dtype: float64
Potrzebuję, aby każdy z nich został zapisany w pliku csv w postaci bardzo wiersza takiego jak (nie jestem pewien, czy w tym momencie będę potrzebował takich rzeczy jakLog-Likelihood
, ale uwzględniliśmy to ze względu na dokładność):
`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`
Myślę, że otrzymujesz obraz - bardzo długi wiersz ze wszystkimi tymi rzeczywistymi wartościami i nagłówek ze wszystkimi oznaczeniami kolumn w podobnym formacie.
Znam tocsv module
w Pythonie i jestem coraz bardziej zaznajomionypandas
. Nie wiesz, czy te informacje mogą być sformatowane i zapisane w apandas dataframe
a następnie napisane, używającto_csv
do pliku po zakończeniu wszystkich ~ 2900 modeli regresji logistycznej; z pewnością byłoby dobrze. Również zapisywanie ich po zakończeniu każdego modelu jest również w porządku (przy użyciucsv module
).
AKTUALIZACJA:
Szukałem więc więcej na stronie statsmodels, szczególnie próbując dowiedzieć się, jak wyniki modelu są przechowywane w klasach. Wygląda na to, że istnieje klasa o nazwie „Wyniki”, która będzie musiała zostać użyta. Myślę, że użycie dziedziczenia z tej klasy do stworzenia innej klasy, w której niektóre metody / operatory zostaną zmienione, może być dobrym rozwiązaniem, aby uzyskać wymagane formatowanie. Mam bardzo małe doświadczenie w tym zakresie i będę musiał poświęcić trochę czasu na to, aby to zrozumieć (co jest w porządku). Jeśli ktoś może pomóc / ma więcej doświadczenia, to byłoby niesamowite!
Oto strona, w której są ułożone klasy:klasa wyników statsmodels