Mit predict() auf statsmodels.Formel Daten mit unterschiedlichen Spaltennamen mit Python Pandas
Habe ich einige Regressionen Ergebnisse aus Laufenden statsmodels.formula.api.ols
. Hier ist ein Spielzeug-Beispiel:
import pandas as pd
import numpy as np
import statsmodels.formula.api as smf
example_df = pd.DataFrame(np.random.randn(10, 3))
example_df.columns = ["a", "b", "c"]
fit = smf.ols('a ~ b', example_df).fit()
Möchte ich das Modell auf Spalte c
, aber naive Versuch, das zu tun funktioniert nicht:
fit.predict(example_df["c"])
Hier ist die exception die ich bekomme:
PatsyError: Error evaluating factor: NameError: name 'b' is not defined
a ~ b
^
Kann ich etwas grob, und erstellen Sie eine neue, temporäre DataFrame
in die ich benennen Sie die Spalte von Interesse:
example_df2 = pd.DataFrame(example_df["c"])
example_df2.columns = ["b"]
fit.predict(example_df2)
Gibt es eine bessere Möglichkeit, dies zu tun? (kurze Umstellung der statsmodels.api
statt statsmodels.formula.api
)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie ein Wörterbuch:
oder erstellen Sie ein numpy-array für die Vorhersage, obwohl das viel komplizierter, wenn es kategorische erklärende Variablen:
Wenn Sie ersetzen Ihre
fit
definition mit dieser Zeile:Sollte es funktionieren.
example_df["c"] * fit.params[1] + fit.params[0]
.fit.predict
zu sein scheint, ignoriert das argument. Bekomme ich die gleiche Ausgabe wenn ichfit.predict(None)
.