2016-05-20 4 views
1

Ich bin (was ich denke) als ziemlich geradlinige multiple lineare Regressionsmodell passen mit Stats-Modell.Statsmodel Mehrere lineare Regressionsfehler - Python

Mein Code ist wie folgt:

y = 'EXITS|20:00:00' 
all_columns = "+".join(y_2015piv.columns - ['EXITS|20:00:00']) 
reg_formula = "y~" + all_columns 

lm= smf.ols(formula=reg_formula, data=y_2015piv).fit() 

Weil ich etwa 30 Faktor Variablen ich die Formel Erstellen von String-Manipulation mit Python. "y" ist wie oben dargestellt. all_columns ist der Datenrahmen y_2015piv columns ohne "y".

Dies ist all_columns:

DAY_Fri+DAY_Mon+DAY_Sat+DAY_Sun+DAY_Thu+DAY_Tue+DAY_Wed+ENTRIES|00:00:00+ENTRIES|04:00:00+ENTRIES|08:00:00+ENTRIES|12:00:00+ENTRIES|16:00:00+ENTRIES|20:00:00+EXITS|00:00:00+EXITS|04:00:00+EXITS|08:00:00+EXITS|12:00:00+EXITS|16:00:00+MONTH_Apr+MONTH_Aug+MONTH_Dec+MONTH_Feb+MONTH_Jan+MONTH_Jul+MONTH_Jun+MONTH_Mar+MONTH_May+MONTH_Nov+MONTH_Oct+MONTH_Sep 

Die Werte in dem Datenrahmen kontinuierlich sind numerische Variablen und 0/1 Dummy-Variablen.

Wenn ich versuche, und passen das Modell, das ich diesen Fehler:

PatsyError: numbers besides '0' and '1' are only allowed with ** 
    y~DAY_Fri+DAY_Mon+DAY_Sat+DAY_Sun+DAY_Thu+DAY_Tue+DAY_Wed+ENTRIES|00:00:00+ENTRIES|04:00:00+ENTRIES|08:00:00+ENTRIES|12:00:00+ENTRIES|16:00:00+ENTRIES|20:00:00+EXITS|00:00:00+EXITS|04:00:00+EXITS|08:00:00+EXITS|12:00:00+EXITS|16:00:00+MONTH_Apr+MONTH_Aug+MONTH_Dec+MONTH_Feb+MONTH_Jan+MONTH_Jul+MONTH_Jun+MONTH_Mar+MONTH_May+MONTH_Nov+MONTH_Oct+MONTH_Sep 

Es gibt nichts auf der Linie, die Adressen, was das sein könnte. Jede Hilfe wird geschätzt.

Übrigens, wenn ich dieses Modell in Scikit-lernen, funktioniert es gut. Ich denke, die Daten sind in Ordnung.

Vielen Dank im Voraus.

Antwort

0

patsy behandelt das Parsen der Formel und analysiert den String und interpretiert ihn als Formel mit der angegebenen Syntax. Einige Elemente in der Zeichenfolge sind daher nicht zulässig, da sie Teil der Formel-Syntax sind. Sie sollen nur die Namen zu behalten, Patsy hat auch einen Code für die Namen wie wörtliche Text Q nehmen, die sonst in diesem Fall http://patsy.readthedocs.io/en/latest/builtins-reference.html#patsy.builtins.Q

arbeiten sollten, wenn Sie bereits die vollständige Design-Matrix mit allen Dummy-Variablen haben, dann gibt es kein Grund, die Formelschnittstelle zu durchlaufen. Mit Hilfe der direkten Schnittstelle mit Pandas Datenrahmen oder numpy Arrays:

sm.OLS(y, x)

keine Namen von Datenrahmen Spalten ignorieren Ausnahme als Zeichenfolgen in der Übersichtstabelle verwenden. Variablen/Spaltennamen werden auch verwendet, um Einschränkungen für t_test zu definieren, aber diese gehen auch durch Patsy und ich bin nicht sicher, ob es mit Sonderzeichen in den Namen funktioniert.

+0

Mit der 'Q' Notation funktionierte immer noch nicht. Ich habe einen anderen Fehler bekommen.Wie auch immer, wenn ich die direkte Schnittstelle verwendet habe, wie Sie vorgeschlagen haben. Es funktionierte gut mit den Variablennamen wie es ist. Vielen Dank! – Windstorm1981

1

Der erste Fehler, den ich erhielt, war diese:

PatsyError: numbers besides '0' and '1' are only allowed with ** 
Temp ~ MEI+ CO2+ CH4+ N2O+ CFC-11+ CFC-12+ TSI+ Aerosols 
           ^^ 

Nach diesem Link: http://patsy.readthedocs.io/en/latest/builtins-reference.html#patsy.builtins.Q Sie Q verwenden können („var“) in der Formel des Fehlers loszuwerden. Ich bekam den gleichen Fehler, aber es wurde gelöst.

linMod = smf.ols('Temp ~ MEI+ CO2+ CH4+ N2O+ Q("CFC-11")+ Q("CFC-12")+ TSI+ Aerosols',data = trainingSet).fit() 

Dies ist die gelöste Codezeile. Ich hatte versucht

linMod = smf.ols('Temp ~ MEI+ CO2+ CH4+ N2O+ Q("CFC-11 + CFC-12")+ TSI+ Aerosols',data = trainingSet).fit() 

, aber das hat nicht funktioniert. Es scheint, dass bei der Verwendung von Formeln die Zahlen und Variablen eine bestimmte Bedeutung haben, die die Verwendung bestimmter Namen nicht erlaubt. in meinem Fall war der Fehler:

PatsyError: Error evaluating factor: NameError: no data named 'CFC-11+ CFC-12' found 
Temp ~ MEI+ CO2+ CH4+ N2O+ Q("CFC-11+ CFC-12")+ TSI+ Aerosols 
          ^^^^^^^^^^^^^^^^^^^ 
Verwandte Themen