如何使统计模型glm.fit_constrained结果可拾取/可存储和可重载

问题描述 投票:0回答:1

可以使用statsmodels的glm.fit_constrained()方法轻松运行带有参数约束的GLS(因此也可以是OLS)回归,如https://stackoverflow.com/a/41928276中所述。

我如何使可从statsmodels glm fit_constrained()回归得到的GLMresults对象可腌制,以便以后可以在任何新会话中存储估计结果以供重新使用以进行预测?

从fit_constrained()获得并包含相关估计结果的GLMresults对象具有其.save()方法,该方法通常很容易将其腌制到文件中。

此.save()用于标准(不受约束的)GLM回归sm.glm.fit()的结果。但是,它不适用于sm.glm.fit_unconstrained()的结果。相反,它引发了一个酸洗错误,这似乎是因为patsy DesignMatrixBuilder不可酸洗,因此它链接到从未解析的enter link description here。至少对于我的Python 3.6.3(在Windows上运行)而言。似乎是由于使用了一些混乱的DesignMatrixBuilder元素和fails to allow pickling already since many years

是否有一种方法可以使fit_unconstrained()的结果易于存储?

我在下面提出第一个解决方法的答案;到目前为止,这是微不足道的,对我来说效果很好。但是,我不知道这是否真的值得建议,或者它的风险是否很大和/或是否存在任何更可取的替代解决方案。

python pickle reload statsmodels glm
1个回答
0
投票
\ env \ Lib \ site-packages \ statsmodels \ genmod \ generalized_linear_model.py)。

忽略这一行似乎对我的工作没有任何影响;现在,我可以轻松保存并重新加载腌制的文件,并根据存储的估算值使用它做出正确的预测;重新加载后,仍会遵守所施加的参数约束,并且使用.predict()进行的预测仍保持不变。

我不知道此程序是否存在任何重大风险。我对statsmodels库的内部工作,特别是其glm.fit_constrained()方法不熟悉。我认为不建议更改一个现有模块中不了解的任何内容。但是,这是我能够方便地对我的GLM参数施加各种约束并能够保存回归结果以便在以后的会话中方便地将其重新用于预测的唯一方法。
© www.soinside.com 2019 - 2024. All rights reserved.