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)

InformationsquelleAutor kuzzooroo | 2015-03-12
Schreibe einen Kommentar