I have some regression results from the launch statsmodels.formula.api.ols. Here is an example of a toy:
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()
I would like to apply the model to a column c, but a naive attempt to do this does not work:
fit.predict(example_df["c"])
Here is the exception I get:
PatsyError: Error evaluating factor: NameError: name 'b' is not defined
a ~ b
^
I can do something rude and create a new, temporary DataFrameone in which I renamed the column of interest:
example_df2 = pd.DataFrame(example_df["c"])
example_df2.columns = ["b"]
fit.predict(example_df2)
Is there a cleaner way to do this? (not until switching to statsmodels.apiinstead statsmodels.formula.api)
source
share