我正在使用出色的python包statsmodels
构建一个动态因子模型,我想提取一个估计的参数向量,以便稍后再次构建模型,并将这些参数加载到其中https://github.com/ChadFulton/tsa-notebooks/blob/master/dfm_coincident.ipynb.)
在下面的代码块中,使用mod.fit()
(使用Powell算法(估计初始参数,然后将初始参数返回给mod.fit()
以使用初始参数作为initial_res.params
来完成估计(使用EM算法(。(后者是Pandas系列。(
mod = sm.tsa.DynamicFactor(endog, k_factors=1, factor_order=2, error_order=2)
initial_res = mod.fit(method='powell', disp=False)
res = mod.fit(initial_res.params)
我想pickleres.params
(同样是一个小的Pandas系列和一个小磁盘占用空间(。然后,稍后再次从头开始构建模型,并将我保存的参数加载到其中,而无需重新估计模型。有人知道怎么做吗?
我看到的示例建议对结果对象res
进行酸洗,但这可能是一个相当大的节省。从头开始构建它非常简单,但估计需要一段时间。从保存的最优参数开始的估计可能更快;不过,这还是相当业余的,对吧?
TIA,Drew
您可以在任何状态空间模型上使用smooth
方法来根据特定参数构造结果对象。在您的示例中:
mod = sm.tsa.DynamicFactor(endog, k_factors=1, factor_order=2, error_order=2)
initial_res = mod.fit(method='powell', disp=False)
res = mod.fit(initial_res.params)
res.params.to_csv(...)
# ...later...
params = pd.read_csv(...)
res = mod.smooth(params)