如何使用Python检查面板数据中的单位根?

sma*_*rds 4 python statistics

我正在从事时间序列分析,并且有 2021 年每个月 700 个单独区域的销售数据(我们将其称为 df_panel,因为我们的面板数据结构)。例如

区域 销售量
1区 一月 1000
1区 二月 2000年
1区 集市 3000
2区 一月 1000
2区 二月 2000年
2区 集市 1400
3区 一月 1000
3区 二月 1200
3区 集市 1400

通常,在处理销售数据时,您可以使用 ADF 测试等方法来检查销售数据中的单位根。我知道如何在 Python 中对标准非面板数据结构执行此操作,例如使用数据帧 df 上 statsmodels 的 adfuller 函数:

adf_test_result = adfuller(df["Sales"])[1]
Run Code Online (Sandbox Code Playgroud)

我怎样才能对我的面板数据结构做类似的事情,因为它由 700 条单独的销售曲线(每个区域一条)组成。目标是使用面板数据回归(固定或随机效应)

一种近似方法是将我的面板数据销售曲线总结为一条销售曲线,并对其进行 ADF 测试:

adf_test_result = adfuller(df_panel.groupby("Month").sum()["Sales"])
Run Code Online (Sandbox Code Playgroud)

但我认为这会大大高估销售数据中单位根的概率。当对 700 个单独区域进行这样的汇总时,销售数据中的大量信息会丢失。

另一种近似可能是检查每个单独区域的单位根并以某种方式取平均值(?)

不太确定这里最好的是什么......

在 R 中,有一个函数包plm实现purtest了几个测试程序,这些测试程序已被提议用面板数据测试单位根假设,例如 Levin、Lin 和 Chu (2002) 的“levinlin”,Im、Pesaran 和 Shin 的“ips”( 2003),“madwu”代表 Maddala 和 Wu(1999),“hadri”代表 Hadri(2000)。

有谁知道如何估计面板数据结构的单位根?以及如何在 Python 中实现这一点?

小智 5

似乎可能没有一个广泛可用的 Python 包来对面板数据进行单位根测试(至少我找不到)。

您似乎熟悉进行此类测试的适当方法,但为了其他读者的利益,我将提供一些包含更多信息的链接:

如果您能够切换到 R 或 Stata,这可能是解决您问题的最佳解决方案。如果你想坚持使用 Python,你的选择似乎包括:

  • 自己实现面板数据单元测试(一项艰巨的任务)
  • 从 Python 调用非 Python 库(我的建议)

对于第二个选项,这里是从 Python 调用 R 的快速说明:https://medium.com/analytics-vidhya/calling-r-from-python-magic-of-rpy2-d8cbbf991571

正如您所提到的,R函数中的包plm中存在此测试的实现purtest: https: //rdrr.io/cran/plm/man/purtest.html