对于使用截距/漂移和线性趋势建模的时间序列,哪个 Dickey-Fuller 检验?

机器算法验证 时间序列 平稳性 单位根 增强的 dickey-fuller
2022-02-15 23:34:53

简洁版本:

我有一个时间序列的气候数据,我正在测试它的平稳性。根据之前的研究,我预计数据基础(或“生成”,可以这么说)数据的模型具有截距项和正的线性时间趋势。为了测试这些数据的平稳性,我应该使用包含截距和时间趋势的 Dickey-Fuller 检验,即等式 #3吗?

$\nabla y_t = \alpha_0+\alpha_1t+\delta y_{t-1}+u_t$

或者,我是否应该使用仅包含截距的 DF 检验,因为我认为方程的第一个差异是模型只有截距的基础?

长版:

如上所述,我有一个时间序列的气候数据,我正在测试其平稳性。根据之前的研究,我预计数据背后的模型具有截距项、正线性时间趋势和一些正态分布的误差项。换句话说,我希望底层模型看起来像这样:

$y_t = a_0 + a_1t + \beta y_{t-1} + u_t $

其中$u_t$是正态分布的。由于我假设基础模型同时具有截距和线性时间趋势,因此我使用简单的 Dickey-Fuller 测试的方程 #3测试了单位根,如下所示:

$\nabla y_t = \alpha_0+\alpha_1t+\delta y_{t-1}+u_t$

该测试返回一个临界值,这将导致我拒绝原假设并得出基础模型是非平稳的结论。但是,我质疑我是否正确应用了这一点,因为即使假设基础模型具有截距和时间趋势,但这并不意味着第一个差异$\nabla y_t$也会如此。恰恰相反,事实上,如果我的数学是正确的。

根据假设的基础模型的方程计算一阶差分得到: $\nabla y_t = y_t - y_{t-1} = [a_0 + a_1t + \beta y_{t-1} + u_t] - [a_0 + a_1 (t-1) + \beta y_{t-2} + u_{t-1}]$

$\nabla y_t = [a_0 - a_0] + [a_1t - a_t(t-1)] + \beta[y_{t-1} - y_{t-2}] + [u_t - u_{t-1}] $

$\nabla y_t = a_1 + \beta \cdot \nabla y_{t-1} + u_t - u_{t-1}$

因此,第一个差异$\nabla y_t$似乎只有截距,而不是时间趋势。

我认为我的问题与这个问题相似,但我不确定如何将该答案应用于我的问题。

样本数据:

这是我正在使用的一些示例温度数据。

64.19749  
65.19011  
64.03281  
64.99111  
65.43837  
65.51817  
65.22061  
65.43191  
65.0221  
65.44038  
64.41756  
64.65764  
64.7486  
65.11544  
64.12437  
64.49148  
64.89215  
64.72688  
64.97553  
64.6361  
64.29038  
65.31076  
64.2114  
65.37864  
65.49637  
65.3289  
65.38394  
65.39384  
65.0984  
65.32695  
65.28  
64.31041  
65.20193  
65.78063  
65.17604  
66.16412  
65.85091  
65.46718  
65.75551  
65.39994  
66.36175  
65.37125  
65.77763  
65.48623  
64.62135  
65.77237  
65.84289  
65.80289  
66.78865  
65.56931  
65.29913  
64.85516  
65.56866  
64.75768  
65.95956  
65.64745  
64.77283  
65.64165  
66.64309  
65.84163  
66.2946  
66.10482  
65.72736  
65.56701  
65.11096  
66.0006  
66.71783  
65.35595  
66.44798  
65.74924  
65.4501  
65.97633  
65.32825  
65.7741  
65.76783  
65.88689  
65.88939  
65.16927  
64.95984  
66.02226  
66.79225  
66.75573  
65.74074  
66.14969  
66.15687  
65.81199  
66.13094  
66.13194  
65.82172  
66.14661  
65.32756  
66.3979  
65.84383  
65.55329  
65.68398  
66.42857  
65.82402  
66.01003  
66.25157  
65.82142  
66.08791  
65.78863  
66.2764  
66.00948  
66.26236  
65.40246  
65.40166  
65.37064  
65.73147  
65.32708  
65.84894  
65.82043  
64.91447  
65.81062  
66.42228  
66.0316  
65.35361  
66.46407  
66.41045  
65.81548  
65.06059  
66.25414  
65.69747  
65.15275  
65.50985  
66.66216  
66.88095  
65.81281  
66.15546  
66.40939  
65.94115  
65.98144  
66.13243  
66.89761  
66.95423  
65.63435  
66.05837  
66.71114 
3个回答

