Python 2.7 - statsmodels - formatieren und schreiben zusammenfassende Ausgabe

8

Ich mache eine logistische Regression mit pandas 0.11.0 (Datenverarbeitung) und statsmodels 0.4.3 , um die eigentliche Regression auf Mac OSX Lion durchzuführen.

Ich werde ~ 2.900 verschiedene logistische Regressionsmodelle laufen lassen und die Ergebnisse in einer CSV-Datei ausgeben und auf eine bestimmte Art und Weise formatieren.

Momentan weiß ich nur, dass print result.summary() die Ergebnisse (wie folgt) an die Shell ausgibt:

%Vor%

Ich benötige auch die Odds Ratio, die von print np.exp(result.params) berechnet wird und in der Shell als solche gedruckt wird:

%Vor%

Was ich brauche, ist, dass diese in eine CSV-Datei in Form einer sehr langen Zeile geschrieben werden (bin mir nicht sicher, ob ich an dieser Stelle Dinge wie Log-Likelihood brauche, aber ich habe sie für die der Gründlichkeit):

%Vor%

Ich denke, Sie bekommen das Bild - eine sehr lange Reihe mit all diesen tatsächlichen Werten und eine Überschrift mit allen Spaltenbezeichnungen in einem ähnlichen Format.

Ich bin mit dem csv module in Python vertraut und werde mit pandas vertrauter. Nicht sicher, ob diese Informationen in pandas dataframe formatiert und gespeichert und dann mit to_csv in eine Datei geschrieben werden können, wenn alle ~ 2.900 logistischen Regressionsmodelle abgeschlossen sind; das wäre sicher in Ordnung. Außerdem ist es auch möglich, sie so zu schreiben, wie jedes Modell fertiggestellt ist (mit csv module ).

UPDATE:

Also habe ich mehr auf statsmodels Seite geschaut, um herauszufinden, wie die Ergebnisse eines Modells in Klassen gespeichert werden. Es scheint, als gäbe es eine Klasse namens "Ergebnisse", die verwendet werden muss. Ich denke, die Verwendung von Vererbung aus dieser Klasse zum Erstellen einer anderen Klasse, wo einige der Methoden / Operatoren geändert werden, könnte der Weg sein, um die erforderliche Formatierung zu erhalten. Ich habe sehr wenig Erfahrung in der Art, dies zu tun, und muss ziemlich viel Zeit damit verbringen, dies herauszufinden (was in Ordnung ist). Wenn jemand helfen kann / mehr Erfahrung hat, wäre das großartig!

Hier ist die Site, auf der die Klassen angeordnet sind: statsmodels results class

    
DMML 23.05.2013, 04:19
quelle

3 Antworten

7

Es gibt keine vorgefertigte Tabelle mit Parametern und deren Ergebnisstatistiken, die derzeit verfügbar sind.

Im Wesentlichen müssen Sie alle Ergebnisse selbst stapeln, egal ob in einer Liste, einem numpy Array oder Pandas DataFrame, hängt davon ab, was für Sie bequemer ist.

Wenn ich beispielsweise ein numpy Array mit den Ergebnissen für ein Modell, llf und Ergebnisse in der Übersichts-Parametertabelle haben möchte, könnte ich

verwenden %Vor%

Aber es könnte besser sein, sich mit Pandas auszurichten, je nachdem, welche Struktur du über Modelle hinweg hast.

Sie könnten eine Hilfsfunktion schreiben, die alle Ergebnisse aus der Ergebnisinstanz übernimmt und sie in einer Zeile verkettet.

(Ich bin nicht sicher, was am bequemsten ist, um nach Zeilen in csv zu schreiben)

Bearbeiten:

Hier ist ein Beispiel, in dem die Regressionsergebnisse in einem Datenrahmen gespeichert werden

Ссылка

Die Schleife befindet sich in Zeile 159.

summary () und ähnlicher Code außerhalb von statsmodels, zum Beispiel Ссылка zum Kombinieren mehrerer Ergebnisse, ist auf Drucken ausgerichtet und nicht auf Speichern Variablen.

    
user333700 25.05.2013, 23:58
quelle
2

Wenn Sie Koeffizientenergebnisse finden möchten.params gibt Ihnen Koeffizienten. Wenn Sie pvalues ​​finden möchten, verwenden Sie results.pvalues. In jedem Fall können Sie mit dir (results) alle Attribute eines Objekts herausfinden.

    
Atendra 07.07.2014 14:09
quelle
1

Ich fand diese Formulierung etwas unkomplizierter. Sie können Spalten hinzufügen / subtrahieren, indem Sie der Syntax aus den Beispielen folgen (pvals, coeff, conf_lower, conf_higher).

%Vor%     
Afflatus 21.04.2016 01:06
quelle