将保存的参数(Pandas 系列)加载到 Statsmodels state-space 模型中

Loading saved params (a Pandas series) into a Statsmodels state-space model

我正在使用优秀的 python 包 statsmodels 构建一个动态因子模型,我想 pickle 一个估计的参数向量,这样我可以稍后再次构建模型,并加载那些参数进去。 (C.f,Chad Fulton 制作的笔记本:https://github.com/ChadFulton/tsa-notebooks/blob/master/dfm_coincident.ipynb.

在下面的代码块中,使用 mod.fit()(使用 Powell 算法)估计初始参数,然后返回给 mod.fit() 以使用以下方法完成估计(使用 EM 算法)初始参数为 initial_res.params。 (后者是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)

我想 pickle res.params(同样,一个小的 Pandas 系列,以及一个小的磁盘占用空间)。然后再次从头开始构建模型,并将我保存的参数加载到其中,而无需重新估计模型。有人知道怎么做吗?

我看到的示例建议对结果对象进行 pickling res,但这可以节省很多。从头开始构建它非常简单,但估计需要一段时间。从保存的最优参数开始估计可能更快;但是,这仍然很业余,对吧?

TIA, 德鲁

您可以在任何状态 space 模型上使用 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)