1

我正在尝试进行面板回归

from linearmodels.panel import PooledOLS
import statsmodels.api as sm

但我的索引遇到了问题。对于回归,我需要一个 Multiindex,所以我有一个虚拟变量和时间(见下文)。这两个指标是 a_c(我分析的所有 10 个国家的虚拟变量)和 Timestamp(日期)。

                i_ct    preemu  postemu  γ1             γ2
α_c Timestamp   

10  2020-06-24  -0.04   0.00    0.02    -1.110223e-16   2.000000e-02
    2020-06-25  0.05    0.00    -0.04   -1.000000e-02   1.000000e-02
    2020-06-26  0.02    0.00    0.05    0.000000e+00    1.000000e-02
    2020-06-29  0.00    0.00    0.02    -2.000000e-02   -1.110223e-16
    2020-06-30  0.08    0.00    0.00    2.000000e-02    -6.000000e-02   

当我运行回归时

exog_vars = ['preemu','postemu','γ1','γ2']
exog = sm.add_constant(beta_panel[exog_vars])
mod = PooledOLS(beta_panel.i_ct, exog)
pooled_res = mod.fit()
print(pooled_res)

我收到此错误:

ValueError: The index on the time dimension must be either numeric or date-like

但是当时间戳不在索引中时,我会收到此错误:

Series can only be used with a 2-level MultiIndex

任何人都知道为什么它会抛出第一个错误?

4

2 回答 2

1

提供的示例中的时间维度索引看起来像一个字符串。将其转换为日期格式或数字格式应该可以。

另请注意,实体索引按顺序排在第一位,时间维度在多索引中排在第二位,就像提供的示例正确完成一样。

一个可能导致错误的小疏忽。

于 2021-03-18T18:21:53.063 回答
0

将字符串日期时间类型更改为数值(我尝试将其更改为时间戳或其他时间数据类型,但错误仍然存​​在),例如:2021/01/31更改为20210131. 然后它工作。

于 2021-03-09T03:09:04.393 回答