matlab 动态因子模型估计

wh6knrhe  于 2023-08-06  发布在  Matlab
关注(0)|答案(1)|浏览(261)

我正在寻找一个基于Python或Matlab的软件包,它可以估计以下模型的参数:


的数据
在最初的论文中,他们引用了Koop的this代码。我遇到的问题是,这个程序以及来自Python的statsmodel的标准包估计了以下形式的DFM:



与本文中的模型不同的是,如果我们有两个因素,那么A_1是二维的,但在我想要估计的模型中,我们只想估计a_11并假设a_12 = 0。有没有一个软件包可以估计这样的模型?

hgc7kmma

hgc7kmma1#

在Statmodels中有两种方法可以做到这一点,尽管每种方法都有权衡:
(1)如果你对误差项有1个滞后(即如果可以让e(i,t)= \phi(i,1)e(i,t-1)+ u(i,t),从你链接的“模型”方程中),那么你可以使用DynamicFactorMQ类。对于两个独立演变的因子,可以使用以下公式:

mod = sm.tsa.DynamicFactorMQ(y, factors=['f1', 'f2'],
                             factor_orders={'f1':1, 'f2':1},
                             idiosyncratic_ar1=True)
res = mod.fit()

字符串
有关factorsfactor_orders参数如何工作的更多详细信息,请参阅此处。基本上,通过指定factor_orders={'f1':1, 'f2':1}而不是factor_orders={('f1', 'f2'):1}(如果不指定任何内容,则为默认值),因子将单独演化(与对角A矩阵相同)。
(2)否则,如果你没有太多的左侧变量,你可以使用带有固定参数的DynamicFactor类:

mod = sm.tsa.DynamicFactor(std, factor_order=1, k_factors=2,
                           error_order=1,
                           enforce_stationarity=False)
with mod.fix_params({'L1.f2.f1': 0, 'L1.f1.f2': 0}):
    res = mod.fit()


在本例中,当您执行mod.fix_params({'L1.f2.f1': 0, 'L1.f1.f2': 0})时,您指定a_12 = a_21 = 0。有关使用fix_params的更多详细信息,请参阅here
但总的来说,上面选项(1)中的DynamicFactorMQ类更健壮,可能是更好的选择。

相关问题