您需要考虑时间序列水平的漂移和(参数/线性)趋势,以便根据时间序列的一阶差分来指定增强的 Dickey-Fuller 回归中的确定性项。混淆正是由于以您所做的方式推导一阶差分方程。

(增强)Dickey-Fuller 回归模型

假设序列的水平包括漂移和趋势项 $$ Y_t = \beta_{0,l} + \beta_{1,l} t + \beta_{2, l}Y_{t-1} + \varepsilon_ {t} $$ 在这种情况下,非平稳性的原假设是 $\mathfrak{H}_0{}:{}\beta_{2, l} = 1$。

此数据生成过程 [DGP] 隐含的第一个差异的一个方程是您导出的方程 $$ \Delta Y_t = \beta_{1,l} + \beta_{2, l}\Delta Y_{t -1} + \Delta \varepsilon_{t} $$ 但是,这不是测试中使用的(增强的)Dickey Fuller 回归。

相反,正确的版本可以通过从第一个方程的两边减去 $Y_{t-1}$ 得到 $$ \begin{align} \Delta Y_t &= \beta_{0,l} + \beta_{ 1,l} t + (\beta_{2, l}-1)Y_{t-1} + \varepsilon_{t} \\ &\equiv \beta_{0,d} + \beta_{1,d}t + \beta_{2,d}Y_{t-1} + \varepsilon_{t} \end{align} $$ 是(增强的)Dickey-Fuller 回归,非平稳性原假设的等价版本是测试 $\mathfrak{H}_0{}:{}\beta_{2, d}=0$ 这只是使用上述回归中 $\beta_{2, d}$ 的 OLS 估计的 t 检验。请注意,本规范中的漂移和趋势保持不变。

另外需要注意的一点是,如果不确定时间序列的各个层次是否存在线性趋势,那么可以联合检验线性趋势和单位根,即$\mathfrak{H}_0 {}:{}[\beta_{2, d}, \beta_{1,l}]' = [0, 0]'$,可以使用具有适当临界值的 F 检验进行检验。ur.df这些测试和临界值由包中的 R 函数生成urca

让我们详细考虑一些例子。

例子

1.使用美投系列

第一个示例使用Lutkepohl 和 Kratzig (2005, pg. 9)中讨论的美国投资系列。该系列的情节及其第一个区别如下所示。

在此处输入图像描述

从该系列的水平来看,它似乎具有非零均值,但似乎没有线性趋势。因此,我们继续进行带有截距的增强 Dickey Fuller 回归,以及因变量的三个滞后来解释序列相关性,即:$$ \Delta Y_t = \beta_{0,d} + \beta_{2, d}Y_{t-1} + \sum_{j=1}^3 \gamma_j \Delta Y_{tj} + \varepsilon_{t} $$ 请注意我查看水平以指定回归方程的关键点在差异。

执行此操作的 R 代码如下所示:

    library(urca)
    library(foreign)
    library(zoo)

    tsInv <- as.zoo(ts(as.data.frame(read.table(
      "http://www.jmulti.de/download/datasets/US_investment.dat", skip=8, header=TRUE)), 
                       frequency=4, start=1947+2/4))
    png("USinvPlot.png", width=6,
        height=7, units="in", res=100)
    par(mfrow=c(2, 1))
    plot(tsInv$USinvestment)
    plot(diff(tsInv$USinvestment))
    dev.off()

    # ADF with intercept
    adfIntercept <- ur.df(tsInv$USinvestment, lags = 3, type= 'drift')
    summary(adfIntercept)

结果表明,使用基于估计系数的 t 检验可以拒绝该序列的非平稳性原假设。截距和斜率系数的联合 F 检验 ($\mathfrak{H}{}:{}[\beta_{2, d}, \beta_{0,l}]' = [0, 0]'$ ) 也拒绝序列中存在单位根的原假设。

2.使用德式(log)消费系列

第二个例子是使用德国季度季节性调整的(对数)消费时间序列。该系列的情节及其差异如下所示。

在此处输入图像描述

从序列的水平,很明显序列有趋势,所以我们将趋势包括在增强的 Dickey-Fuller 回归中以及一阶差分的四个滞后以解释序列相关性,即 $$\Delta Y_t = \beta_{0,d} + \beta_{1,d}t + \beta_{2,d}Y_{t-1} + \sum_{j=1}^4 \gamma_j \Delta Y_{tj} + \varepsilon_{t} $$

执行此操作的 R 代码是

# using the (log) consumption series
tsConsump <- zoo(read.dta("http://www.stata-press.com/data/r12/lutkepohl2.dta"), frequency=1)
png("logConsPlot.png", width=6,
    height=7, units="in", res=100)
par(mfrow=c(2, 1))
plot(tsConsump$ln_consump)
plot(diff(tsConsump$ln_consump))
dev.off()

