如何获取Statsmodels MixedLM拟合后的模型参数数组以调用predict方法?
解决statsmodels MixedLM.predict的参数困惑
嘿,别担心,这个问题其实很容易解决!你已经通过model.fit()得到了result对象,它里面就藏着你需要的参数数组——直接用result.params就可以了,根本不用额外去计算或者提取。
先给你补全代码,一看就懂:
import statsmodels.api as sm # 你的原有拟合代码 y = raw_data['dependent_var'] X = raw_data[['var1', 'var2', 'var3']] groups = raw_data['person_id'] model = sm.MixedLM(endog=y, exog=X, groups=groups) result = model.fit() # 获取predict需要的参数数组 fitted_params = result.params # 1. 对训练数据做预测(两种方式都可以) # 方式一:手动传入参数 train_preds = result.predict(fitted_params) # 方式二:更省事,默认会用拟合好的参数,不用手动传 train_preds = result.predict() # 2. 对新数据做预测 # 假设你有新数据集new_data,特征要和训练时保持一致 new_X = new_data[['var1', 'var2', 'var3']] # 如果新数据也有分组信息,记得传入groups参数 new_groups = new_data['person_id'] new_preds = result.predict(fitted_params, exog=new_X, groups=new_groups)
这里再额外提两个关键点:
result.params包含的是模型的固定效应参数,随机效应的估计值存在result.random_effects里,但predict方法会自动结合这两部分来计算预测值,不用你手动处理随机效应的参数。- 如果你不给
predict传params,它默认就会使用拟合好的result.params,所以大部分情况下直接调用result.predict()就足够了,除非你想手动指定不同的参数来做模拟预测。
内容的提问来源于stack exchange,提问作者Roald Schuring
相关产品推荐
相关产品推荐

