class: center, middle, inverse, title-slide .title[ # 第十二讲:时间序列回归和预测导论 ] .author[ ### 文旷宇 ] .institute[ ### 华中科技大学 ] --- <style type="text/css"> pre{ max-height:400px; overflow-y:auto; } </style>
### 主要内容 - 利用回归模型进行预测 - 时间序列和序列相关性导论 - 滞后、一阶差分、对数和增长率 - 自相关 - 自回归 - 一阶自回归模型 - `\(p\)` 阶自回归模型 - 滞后长度选取 - 非平稳性 - 伪样本外预测 --- ###利用回归模型进行预测 .panelset[ .panel[.panel-name[] .panel[.panel-name[Code] ```r # 加载AER包,这个包提供了很多数据集和函数 library(AER) # 加载CASchools数据集。这个数据集包含了关于加利福尼亚州学校的一些信息,比如学生人数、教师人数、阅读和数学成绩等 data(CASchools) # 创建一个新的变量STR,它是学生人数(students)和教师人数(teachers)的比值 CASchools$STR <- CASchools$students/CASchools$teachers # 创建一个新的变量score,它是阅读成绩(read)和数学成绩(math)的平均值 CASchools$score <- (CASchools$read + CASchools$math)/2 # 使用lm()函数建立了一个线性回归模型,其中score是因变量,STR是自变量。这个模型试图解释学校的平均成绩(score)与学生-教师比率(STR)之间的关系 mod <- lm(score ~ STR, data = CASchools) # mod这个对象包含了线性回归模型的所有信息,比如回归系数、标准误、p值等 mod ``` ] .panel[.panel-name[Output] ``` ## ## Call: ## lm(formula = score ~ STR, data = CASchools) ## ## Coefficients: ## (Intercept) STR ## 698.93 -2.28 ``` ] ] .panel[.panel-name[注] - `\(\widehat{TestScore}=698.9-2.28\times STR\)` - 前面我们学习了学生/教师比对测试成绩因果效应的估计 - 如学校负责人考虑雇佣更多教师以缩小班级规模 - 但是由于可能遗漏了决定测试成绩且与误差项相关的变量 - 该式在因果效应估计方面用处不大 - 但是即使不具有因果关系,回归模型也能用于预测 - 本章我们将学习运用时间序列预测未来事件 - 如搬迁后父母利用现在和过去的测试成绩预测未来的测试成绩 - 假设一个学区平均班级有25个学生,父母可以借此预测明年考试成绩 ] .panel[.panel-name[] .panel[.panel-name[Code] ```r # 根据模型对新数据进行预测 # 用一个已经拟合好的模型mod来预测一个新数据点,其中新数据点的特征是 STR 值为 25 predict(mod, newdata = data.frame("STR" = 25)) ``` ] .panel[.panel-name[Output] ``` ## 1 ## 641.9377 ``` ] ]] --- ###时间序列数据和序列相关性导论 - 时间序列变量 `\(Y\)` 在时间 `\(t\)` 上的观测记为 `\(Y_t\)` ,总观测次数记为 `\(T\)` - `\(Y_{t-1}\)` : `\(Y\)` 的前一期值,称<font color=darkred>一阶滞后值/一阶滞后</font> - `\(Y_{t-j}\)` : `\(Y\)` 的 `\(j\)` 期前取值,称<font color=darkred> `\(j\)` 阶滞后值/ `\(j\)` 阶滞后</font> - `\(Y_{t+1}\)` :未来一期的 `\(Y\)` 值 - `\(Y_t-Y_{t-1}\)` : `\(t-1\)` 期和 `\(t\)` 期间 `\(Y\)` 值的变化,称为变量 `\(Y_t\)` 的<font color=darkred>一阶差分 `\(\Delta Y_t\)` </font> - `\(Y_t\)` 对数的<font color=darkred>一阶差分</font>为 `$$\Delta ln(Y_t)=ln(Y_t)-ln(Y_{t-1})$$` - `\(Y_t\)` 在 `\(t-1\)` 期和 `\(t\)` 期间的<font color=darkred>百分率变化</font>近似等于 `\(100\Delta ln(Y_t)\)` - `\(\Delta ln(Y_t)=ln(Y_t)-ln(Y_{t-1})=ln(\frac{Y_t}{Y_{t-1}})=ln(1+\frac{Y_t-Y_{t-1}}{Y_{t-1}})\approx \frac{Y_t-Y_{t-1}}{Y_{t-1}}\)` - 变换后的序列变化是原始序列变化的百分率;百分率变化越小近似越准确 --- ###时间序列数据和序列相关性导论 - 下面以美国2004年4季度的通货膨胀率数据为例,说明**滞后、变化和百分率变化** |||||| |:---:|:---:|:---:|:---:|:---:| |季度|美国CPI|年通货膨胀率|一阶滞后|通货膨胀率变化| |2004:Ⅰ|186.57|3.8|0.9|2.9| |2004:Ⅱ|188.60|4.4|3.8|0.6| |2004:Ⅲ|189.37|1.6|4.4|-2.8| |2004:Ⅳ|191.03|3.5|1.6|1.9| .panelset.sideways[ .panel[.panel-name[1] - 从2004年第一季度到第二季度,百分率增长为 `$$100\times(188.60-186.57)\div186.57=1.09\%$$` - 基于2004:Ⅱ得年通货膨胀率为 `$$1.09\times4=4.36\approx4.4$$` ] .panel[.panel-name[2] - 百分率变化还可以用对数差分近似计算: `$$(ln188.60-ln186.57)\times100\%=0.0108\times100\%=1.08\%$$` - 此时年通货膨胀率为 `$$1.08\times4=4.32\approx4.3$$` ]] --- ###其他经济时间序列 .panelset[ .panel[.panel-name[例] - 失业率: <https://fred.stlouisfed.org/graph/?g=1eM8D> - 美国失业率的变动主要与其经济周期相联系 - 失业率在经济衰退期间上升,在经济复苏和增长期间下降 - 实际国民生产总值GDP: <https://fred.stlouisfed.org/graph/?g=1eM7L> - `\(log(GDP)、log(tbill)\)` 见代码图 ] .panel[.panel-name[] .panel[.panel-name[Code] ```r library(AER) data(USMacroSWQ) data("USMacroG") data("NYSESW") # 设置图形布局为2行2列 par(mfrow = c(2, 2)) # 绘制失业率图 plot((USMacroG[,"unemp"]), col = "steelblue", lwd = 2, ylab = "US Unemployment Rate", xlab = "Date", main="美国失业率曲线" ) # 绘制GDP的对数 plot(log(USMacroSWQ[, "gdp"]), col = "steelblue", lwd = 2, ylab = "Logarithm of GDP", xlab = "Date", main="GDP对数图" ) # 绘制tbill的对数 # tbill:3 个月国库券利率。每日日期的季度平均值(以年率的百分比表示)。 plot(log(USMacroSWQ[, "tbill"]), col = "forestgreen", lwd = 2, ylab = "Logarithm of tbill", xlab = "Date", main="3个月国库券利率图" ) # 绘制纽约组合市场指数图 plot(diff(log(NYSESW)), col = "steelblue", lwd = 2, ylab = "Percent per Day", xlab = "Date", main = "纽约股票交易价格指数图", cex.main = 1.4) ``` ] .panel[.panel-name[Output] ![](Lecture_12_Time_Series_Introduction_files/figure-html/unnamed-chunk-4-1.png)<!-- --> ] ] .panel[.panel-name[例] - `\(NYSESW\)` 组合市场指数 - 纽约股票交易所交易的所有公司股份价格的综合指数 - 代码图画出了1990年1月2日到2005年11月11日期间交易日内这个指数的日百分率变化(共4 003个观测值)。 - 这些日变化之间**几乎不存在序列相关性**;其本质上是不可预测的,但它的方差发生了变化.这个序列中存在“波动集群”现象。 - 如,1990—1991年和1998—2003年的日变化标准差相对较大,而1995年和2005年相对较小。 ]] --- ###自相关 - 时间序列数据中某一期的 `\(Y\)` 取值通常与下一期的 `\(Y\)` 取值相关 - 序列与其自身滞后值之间的相关性称为<font color=darkred>自相关/序列相关</font> - <font color=darkred> `\(j\)` 阶自相关(自相关系数/序列相关系数)</font>为 `\(Y_t,Y_{t-j}\)` 的相关系数 `$$\rho_j=corr(Y_t,Y_{t-j})=\frac{cov(Y_t,Y_{t-j})}{\sqrt{var(Y_t)var(Y_{t-j})}}$$` `$$\hat{\rho_j}=\frac{\widehat{cov(Y_t,Y_{t-j})}}{\widehat{var(Y_t)}}$$` - <font color=darkred> `\(j\)` 阶自协方差</font> `\(=cov(Y_t,Y_{t-j})\)` `$$\widehat{cov(Y_t,Y_{t-j})}=\frac{1}{T}\sum_{t=j+1}^{T}(Y_t-\bar Y_{j+1,T})(Y_{t-j}-\bar Y_{1,T-j})$$` --- ###自回归 - 生活中有很多利用自回归预测的例子 - 如预测明年的价格通货膨胀率,以预测整体价格的百分率上涨量 - 投资者决定如何支付债券时依赖于通货膨胀的预测 - 中央银行经济学家制定货币政策 - 公司预测产品销售 - 地方政府下一年度预算 - <font color=darkred>自回归</font>为联系时间序列变量及其过去值的回归模型 --- ###一阶自回归模型 - 预测时间序列未来值可以从最近的过去值出发 - 如用前一季度变化 `\(\Delta Inf_{t-1}\)` 预测这一季度通货膨胀变化 `\(\Delta Inf_t\)` 的系统方法是估计 `\(\Delta Inf_t\)` 关于 `\(\Delta Inf_{t-1}\)` 的 `\(OLS\)` 回归 `$$\widehat{\Delta Inf_t}=0.017-0.238\Delta Inf_{t-1}$$` - 这个模型称为<font color=darkred>一阶自回归</font> - 序列关于自身一阶滞后 `\(\Delta Inf_{t-1}\)` 的回归 - 简记为 `\(AR(1)\)` : `\(Y_t=\beta_0+\beta_1Y_{t-1}+u_i\)` - 对于 `\(GDP\)` 增长序列 - 一阶自回归模型仅使用上个季度观察到的 `\(GDP\)` 增长信息来预测未来的增长率 - `\(GDP\)` 增长的一阶自回归模型可以通过计算 `\(OLS\)` 估计值来估计 --- ###一阶自回归 `$$\widehat{GDPGR}_t=\hat \beta_0+\hat \beta_1GDPGR_{t-1}$$` .panelset[ .panel[.panel-name[] .panel[.panel-name[Code] ```r library(AER) data(USMacroSWQ) GDPGrowth <- 400 * log(USMacroSWQ[, "gdp"]/lag(USMacroSWQ[, "gdp"])) plot(GDPGrowth,col = "steelblue",main="GDP增长曲线") ``` ] .panel[.panel-name[Output] ![](Lecture_12_Time_Series_Introduction_files/figure-html/unnamed-chunk-5-1.png)<!-- --> ] ] .panel[.panel-name[] .panel[.panel-name[Code] ```r # 拟合自回归模型 # GDPGrowth是要拟合的数据 ar.ols(GDPGrowth, # 这个参数指定了最大滞后数,在这里设置为1,意味着模型将只考虑一阶自回归,即AR(1)模型。 order.max = 1, # 这个参数指定是否从数据中删除均值。在这里设置为 FALSE,表示不对数据进行去中心化(即不从数据中减去其均值)。 demean = F, # 这个参数指定模型是否包含截距项。在这里设置为 TRUE,表示模型将包含截距项。 intercept = T) # 计算时间序列 GDPGrowth 的长度,并将其存储在变量 N 中。 N <-length(GDPGrowth) # 将 GDPGrowth 时间序列转换为数值型向量,并移除第一个元素。结果存储在 GDPGR_level 中。 GDPGR_level <- as.numeric(GDPGrowth[-1]) # 将 GDPGrowth 转换为数值型向量,移除最后一个元素。这通常用于创建滞后项,即将当前值之前的值作为滞后变量。结果存储在 GDPGR_lags 中。 GDPGR_lags <- as.numeric(GDPGrowth[-N]) # 使用线性回归模型来估计自回归模型 armod <- lm(GDPGR_level ~ GDPGR_lags) armod # 对拟合的模型进行系数检验,获取系数的显著性检验结果。 coeftest(armod, vcov. = vcovHC, type = "HC1") ``` ] .panel[.panel-name[Output] ``` ## ## Call: ## ar.ols(x = GDPGrowth, order.max = 1, demean = F, intercept = T) ## ## Coefficients: ## 1 ## 0.3327 ## ## Intercept: -2.266 (0.324) ## ## Order selected 1 sigma^2 estimated as 14.11 ## ## Call: ## lm(formula = GDPGR_level ~ GDPGR_lags) ## ## Coefficients: ## (Intercept) GDPGR_lags ## -2.2657 0.3327 ## ## ## t test of coefficients: ## ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) -2.265708 0.382395 -5.9251 1.143e-08 *** ## GDPGR_lags 0.332731 0.072532 4.5874 7.407e-06 *** ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ``` ] ] .panel[.panel-name[注] - 因此,估计的模型为 `$$\widehat{GDPGR}_t=-\underset {\text{(0.3824)}}{2.2657}+ \underset {\text{(0.0725)}}{0.3327}GDPGR_{t-1}$$` - 我们省略了 `\(GDPGR_{1947 Q1}\)` - 从因变量的向量开始,因为 `\(GDPGR_{1947 Q1-1}=GDPGR_{1946 Q4}\)` - 同样,最后的观察 `\(GDPGR_{2005 Q4}\)` 也被从预测变量向量中排除 - 因为数据不包括 `\(GDPGR_{2005 Q4+1}=GDPGR_{2006 Q1}\)` - 即,在估计模型时,由于数据的时间序列结构,会丢失一个观测值。 ]] --- ###预测与预测误差 - 基于 `\(AR(1)\)` 模型的预测为: `\(\hat Y_{T+1|T}=\hat \beta_0+\hat \beta_1Y_T\)` - 预测误差 `\(=Y_{T+1}-\hat Y_{T+1|T}\)` - 由于预测造成的错误 - 预测误差 `\(\ne OLS\)` 残差 - <font color=darkred> `\(OLS\)` 残差</font>为 `\(Y\)` 的**实际值**与样本观测的**预期值**之差(实际数据点与回归线之间的差异) - <font color=darkred>预测误差</font>为 `\(Y\)` 的不在估计样本中的**未来值**与其**预测值**的差 - **预测** `\(\ne OLS\)` 预期值 - <font color=darkred> `\(OLS\)` 预期值</font>计算的是**样本内**用于回归的观测的预期值 - <font color=darkred>预测</font>的因变量实际值**不在回归估计样本中** - <font color=darkred>预测和预测误差是“样本外”的观测,预期值和残差是“样本内”的观测</font> --- ###预测误差均方根 - 预测误差不是 `\(OLS\)` 残差,那应该如何度量其大小?<br> `\(\qquad \quad \quad \downarrow\)` - <font color=darkred>预测误差均方根 `\(RMSFE\)` </font> `$$RMSFE=\sqrt{E[(Y_{T+1}-\hat Y_{T+1|T})^2]}$$` `$$RMSFE=\sqrt{E[(\beta_0-\hat \beta_0)+(\beta_1-\hat \beta_1)Y_T+u_t]^2}$$` - `\(RMSFE\)` 有 `\(2\)` 种误差来源 - 误差一: `\(u_t\)` 未来值未知产生的误差 - 误差二:估计系数 `\(\beta_0,\beta_1\)` 产生的误差 - 样本容量大 `\(\longrightarrow\)` 误差一大于误差二 `\(\longrightarrow\)` `\(RMSFE \approx \sqrt{var(u_t)}\)` `\(\longrightarrow\)` 可近似用回归标准误差 `\(SER\)` 估计 --- ### `\(p\)` 阶自回归模型 .panelset.sideways[ .panel[.panel-name[注] - 前面的 `\(AR(1)\)` 模型利用 `\(Y_{t-1}\)` 预测了 `\(Y_t\)` - 但是忽略了较远的过去值中的潜在有用信息 - 我们可以在此基础上加入其他滞后值得到 `\(p\)` **阶自回归: `\(AR(p)\)` 模型** `$$Y_t=\beta_0+\beta_1Y_{t-1}+\beta_2Y_{t-2}+···+\beta_pY_{t-p}+u_t$$` - 其中 `\(E(u_t|Y_{t-1},Y_{t-2},···)=0\)` (假设) - 滞后数 `\(p\)` 称为自回归阶数或滞后长度 - 根据假设可得两个重要推论 - 基于全部历史值的 `\(Y_{T+1}\)` 最佳预测值只依赖于最近的 `\(p\)` 个过去值 - 误差 `\(u_t\)` 序列不相关 ] .panel[.panel-name[] .panel[.panel-name[Code] ```r if (!require("forecast")) install.packages("forecast") ``` ] .panel[.panel-name[Output] ``` ## Warning: 程序包'forecast'是用R版本4.4.1 来建造的 ``` .panel[.panel-name[Code] ```r library(AER) data(USMacroSWQ) GDPGrowth <- 400 * log(USMacroSWQ[, "gdp"]/lag(USMacroSWQ[, "gdp"])) # 将 GDPGrowth 时间序列转换为数值型向量,并移除第一个元素。结果存储在 GDPGR_level 中。 GDPGR_level <- as.numeric(GDPGrowth[-1]) # 将 GDPGrowth 转换为数值型向量,移除最后一个元素。这通常用于创建滞后项,即将当前值之前的值作为滞后变量。结果存储在 GDPGR_lags 中。 GDPGR_lags <- as.numeric(GDPGrowth[-N]) # 使用线性回归模型来估计自回归模型 armod <- lm(GDPGR_level ~ GDPGR_lags) # R^2 summary(armod)$r.squared # SER summary(armod)$sigma if (!require("dynlm")) install.packages("dynlm") ``` ] .panel[.panel-name[Output] ``` ## Warning: 程序包'dynlm'是用R版本4.4.1 来建造的 ``` .panel[.panel-name[Code] ```r library(dynlm) # estimate the AR(2) model GDPGR_AR2 <- dynlm(ts(GDPGR_level) ~ L(ts(GDPGR_level)) + L(ts(GDPGR_level), 2)) coeftest(GDPGR_AR2, vcov. = sandwich) ``` ] .panel[.panel-name[Output] ``` ## [1] 0.1111513 ## [1] 3.772435 ## ## t test of coefficients: ## ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) -2.065630 0.429615 -4.8081 2.788e-06 *** ## L(ts(GDPGR_level)) 0.305824 0.079275 3.8578 0.0001494 *** ## L(ts(GDPGR_level), 2) 0.084517 0.077833 1.0859 0.2786984 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ``` ] ] .panel[.panel-name[注] - `\(AR(2)\)` 二阶自回归估计结果为: `$$\widehat{GDPDT_t}=\underset{(0.4296)}{-2.0656}+\underset{(0.0793)}{0.3058}\widehat{GDPDT_{t-1}}+\underset{(0.0778)}{0.0845}\widehat{GDPDT_{t-2}}$$` - 第二个滞后系数为0.0845,与 `\(0\)` 明显不同 - 拟合度略有提高 - `\(\bar{R}^2\)` 从 `\(AR(1)\)` 模型的0.111增长到 `\(AR(2)\)` 模型的0.118 - `\(SER\)` 从 `\(AR(1)\)` 模型的3.772增长到 `\(AR(2)\)` 模型的3.773,变化不大 ]] --- ###在通货膨胀中的应用 .panelset[ .panel[.panel-name[数据] - 仍以美国2004年4季度的通货膨胀率数据为例 |||||| |:---:|:---:|:---:|:---:|:---:| |季度|美国CPI|年通货膨胀率|一阶滞后|通货膨胀率变化| |2004:Ⅰ|186.57|3.8|0.9|2.9| |2004:Ⅱ|188.60|4.4|3.8|0.6| |2004:Ⅲ|189.37|1.6|4.4|-2.8| |2004:Ⅳ|191.03|3.5|1.6|1.9| |2005:Ⅰ|192.17|2.4|3.5|-1.1| ] .panel[.panel-name[例1] - `\(AR(1)\)` 模型预测情况: `$$\widehat{\Delta Inf_t}=0.017-0.238\Delta Inf_{t-1}$$` - 预测 `\(2005:Ⅰ\)` 的通货膨胀率变化值为 `$$\widehat{\Delta Inf_{2005:Ⅰ}}=0.017-0.238\times1.9=-0.43\approx-0.4$$` - 预测 `\(2005:Ⅰ\)` 的通货膨胀率为 `$$\widehat{ Inf_{2005:Ⅰ}}=3.5\%-0.4\%=3.1\%$$` - 预测误差为 `\(2.4\%-3.1\%=-0.7\%\)` ] .panel[.panel-name[例2] - `\(AR(p)\)` 模型预测情况: `$$\widehat{\Delta Inf_t}=0.02-0.26\Delta Inf_{t-1}-0.32\Delta Inf_{t-2}-0.16\Delta Inf_{t-3}-0.03\Delta Inf_{t-4}$$` - 预测 `\(2005:Ⅰ\)` 的通货膨胀率变化值为 $$ `\begin{aligned} \widehat{\Delta Inf_{2005:Ⅰ}} &=0.02-0.26\times1.9-0.32\times(-0.28)\\ &+0.16\times0.6-0.03\times2.9\\ &\approx-0.4 \end{aligned}` $$ - 预测 `\(2005:Ⅰ\)` 的通货膨胀率为 `$$\widehat{ Inf_{2005:Ⅰ}}=3.5\%+0.4\%=3.9\%$$` - 预测误差为 `\(2.4\%-3.9\%=-1.5\%\)` ,误差大于 `\(AR(1)\)` ]] --- ###利用历史失业率预测通货膨胀变化 |||||| |:---:|:---:|:---:|:---:|:---:| |季度|美国CPI|年通货膨胀率|一阶滞后|通货膨胀率变化| |2004:Ⅰ|186.57|3.8|0.9|2.9| |2004:Ⅱ|188.60|4.4|3.8|0.6| |2004:Ⅲ|189.37|1.6|4.4|-2.8| |2004:Ⅳ|191.03|3.5|1.6|1.9| - 由短期菲利普曲线可知 - 较高的失业率通常伴随着未来通货膨胀率的下降 - 失业率的过去值中可能包含了在过去通货膨胀变化中没有包含的未来通货膨胀信息 |||||| |:---:|:---:|:---:|:---:|:---:| |季度|2004:Ⅰ|2004:Ⅱ|2004:Ⅲ|2004:Ⅳ| |失业率|5.7%|5.6%|5.4%|5.4%| --- ###利用历史失业率预测通货膨胀变化 - 我们可以通过在 `\(AR(4)\)` 模型中**加入失业率一阶滞后**的改进模型验证 $$ `\begin{aligned} \widehat{\Delta Inf_t} =&1.28-0.31\Delta Inf_{t-1}-0.39\Delta Inf_{t-2}+0.09\Delta Inf_{t-3}\\ &-0.08\Delta Inf_{t-4}-0.21Unemp_{t-1}=0.4\\ \end{aligned}` $$ - `\(2005:Ⅰ\)` 的通货膨胀预测值为 `\(3.5\%+0.4\%=3.9\%\)` - 预测误差为 `\(2.4\%-3.9\%=-1.5\%\)` - 进一步可以**再加入失业率其他三个滞后项** $$ `\begin{aligned} \widehat{\Delta Inf_t} &=1.30-0.42\Delta Inf_{t-1}-0.37\Delta Inf_{t-2}+0.06\Delta Inf_{t-3}-0.04\Delta Inf_{t-4}\\ &-2.64Unemp_{t-1}+3.04Unemp_{t-2}-0.38Unemp_{t-3}-0.25Unemp_{t-4}\\ &=0.1 \end{aligned}` $$ - `\(2005:Ⅰ\)` 的通货膨胀预测值为 `\(3.5\%+0.1\%=3.6\%\)` - 预测误差为 `\(2.4\%-3.6\%=-1.2\%\)` --- ###自回归分布式滞后模型 - 像这样,具有因变量 `\(Y_t\)` 的 `\(p\)` 阶滞后和其他预测变量 `\(X_t\)` 的 `\(q\)` 阶滞后的<font color=darkred>自回归分布式滞后模型称</font>为 `\(ADL(p,q)\)` 模型 `$$Y_t=\beta_0+\beta_1Y_{t-1}+···+\beta_pY_{t-p}+\delta_1X_{t-1}+···+\delta_qX_{t-p}+u_t$$` - **自回归:因变量**的滞后值当作**回归变量**(含被解释变量的滞后值) - **分布式滞后:**包含其他**预测变量**的多个滞后值(含解释变量的滞后值) - **条件零均值假设:** `$$E(u_t|Y_{t-1},Y_{t-2},···,X_{t-1},X_{t-2},···)=0$$` - `\(u_t\)` 在控制了其他变量之后对响应变量无显著影响 - `\(ADL\)` 模型不包含 `\(X,Y\)` 的其他滞后项 - `\(ADL\)` 模型的其他预测变量不包含 `\(X\)` 之外的的其他预测变量滞后项 - 但是,利用多个预测变量可提高预测准确度 --- ###平稳性 - 在引入多个预测变量之前,我们需要先理解平稳性的概念 - 前面学习的预测是基于未来与过去类似的假设 - 如果未来和过去有本质差异呢? - 我们利用**平稳性**来表示历史关系可推广到未来的思想 - **平稳的:**时间序列 `\(Y_t\)` 的概率分布不随时间变化 - `\((Y_{s+1},Y_{s+2},···,Y_{s+t})\)` 的联合发布不依赖 `\(s\)` - **联合平稳的:**一对时间序列 `\((X_t,Y_t)\)` 的概率分布不随时间变化 - `\((X_{s+1},Y_{s+1},X_{s+2},Y_{s+2},···X_{s+t},Y_{s+t})\)` 的联合发布不依赖 `\(s\)` - 如:同一行业内的不同公司股票价格可能会因为行业趋势或宏观经济条件的变化而表现出某种联合平稳性。 - 平稳性要求至少在概率意义下未来类似于过去 --- ###包含多个预测变量的时间序列回归 $$ `\begin{aligned} Y_t =&\beta_0+\beta_1Y_{t-1}+···+\beta_pY_{t-p}+\delta_{11}X_{1t-1}+···+\delta_{1t-q}X_{1t-q}\\ &+\delta_{k1}X_{kt-1}+···+\delta_{kt-q}X_{kt-q}+u_t \end{aligned}` $$ - **假设1:**条件零均值假设 `$$E(u_t|Y_{t-1},Y_{t-2},···,X_{1t-1},X_{1t-2},···,X_{kt-1},X_{kt-2},···)=0$$` - 基于 `\(X,Y\)` 所有过去值的 `\(Y_t\)` 最佳预测由该该回归给出 - **假设2:** - 随机变量 `\((Y_t,X_{1t},···,X_{kt})\)` 具有平稳分布(不随时间变化) - `\(j\)` 较大时, `\((Y_t,X_{1t},···,X_{kt})\)` 和 `\((Y_{t-j},X_{1t-j},···,X_{kt-j})\)` 独立 - **假设3:** `\(Y_t,X_{1t},···,X_{kt}\)` 具有非零、有限四阶矩 - **假设4:**不存在完全多重共线性 --- ###统计推断和 Granger 检验 - 在这 `\(4\)` 个假设下,基于 `\(OLS\)` 的回归系数推断过程和截面数据一样 - 但是,时间序列预测中, `\(F\)` 统计量还可以**检验某回归变量( `\(X\)` )滞后项是否包含了其他回归变量没有包含的预测内容** - 若不包含则该变量的所有滞后项系数均为零 - 若包含则 `\(X\)` 是 `\(Y\)` 的有用预测变量, `\(X_t\)` 的滞后系数不全为 `\(0\)` - <font color=darkred> Granger 因果关系: - </font>如果 `\(X\)` Granger 导致了 `\(Y\)` ,则给定回归中其他变量后 `\(X\)` 是 `\(Y\)` 的有用预测变量 - ** `\(X\)` 在时间上先于 `\(Y\)` ,并且能够提供对 `\(Y\)` 的预测信息** - ** Granger 检验不是检验因果关系上 `\(X\)` 是否是 `\(Y\)` 发生的原因,而是检验 `\(X\)` 相关滞后值能否提供对 `\(Y\)` 的预测信息** --- ###预测的不确定性和预测区间 - 预测的不确定性度量与统计推断也是类似的 - 考虑 `\(ADL(1,1):Y_t=\beta_0+\beta_1Y_{t-1}+\delta_1X_{t-1}+u_t\)` ,假设 `\(u_t\)` **同方差** - **预测误差**为 `$$Y_{T+1|T}-\hat Y_{T+1|T}=u_{T+1}-[(\hat \beta_0-\beta_0)+(\hat \beta_1-\beta_1)Y_T+(\hat \delta_1-\delta_1)X_T]$$` - 因为 `\(u_{T+1}\)` 条件均值为 `\(0\)` 且同方差(模型中所有观测值的误差项有恒定方差) $$ `\begin{aligned} MSFE &=E[(Y_{T+1|T}-\hat Y_{T+1|T})^2]\\ &=\sigma_u^2+var[(\hat \beta_0-\beta_0)+(\hat \beta_1-\beta_1)Y_T+(\hat \delta_1-\delta_1)X_T]\\ \end{aligned}` $$ - 估计 `\(MSFE\)` 可利用伪样本外预测的方差 --- ###预测的不确定性与预测区间 - `\(95\%\)` **预测区间**: - `\(95\%\)` 重复应用中包含序列未来真值的区间,与置信区间类似 - 置信区间为估计量 `\(\pm1.96\)` 标准误差 `\(\stackrel{中心极限定理}\longrightarrow\)` 对较大范围误差项分布都成立 - 预测误差包含误差的未来值 `\(u_{T+1}\)` ,需要估计误差项分布或对分布做假设 - 实践中假设 `\(u_{T+1}\)` 服从正态分布,对 `\(\hat \beta_0,\hat \beta_1,\hat \delta_1\)` 运用中心极限定理 `$$Y_{T+1|T}-\hat Y_{T+1|T}=u_{T+1}-[(\hat \beta_0-\beta_0)+(\hat \beta_1-\beta_1)Y_T+(\hat \delta_1-\delta_1)X_T]$$` - 预测误差服从方差为 `\(MSFE\)` 的正态分布 - `\(95\%\)` 预测区间为: `\(\hat Y_{T+1|T}\pm 1.96SE(Y_{T+1|T}-\hat Y_{T+1|T})\)` --- ###确定自回归的阶数 - 在通货膨胀实例中, `\(AR(1)\)` 的预测误差为 `\(-0.7\)` , `\(AR(4)\)` 的预测误差为 `\(-1.5\)` - 为什么还要采用四阶滞后呢?怎样选择合适的阶数? - 阶数太低,可能遗漏信息;阶数太高,可能引入误差 - ** `\(F\)` 统计量方法**:从高到低依次排除滞后系数不显著的阶数 - **最小化“信息准则”**: - `\(BIC:\)` `$$BIC(p)=ln(\frac{SSR(p)}{T})+(p+1)\frac{lnT}{T}$$` - `\(AIC:\)` `$$AIC(p)=ln(\frac{SSR(p)}{T})+(p+1)\frac{2}{T}$$` --- ###确定自回归的阶数——BIC .panelset[ .panel[.panel-name[注] - ** `\(BIC:\)` 最小化“信息准则”** `$$BIC(p)=ln(\frac{SSR(p)}{T})+(p+1)\frac{lnT}{T}$$` - `\(\hat p\)` 是使 `\(BIC(p)\)` 最小的 `\(p\)` 值 - `\(p \uparrow,\)` 信息 `\(\uparrow,\)` 残差平方和 `\(SSR(p)\downarrow,(p+1)\uparrow\)` - 两项相互制约 `\(\rightarrow\)` 使 `\(BIC\)` 最小化的滞后阶数 `\(\hat p\)` 是真实滞后长度 `\(p\)` 的一致估计量 - `\(BIC\)` 帮助准确决定了 `\(R^2(SSR)\)` 必须增大(减少)多少以证明加入额外的滞后是有道理的 ] .panel[.panel-name[] .panel[.panel-name[Code] ```r # BIC 函数是一个自定义函数,用于计算自回归模型的贝叶斯信息准则(BIC)值,并返回模型的一些统计摘要 BIC <- function(model) { # 计算残差平方和(ssr),这是模型残差(实际值与预测值之差)的平方的总和 ssr <- sum(model$residuals^2) # 获取残差长度 t,即模型中的观测值数量 t <- length(model$residuals) # 计算模型参数的数量 npar,这是模型中估计系数的数 npar <- length(model$coef) # 返回一个包含 "p"(模型阶数)、"BIC" 和 "Adj.R2" 的向量,并将结果四舍五入到四位小数 return( round(c("p" = npar - 1, "BIC" = log(ssr/t) + npar * log(t)/t, "Adj.R2" = summary(model)$adj.r.squared), 4) ) } if (!require("dynlm")) install.packages("dynlm") library(dynlm) library(AER) data(USMacroSWQ) # 计算GDP增长率 GDPGrowth <- 400 * log(USMacroSWQ[, "gdp"]/lag(USMacroSWQ[, "gdp"])) # 将 GDPGrowth 时间序列转换为数值型向量,并移除第一个元素。结果存储在 GDPGR_level 中。 GDPGR_level <- as.numeric(GDPGrowth[-1]) BIC(dynlm(ts(GDPGR_level) ~ 1)) order <- 1:6 BICs <- sapply(order, function(x) "AR" = BIC(dynlm(ts(GDPGR_level) ~ L(ts(GDPGR_level), 1:x)))) BICs # 选择使BIC最小的AR模型的更简单的方法 BICs[, which.min(BICs[2, ])] print("在这个例子中,p取1时BIC最小") ``` ] .panel[.panel-name[Output] ``` ## p BIC Adj.R2 ## 0.0000 2.7882 0.0000 ## [,1] [,2] [,3] [,4] [,5] [,6] ## p 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 ## BIC 2.6969 2.7140 2.7264 2.7420 2.7605 2.7872 ## Adj.R2 0.1056 0.1102 0.1185 0.1228 0.1276 0.1242 ## p BIC Adj.R2 ## 1.0000 2.6969 0.1056 ## [1] "在这个例子中,p取1时BIC最小" ``` ] ]] --- ###非平稳性 - 前面的统计推断和自回归预测都是基于因变量与回归变量平稳的假设 - 现在我们进一步学习两种最重要的非平稳时间序列数据类型 - **趋势:**变量随时间持续长期的运动 - **确定性趋势:**时间的非随机函数,如线性函数 - **随机性趋势:**随机且随时间变化(**一般情况**) - **非平稳的:** `\(var(Y_t)=var(Y_{t-1})+var(u_i),var(u_i)\neq0\)` - **突变:**总体回归方程在样本期内发生变化 - 总体回归函数在某一特定日期的离散变化(**明显的变化**) - 系数在较长时期内的渐变(**缓慢的变化**) --- ###趋势的随机游走模型 .panelset[ .panel[.panel-name[**随机游走模型**] `$$Y_t=Y_{t-1}+u_t,\quad E(u_t|Y_{t-1},Y_{t-2},···)=0$$` - 时间序列 `\(Y_t\)` 的变化是 `\(i.i.d\)` 的( `\(u_t\)` 是 `\(i.i.d\)` 的) - `\(E(Y_t|Y_{t-1},Y_{t-2},···)=Y_{t-1}\)` - 明天取值的最佳预测为今天的值 - 非平稳的,方差随时间增加 - `\(var(Y_t)=var(Y_{t-1})+var(u_t),\)` 只有 `\(var(u_t)=0\)` 时 `\(Y_t\)` 平稳 - 假设 `\(Y_0=0,Y_1=u_1,Y_2=u_1+u_2,···,Y_t=u_1+u_2+···u_t,\)` 则 `\(var(Y_t)=var(u_1+u_2+···u_t)=t\sigma_u^2\)` ] .panel[.panel-name[**带漂移的随机游走**] - 有的时间序列具有**明显的上升/下降趋势,会朝一个方向变动/漂移** - 此时序列的最佳预测必须包含序列变动趋势的调整 - **带漂移的随机游走:** `$$Y_t=\beta_0+Y_{t-1}+u_t,\quad E(u_t|Y_{t-1},Y_{t-2},···)=0$$` - 序列明天的最佳预测为今天的取值加上漂移 `\(\beta_0\)` ] .panel[.panel-name[] .panel[.panel-name[Code] ```r # 设置随机数种子,确保模拟过程的可重复性 set.seed(1) # 创建一个时间序列对象RWs,包含四个随机游走序列 RWs <- ts(replicate(n = 4, # 模拟了一个随机游走序列,其中order = c(0, 1, 0)指定了ARIMA模型的阶数,n = 100指定了序列的长度 arima.sim(model = list(order = c(0, 1 ,0)), n = 100))) # 设置图形布局为2行1列 par(mfrow = c(2, 1)) matplot(RWs, type = "l", col = c("steelblue", "darkgreen", "darkred", "orange"), lty = 1, lwd = 2, main = "4 个随机游走", xlab = "时间", ylab = "取值") RWsd <- ts(replicate(n = 4, arima.sim(model = list(order = c(0, 1, 0)), n = 100, # 指定序列的漂移量-0.2 mean = -0.2))) matplot(RWsd, type = "l", col = c("steelblue", "darkgreen", "darkred", "orange"), lty = 1, lwd = 2, main = "4 个带漂移的随机游走", xlab = "时间", ylab = "取值") ``` ] .panel[.panel-name[Output] ![](Lecture_12_Time_Series_Introduction_files/figure-html/unnamed-chunk-9-1.png)<!-- --> ] ]] --- ###随机性趋势 - 对于 `\(AR(1)\)` 模型 `\(Y-t=\beta_0+\beta_1Y_{t-1}+u_t\)` : - `\(\beta_1=1\rightarrow\)` 随机游走模型 `\(\rightarrow\)` 非平稳的 - `\(|\beta_1|<1\)` **且 `\(u_t\)` 平稳时, `\(Y_t\)` 平稳** - 假设 `\(\beta_0=0,u_i\quad i.i.d \quad\)` 且 `\(\quad u_i\sim N(0,\sigma_u^2),\)` 以 `\(T=2\)` 进行简单证明 .panelset.sideways[ .panel[.panel-name[化形] - 首先 - `\(\beta_0=0\longrightarrow Y_t=\beta_1Y_{t-1}+u_t\)` - `\(\stackrel{代入Y_{t-1}}{\longrightarrow}Y_t=\beta_1(\beta_1Y_{t-2}+u_{t-1})+u_t=\beta_1^2+\beta_1u_{t-1}+u_t\)` - 依此类推…… - `\(Y_t=u_t+\beta_1u_{t-1}+\beta_1^2u_{t-2}+···=\sum_{i=0}^{\infty}\beta_1^iu_{t-i}\)` ] .panel[.panel-name[注] - 因为 `\(u_t\)` 服从正态分布且正态分布随机变量的加权平均服从正态分布 - 所以 `\((Y_{T+1},Y_{T+2})\)` 服从二维正态分布 - 因为二维正态分布完全由两个变量的均值、方差及协方差确定 - 所以只需证明均值、方差与其协方差不依赖于 `\(t\)` 即可 ] .panel[.panel-name[均值] - 因为 `\(E(u_t)=0\)` - 所以 `\(E(Y_t)=E(\sum_{i=0}^{\infty}\beta_1^iu_{t-i})=\sum_{i=0}^{\infty}\beta_1^iE(u_{t-i})=0\)` - 均值不依赖 `\(t\)` ] .panel[.panel-name[方差] - 因为 `\(|a|<1\)` 时 `\(\sum_{i=0}^{\infty}a^i=\frac{1}{1-a}\)` $$ `\begin{aligned} var(Y_t) &=var(\sum_{i=0}^{\infty}\beta_1^iu_{t-i})=\sum_{i=0}^{\infty}(\beta_1^i)^2var(u_{t-i})\\ &=\sigma_u^2\sum_{i=0}^{\infty}(\beta_1^i)^2 \end{aligned}` $$ - 所以 `\(var(Y_t)=\frac{\sigma_u^2}{1-\beta_1^2}\)` - 方差不依赖 `\(t\)` ] .panel[.panel-name[协方差] - 因为 `\(Y_{T+2}=\beta_1Y_{T+1}+u_{T+2}\)` - 所以 $$ `\begin{aligned} cov(Y_{T+1},Y_{T+2}) &=E(Y_{T+1}Y_{T+2})-E(Y_{T+1})E(Y_{T+2})\\ &=E[Y_{T+1}(\beta_1Y_{T+1}+u_{T+2})]-0\\ &=\beta_1var(Y_{T+1})+cov(Y_{T+1},u_{T+2})\\ &=\beta_1\frac{\sigma_u^2}{1-\beta_1^2}+0 \end{aligned}` $$ - 协方差不依赖 `\(t\)` ]] --- ###随机性趋势带来的问题 .panelset[ .panel[.panel-name[随机性趋势带来的问题] - 如果回归变量包含随机性趋势 - 则回归系数的OLS估计量及OLS `\(t\)` 统计量即使在大样本下也不服从正态分布 - 问题1: `\(AR(1)\)` 中自回归系数一致估计量偏向于 `\(0:E(\hat \beta_1)\approx1-5.3/T\)` - 问题2:原假设成立时即使是大样本 `\(t\)` 统计量也是非正态分布 - 问题3:**<font color=darkred>伪回归</font>:两个没有相关关系的时间序列呈现出相关性:** - 如 1965-1981年美国和日本GDP碰巧都平稳上升,但是1982-2004年可见趋势不一致 `\(\longrightarrow\)` 随机趋势带来的巧合 - 如儿童与公园里的小树苗某一段时间都在长高 - 如冰激凌销量较高时,儿童溺水率也较高 ] .panel[.panel-name[] .panel[.panel-name[伪回归] ```r # 设置随机数种子,确保模拟过程的可重复性 set.seed(1) # 创建一个时间序列对象RWs,包含四个随机游走序列 RWs <- ts(replicate(n = 4, # 模拟了一个随机游走序列,其中order = c(0, 1, 0)指定了ARIMA模型的阶数,n = 100指定了序列的长度 arima.sim(model = list(order = c(0, 1 ,0)), n = 100))) # 绘制伪回归时间序列 matplot(RWs[, c(2, 3)], lty = 1, lwd = 2, type = "l", col = c("darkgreen", "darkred"), xlab = "Time", ylab = "取值", main = "伪回归关系") ``` ] .panel[.panel-name[图] ![](Lecture_12_Time_Series_Introduction_files/figure-html/unnamed-chunk-10-1.png)<!-- --> ] ] .panel[.panel-name[解决方法:差分法] - 在经济学和金融领域,一阶差分常用于处理如GDP、股票价格、汇率等时间序列数据 - 通过一阶差分,可以消除数据随时间的线性趋势或季节性变动,从而使得差分后的数据更加平稳 - 但是它可能会移除数据中的一些有用信息,比如在某些情况下,趋势信息本身可能就是分析的重点 - 实际操作中,一阶差分是检验时间序列是否平稳的初步步骤之一 - 若一阶差分后的时间序列通过平稳性检验(如ADF检验),则可以认为序列已经足够平稳 - 若一阶差分后序列仍然不平稳,可能需要进一步的差分,或者考虑使用其他方法来处理数据 ]] --- ###随机趋势的探测:单位 AR根的检验 `$$Y_t=\beta_0+\beta_1Y_{t-1}+u_t\quad H_0:\beta_1=1,\quad H_1:\beta_1<1$$` - 原假设 `\(H_0\)` :序列具有单位根(即有随机性趋势) - 备择假设 `\(H_1\)` :序列平稳( `\(\stackrel{常用}{\longrightarrow}\)` 没有单位根但是有确定性时间趋势) - 简化为:(回归软件适用) `$$\Delta Y_t=\beta_0+\delta Y_{t-1}+u_t\quad H_0:\delta_1=0,\quad H_1:\delta_1<0$$` - 进一步地 `$$\Delta Y_t =\beta_0+\delta Y_{t-1}+\gamma_1\Delta Y_{t-1}+\gamma_2\Delta Y_{t-2}+···+\gamma_p\Delta Y_{t-p}+u_t$$` - 若备择假设为: `\(Y_t\)` 围绕一确定的线性时间趋势是平稳的(有确定性时间趋势) `$$\Delta Y_t =\beta_0+\alpha t +\delta Y_{t-1}+\gamma_1\Delta Y_{t-1}+\gamma_2\Delta Y_{t-2}+···+\gamma_p\Delta Y_{t-p}+u_t$$` --- ###随机趋势的探测:Dickey-Fuller检验 .panelset[ .panel[.panel-name[] .panel[.panel-name[Code] ```r library(dynlm) # 初始化参数 # 模拟的重复次数 N <- 1000 # 观测值的数量 n <- 1000 # 漂移量 drift <- 0.5 # 趋势项,这里使用了一个从1到n的线性序列 trend <- 1:n # 自回归(AR)参数,这里设置为1,表示纯随机游走 rho <- 1 # 定义AR(1)过程的函数 AR1 <- function(rho) { out <- numeric(n) for(i in 2:n) { out[i] <- rho * out[i-1] + rnorm(1) } return(out) } # 模拟具有漂移的随机游走过程 RWD <- ts(replicate(n = N, drift + AR1(rho))) # 对于每个模拟序列,使用dynlm函数计算一阶差分的ADF检验统计量,并存储在ADFD和ADFDT向量中 ADFD <- numeric(N) for(i in 1:ncol(RWD)) { ADFD[i] <- summary( dynlm(diff(RWD[, i], 1) ~ L(RWD[, i], 1)))$coef[2, 3] } # 模拟具有漂移和趋势的随机游走过程 RWDT <- ts(replicate(n = N, drift + trend + AR1(rho))) # 计算ADF检验统计量 ADFDT <- numeric(N) for(i in 1:ncol(RWDT)) { ADFDT[i] <- summary( dynlm(diff(RWDT[, i], 1) ~ L(RWDT[, i], 1) + trend(RWDT[, i])) )$coef[2, 3] } # 使用quantile函数估计具有漂移和具有漂移及趋势的ADF检验统计量的分位数,并使用round函数将结果四舍五入到两位小数 round(quantile(ADFD, c(0.1, 0.05, 0.01)), 2) round(quantile(ADFDT, c(0.1, 0.05, 0.01)), 2) # 绘制标准正态分布密度 curve(dnorm(x), from = -6, to = 3, ylim = c(0, 0.6), lty = 2, ylab = "密度", xlab = "t-统计量", main = "ADF 检验统计量的分布", col = "darkred", lwd = 2) # 绘制ADF检验统计量的密度估计 lines(density(ADFD), lwd = 2, col = "darkgreen") lines(density(ADFDT), lwd = 2, col = "blue") # 添加图例 legend("topleft", c("N(0,1)", "Drift", "Drift+Trend"), col = c("darkred", "darkgreen", "blue"), lty = c(2, 1, 1), lwd = 2, # 去掉图例边框 bty = "n", # 调整图例中文字的大小 cex = 0.8, # 调整图例中点的大小 pt.cex = 0.5) ``` ] .panel[.panel-name[Output] ![](Lecture_12_Time_Series_Introduction_files/figure-html/unnamed-chunk-11-1.png)<!-- --> ``` ## 10% 5% 1% ## -2.62 -2.83 -3.39 ## 10% 5% 1% ## -3.11 -3.43 -3.97 ``` ] ] .panel[.panel-name[注] - `\(ADF\)` 统计量在单位根原假设下即使是大样本也不服从正态分布,因此统计检验需采用**特定临界值**(非正态分布临界值) ||||| |:---:|:---:|:---:|:---:| |确定性回归变量|10%|5%|1%| |ADFD:只有截距|-2.57|-2.86|-3.43| |ADFD:只有截距(代码估计值)|-2.62|-2.83|-3.39| |ADFDT:截距和时间趋势|-3.12|-3.41|-3.96| |ADFDT:截距和时间趋势(代码估计值)|-3.11|-3.43|-3.97| ]] --- ###突变 - 除了随机性趋势,突变也会带来各种问题 - 如果总体回归函数在样本内发生了突变 - 则全样本的OLS回归估计的是“平均”成立的关系 - 就像妄图用一个数式表示整个分段函数 - 发现突变的一种方法是**检验回归系数的离散变化或突变** - 突变时间已知: `\(Chow\)` 检验(F统计量): `\(D_t(\tau)\)` 表示突变时间 `\(\tau\)` 前为 `\(0\)` 之后为 `\(1\)` 的二元变量 $$ `\begin{aligned} Y_t &=\beta_0+\beta_1Y_{t-1}+\delta_1X_{t-1}+\gamma_0D_t(\tau)\\ &+\gamma_1[D_t(\tau)\times Y_{t-1}]+\gamma_2[D_t(\tau)\times X_{t-1}]+u_t \end{aligned}` $$ - 原假设:没有突变 `\(\gamma_0=\gamma_1=\gamma_2=0\)` - 备择假设:有突变,至少有一个 `\(\gamma\ne0\)` - 突变时间未知呢? --- ###QLR检验 - 突变的时间一般未知/落在某一范围 `\(\tau_0\sim\tau_1\)` 内,可修改 `\(Chow\)` 检验为 `\(QLR\)` 检验 `$$QLR=max[F(\tau_0),F(\tau_0+1),···,F(\tau_1)]$$` - 为使QLR统计量大样本近似较好,子样本端点不能太靠近起点或终点 - 通常剔除15%: `\(\tau_0=0.15T,\tau_1=0.85T\)` - 突变时间后的 `\(F\)` 统计量用中间 `\(70\%\)` 样本计算 - `\(QLR\)` 统计量分布依赖备择假设下允许突变的系数个数 `\(q\)` - `\(QLR\)` 统计量临界值须从特定分布取得 - 若回归函数有一个明显突变 - `\(Chow\)` 统计量最大时对应的时间为突变时间估计量 - `\(QLR\)` 检验量能发现单个离散突变以及不稳定的形式 --- ###伪样本外预测 - 预测模型的最终检验为样本外表现,即模型估计之后在“真实时间”上的预测表现。 - **伪样本外预测**是一种模拟预测模型在真实时间上表现的方法。 - 使用模型估计之前的数据(即样本内数据)来进行预测 - 而不是使用模型估计之后的实际数据(即真正的样本外数据)来进行预测 - 与真正的样本外预测不同的是: - 真实样本外预测在**序列未来值未知**前提下预测 - 伪样本预测**有“未来”值**来评估这些模拟的值或伪预测 --- ###伪样本外预测 .panelset[ .panel[.panel-name[ 伪样本外预测的思想] - 选择观测次数 `\(P\)` :如伪样本容量的 `\(10\%\)` 或 `\(15\%\)` ,令 `\(s=T-P\)` - 利用缩短后的数据 `\(t=1,2,···,s\)` 估计预测回归 - 计算缩短样本外第一期 `\(s+1\)` 的预测 `\(\widetilde Y_{s+1|s}\)` - 计算预测误差 `\(\widetilde u_{s+1}=Y_{s+1}-\widetilde Y_{s+1|s}\)` - 对剩下的时间 `\(s=T-P+1\)` 到 `\(T-1\)` 重复上述步骤,得到 - 伪样本外预测 `\(\widetilde Y_{s+1|s},s=T-P,···,T-1\)` - 伪样本外预测误差 `\(\widetilde u_{s+1|s},s=T-P,···,T-1\)` ] .panel[.panel-name[例] - 以前面的失业率滞后项预测通货膨胀为例 - 使用 1980 年代初期突变后的数据估计的模型相对于使用整个样本不应恶化,前提是总体回归函数的系数在 `\(1980:Q4\)` 的潜在突变后是稳定的,这些模型应该具有良好的预测能力。 - 使用 `\(1981:Q1 - 2002:Q4\)` 的数据预测 `\(2003:Q1\)` 的通货膨胀变化 - 使用 `\(1981:Q1 - 2003:Q1\)` (预测值) 的数据预测 `\(2003:Q2\)` 的通货膨胀变化 - 以此类推…… ] .panel[.panel-name[图] ![美国的通货膨胀和伪样本外预测](US_inf.png "美国的通货膨胀和伪样本外预测") ]] --- ###小结 - 用于预测的回归模型不需要有因果解释 - 时间序列变量是序列相关的 `\(\longrightarrow\)` 因变量滞后项作为回归变量 `\(\longrightarrow\)` `\(AR(p)\)` 模型 `\(\longrightarrow\)` `\(p\)` 可用 `\(AIC/BIC\)` 信息准则估计 - 自回归的统计推断、预测区间、预测误差均方根 - 非平稳 - 随机性趋势序列非平稳,其OLS估计量和 `\(t\)` 统计量服从非正态分布 - ADF统计量检验随机趋势,一阶差分消除随机趋势 - 突变:总体回归函数随时间变化 - QLR统计量检验突变 - 伪样本外预测 - 可评估模型在样本末尾处的稳定性、估计预测误差均方根、比较预测模型