# ADF with trend
adfTrend <- ur.df(tsConsump$ln_consump, lags = 4, type = 'trend')
summary(adfTrend)

结果表明,基于估计系数的t检验不能拒绝非平稳性的零点。线性趋势系数和斜率系数的联合 F 检验 ($\mathfrak{H}{}:{}[\beta_{2, d}, \beta_{1,l}]' = [0, 0] '$) 也表示不能拒绝非平稳性的空值。

3. 使用给定的温度数据

现在我们可以评估您的数据的属性。下面给出了通常的水平图和一阶差分。

在此处输入图像描述

这些表明您的数据具有截距和趋势,因此我们使用以下 R 代码执行 ADF 测试(没有滞后的一阶差分项)

# using the given data
tsTemp <- read.table(textConnection("temp 
64.19749  
65.19011  
64.03281  
64.99111  
65.43837  
65.51817  
65.22061  
65.43191  
65.0221  
65.44038  
64.41756  
64.65764  
64.7486  
65.11544  
64.12437  
64.49148  
64.89215  
64.72688  
64.97553  
64.6361  
64.29038  
65.31076  
64.2114  
65.37864  
65.49637  
65.3289  
65.38394  
65.39384  
65.0984  
65.32695  
65.28  
64.31041  
65.20193  
65.78063  
65.17604  
66.16412  
65.85091  
65.46718  
65.75551  
65.39994  
66.36175  
65.37125  
65.77763  
65.48623  
64.62135  
65.77237  
65.84289  
65.80289  
66.78865  
65.56931  
65.29913  
64.85516  
65.56866  
64.75768  
65.95956  
65.64745  
64.77283  
65.64165  
66.64309  
65.84163  
66.2946  
66.10482  
65.72736  
65.56701  
65.11096  
66.0006  
66.71783  
65.35595  
66.44798  
65.74924  
65.4501  
65.97633  
65.32825  
65.7741  
65.76783  
65.88689  
65.88939  
65.16927  
64.95984  
66.02226  
66.79225  
66.75573  
65.74074  
66.14969  
66.15687  
65.81199  
66.13094  
66.13194  
65.82172  
66.14661  
65.32756  
66.3979  
65.84383  
65.55329  
65.68398  
66.42857  
65.82402  
66.01003  
66.25157  
65.82142  
66.08791  
65.78863  
66.2764  
66.00948  
66.26236  
65.40246  
65.40166  
65.37064  
65.73147  
65.32708  
65.84894  
65.82043  
64.91447  
65.81062  
66.42228  
66.0316  
65.35361  
66.46407  
66.41045  
65.81548  
65.06059  
66.25414  
65.69747  
65.15275  
65.50985  
66.66216  
66.88095  
65.81281  
66.15546  
66.40939  
65.94115  
65.98144  
66.13243  
66.89761  
66.95423  
65.63435  
66.05837  
66.71114"), header=T)
tsTemp <- as.zoo(ts(tsTemp, frequency=1))

png("tempPlot.png", width=6,
    height=7, units="in", res=100)
par(mfrow=c(2, 1))
plot(tsTemp$temp)
plot(diff(tsTemp$temp))
dev.off()

# ADF with trend
adfTrend <- ur.df(tsTemp$temp, type = 'trend')
summary(adfTrend)

t 检验和 F 检验的结果表明,温度序列的非平稳性零值可以被拒绝。我希望这能澄清一些事情。

Dickey-Fuller 检验中的原假设是过程中存在单位根。因此,当您拒绝零时,您会发现您的过程是静止的(通常需要注意假设检验)。

关于你的数学,表达式 $$\nabla y_t=\alpha_0+\alpha_1 t+\delta y_{t-1}+u_t$$

并不意味着$\nabla y_t$ 有趋势。要说这个过程有趋势,它的定义必须只包括那个过程。在前面的等式中,一侧有 $\nabla y_t$,另一侧有 $y_{t-1}$。当您用 $\nabla y_{t-1}$ 表示 $y_{t-1}$ 时,您正确地得出结论,如果初始过程是平稳的,则差分过程中没有趋势。

以前的答案非常好。

您通常会根据情节来决定实施哪个测试。在这种情况下,数据似乎具有截距和趋势。

如果您在水平上测试单位根,您将使用截距和趋势模型。如果您在差异中运行测试,您将只使用截距模型。

我刚刚回答了这个问题,因为我必须建议您对这些数据使用季节性测试。这些测试非常复杂(处理季节性并不容易)。但是,数据的性质(温度)以及因为在图中您可以观察到一些季节性行为。然后,如果您希望您的估计是稳健的,您应该研究 HEGY 测试并实施它。