如何使用statsmodels.formula.api的logit实现样本内预测
statsmodels logit模型样本内预测正确用法
错误核心原因
你的两次报错是两个基础使用错误导致的:
- 仅完成了模型实例化,没有执行拟合步骤获取模型参数
predict方法的params参数使用逻辑完全错误,该参数用于传入已经拟合好的数值型系数数组,不能传入变量名或公式字符串
正确实现代码
import statsmodels.formula.api as smf # 初始化logit模型 model_logit = smf.logit(formula="dep ~ var1 + var2 + var3", data=model_data) # 拟合模型得到参数,该步骤为必填项,否则没有可用于预测的计算依据 result_logit = model_logit.fit() # 样本内预测:不传任何参数时,默认直接使用训练数据集做预测 yhat_in_sample = result_logit.predict()
如果需要显式指定用训练集预测,也可以手动传入训练数据:
yhat_in_sample = result_logit.predict(data=model_data)
原代码报错说明
- 第一段代码报错:你给
params参数传入了字符串列表,和该参数要求的数值型系数数组类型不匹配,触发数值计算类错误 - 第二段代码报错:你给
params参数传入了公式字符串,底层计算时尝试用字符串执行乘法运算,直接触发numpy的运算类型不匹配错误
内容的提问来源于stack exchange,提问作者vojta
相关产品推荐
相关产品推荐

