如何使用 statsmodels mnlogit 模型指定预测?
How to specify a prediction using statsmodels mnlogit model?
我是 运行 一个 mnlogit
回归,我想做一些预测。
我的数据位于 pandas DataFrame
命名状态,其中包含两列年龄和 final_state(以及其他)。
import statsmodels.formula.api as smf
result = smf.mnlogit(
formula = 'final_state ~ age ',
data = state[['age', 'final_state']],
).fit()
params = result.params
print result.summary()
我可以对用于估计的样本进行预测 运行:
prediction = result.predict()
但是,如果我想使用子样本或任何其他数据,如下所示:
prediction = result.predict(exog = state[['age']].query('age > 80'))
prediction = result.predict(exog = dict(age = [80, 90]))
prediction = result.predict(
exog = dict(age = state[['age']].query('age > 80').values))
prediction = result.predict(exog = state[['age']])
我总是遇到以下相同的错误:
File "/usr/lib/python2.7/dist-packages/statsmodels/base/model.py", line 772, in predict
exog = dmatrix(self.model.data.design_info.builder,
AttributeError: 'PandasData' object has no attribute 'design_info'
如何计算子样本或人工数据的预测?
answer 是由 jeffrey_the_wind 在第一个评论中给出的,谢谢。
I've just submitted this as a bug。事实证明 mnlogit
中没有公式行为的单元测试
不转换数据(而是手动添加常量)是一种解决方法:
from statsmodels.tools import add_constant
result.predict(add_constant(state['age']), transform=False)
我是 运行 一个 mnlogit
回归,我想做一些预测。
我的数据位于 pandas DataFrame
命名状态,其中包含两列年龄和 final_state(以及其他)。
import statsmodels.formula.api as smf
result = smf.mnlogit(
formula = 'final_state ~ age ',
data = state[['age', 'final_state']],
).fit()
params = result.params
print result.summary()
我可以对用于估计的样本进行预测 运行:
prediction = result.predict()
但是,如果我想使用子样本或任何其他数据,如下所示:
prediction = result.predict(exog = state[['age']].query('age > 80'))
prediction = result.predict(exog = dict(age = [80, 90]))
prediction = result.predict(
exog = dict(age = state[['age']].query('age > 80').values))
prediction = result.predict(exog = state[['age']])
我总是遇到以下相同的错误:
File "/usr/lib/python2.7/dist-packages/statsmodels/base/model.py", line 772, in predict
exog = dmatrix(self.model.data.design_info.builder,
AttributeError: 'PandasData' object has no attribute 'design_info'
如何计算子样本或人工数据的预测?
answer 是由 jeffrey_the_wind 在第一个评论中给出的,谢谢。
I've just submitted this as a bug。事实证明 mnlogit
不转换数据(而是手动添加常量)是一种解决方法:
from statsmodels.tools import add_constant
result.predict(add_constant(state['age']), transform=False)