查看原文
其他

Stata:评估面板数据模型的样本外预测性能-xtoos

连享会 连享会 2023-10-24

👇 连享会 · 推文导航 | www.lianxh.cn

连享会课程 · 2023 暑期班

作者:毕英睿 (中央财经大学)
邮箱:judybi2017@163.com

编者按:本文主要整理自下文,特此致谢!
Source:Evaluating the out-of-sample prediction performance of panel data models -PDF-

温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:


目录

  • 1. 背景

  • 2. 命令介绍

    • 2.1 命令安装

    • 2.2 命令语法

  • 3. 命令应用

    • 3.1 xtoos_t:在连续案例中时间序列维度下的应用

    • 3.2 xtoos_i:在连续案例中截面维度下的应用

    • 3.3 二元因变量的情况

  • 4. 总结

  • 5. 相关推文



1. 背景

在广泛的实际应用中,评估一个统计模型的预测准确性变得愈发普遍和重要。不过,现有应用都集中在一种数据结构上,要么是时间序列,要么是非结构化、截面数据或者合并数据。面板数据存在时间序列和个体两个维度,那么如何评价一个面板数据统计模型的预测性能呢?目前 Stata 中没有合适的命令来评估时间序列维度中模型的样本外性能。

此外,现有的交叉验证 (cross-validation) 程序 (如 crossfoldcvauroc) 在分离样本内和样本外时,通常会对所有的观测值进行处理,而不考虑这些观测值是否属于不同的个体或来自同一个体的后续观测。因此很难引入一个动态效应模型或固定效应模型。

通常我们将一个模型的性能表示为与另一个替代模型的相对值。例如,在评估时间序列框架中的预测准确性时,模型的 RMSE 通常与“朴素 (naive)”预测的 RMSE 进行比较。其中样本内时期的最后一个观测值被用作对样本外观测值的直接预测。

但是,如果我们只是随机抽取观察结果,那么“朴素”的预测会是什么?本文认为,在面板数据的情况下,更有用的练习是使用个体而不是观察值的类似于交叉验证的练习。

因此,我们开发了4个新的命令 xtoos_txtoos_ixtoos_bin_txtoos_bin_i,分别评估面板数据模型在时间序列和截面维度上的样本外预测性能,还为不同类型的因变量 (连续变量和 0-1 变量) 开发了单独的程序。

2. 命令介绍

2.1 命令安装

ssc install xtoos, replace

2.2 命令语法

时间序列程序 (xtoos_txtoos_bin_t) 从面板中每个人的估计样本中排除了一些由用户定义的时间段。截面程序 (xtoos_ixtoos_bin_i) 将用户定义的一组个体从估计样本中排除 (包括他们在样本区间内的所有观测样本)。然后对于剩余的 (样本内) 子样本,他们拟合指定的模型,并使用所得到的参数来预测未使用的时期或个体 (样本外) 的因变量 (或结果为正的概率)。

未使用的时间段或个体集在时间序列的情况下在随后的每一步中递归地减少一个时期,在截面的情况下以随机或有序的方式,重复估计和预测评估,直到前面没有更多的时期或更多的个体可以被排除和评估。

在连续因变量的案例中,模型的预测性能既能以绝对值 (RMSE) 报告,又包括相对数据——相对于一个替代模型的 U-Theil ratio。在二元因变量的案例中,性能的评估是基于在训练样本和样本外评估的接收器操作特征统计量下的面积 (AUROC) 。

xtoos 程序的选项和特点足够灵活,可满足以下要求:

  • 选择不同的估算方法;
  • 选择“朴素 (naive)”预测或 AR1 模型作为替代或者比较模型;
  • 选择 AR1 模型的估计方法;
  • 使用动态规范 (因变量的滞后),它会自动处理动态预测;
  • 选择动态方法 (xtabond / xtdpsys);
  • 可以在只有时间序列观测的数据集中自动使用;
  • 使用不同时间频率的数据,即年度、季度、月度和未定义的时间段;
  • 评估某一特定个体或特定个体所在的组的模型表现而不是整个面板的模型表现;
  • 在组内固定效应、随机效应 (RE) 或虚拟变量估计之间进行选择;
  • 在预测中包括或不包括估计的个体部分 (截距)。

3. 命令应用

3.1 xtoos_t:在连续案例中时间序列维度下的应用

xtoos_t 报告指定模型的预测性能,包括绝对值 (均方根误差 RMSE)、相对数据——相对于一个替代模型的 U-Theil ratio。默认的估计方法是 xtreg

xtoos_t depvar [indepvars] [if], *indate(string) *cdate(string)
[met(string)] [mcomp(string)] [evalopt(varname)]
[fe] [xbu] [dum] [opar] [lags(numlist)] [hgraph(numlist)]
[model_options]

默认情况下,替代方法是一种“朴素 (naive)”的预测。在这种预测中,样本期的最后一次观测结果直接用作预测,没有任何变化。该过程还允许使用 AR1 模型作为比较的替代模型。如果样本是不平衡的,xtoos_t 会自动丢弃那些在定义的样本外周期内开始观察的个体。性能结果以两种不同的方式进行分解和报告。

  • 根据估计样本中包括的最后一个时期;
  • 根据预测范围的长度。

接下来,我们举例说明如何使用 xtoos_t 进行评估。

(1) 使用 xtoos_t 评估第 15 期和第 20 期之间的预测性能 (在样本中共有 20 期,T=20,N=5)。

. webuse invest2, clear
. xtset company time
. xtoos_t invest market stock, indate(15) cdate(20)

Out of sample evaluation according to last in-sample date
| RMSE_oos RMSE_Al~s UTheil N
-------------+--------------------------------------------
15 | 197.5926 268.0517 .7371435 25
16 | 213.448 264.6098 .8066516 20
17 | 218.0811 242.715 .8985071 15
18 | 215.6059 237.3739 .9082966 10
19 | 189.9464 115.6006 1.643126 5
-------------+--------------------------------------------
Summary | 208.0358 250.6152 .8301006 75

Out of sample evaluation according to forecasting horizon
| RMSE_oos RMSE_Al~s UTheil N
-------------+--------------------------------------------
1 | 178.7174 112.7054 1.585704 25
2 | 202.2296 212.2442 .9528156 20
3 | 222.5415 287.1967 .774875 15
4 | 241.209 369.5434 .6527217 10
5 | 246.8993 421.7185 .5854599 5
-------------+--------------------------------------------
Summary | 208.0358 250.6152 .8301006 75

(2) 使用 xtoos_t 评估第 15 期和第 20 期之间的预测性能,但只限于对 1 号公司的评估。

. gen company1 = company == 1
. xtoos_t invest market stock, indate(15) cdate(20) evalopt(company1)

Out of sample evaluation according to last in-sample date
| RMSE_oos RMSE_Al~s UTheil N
-------------+--------------------------------------------
15 | 265.9022 563.972 .4714812 5
16 | 304.6125 553.1732 .5506639 4
17 | 319.0211 533.3001 .5982019 3
18 | 326.3651 512.5205 .6367845 2
19 | 243.6762 182.2999 1.336678 1
-------------+--------------------------------------------
Summary | 294.6642 530.7943 .5551382 15

Out of sample evaluation according to forecasting horizon
| RMSE_oos RMSE_Al~s UTheil N
-------------+--------------------------------------------
1 | 170.677 220.3413 .7746026 5
2 | 257.4415 435.1569 .5916061 4
3 | 333.4687 601.2803 .5545977 3
4 | 414.2776 797.9501 .5191773 2
5 | 463.4559 931.6 .4974838 1
-------------+--------------------------------------------
Summary | 294.6642 530.7943 .5551382 15

(3) 使用 xtoos_t 作为估计方法,使用 xtregar 命令,并使用 xtabond 估计一个 AR1 模型作为比较模型。

· xtoos_t invest market stock, indate(15) cdate(20) met(xtregar) mcomp(xtabond)

Out of sample evaluation according to last in-sample date
| RMSE_oos RMSE_Al~s UTheil N
-------------+--------------------------------------------
15 | 225.784 397.9647 .5673468 25
16 | 231.1073 409.8826 .5638378 20
17 | 234.0517 378.393 .6185414 15
18 | 230.5379 305.2529 .7552357 10
19 | 192.5137 111.7499 1.722719 5
-------------+--------------------------------------------
Summary | 227.4836 373.4778 .6090955 75

Out of sample evaluation according to forecasting horizon
| RMSE_oos RMSE_Al~s UTheil N
-------------+--------------------------------------------
1 | 184.2658 170.6574 1.079741 25
2 | 214.7247 330.6099 .6494805 20
3 | 243.642 447.3137 .5446781 15
4 | 276.5614 537.3367 .5146892 10
5 | 301.6278 575.9547 .5237005 5
-------------+--------------------------------------------
Summary | 227.4836 373.4778 .6090955 75

(4) 使用 xtoos_t 进行固定效应 (组内) 估计,预测结果包括估计的个体部分。

· xtoos_t invest market stock, indate(15) cdate(20) fe xbu

Out of sample evaluation according to last in-sample date
| RMSE_oos RMSE_Al~s UTheil N
-------------+--------------------------------------------
15 | 131.2454 268.0517 .4896273 25
16 | 146.6338 264.6098 .5541511 20
17 | 153.0876 242.715 .6307299 15
18 | 156.1486 237.3739 .6578173 10
19 | 145.2602 115.6006 1.256569 5
-------------+--------------------------------------------
Summary | 144.2926 250.6152 .5757537 75

Out of sample evaluation according to forecasting horizon
| RMSE_oos RMSE_Al~s UTheil N
-------------+--------------------------------------------
1 | 107.0292 112.7054 .9496369 25
2 | 134.963 212.2442 .6358857 20
3 | 158.8733 287.1967 .5531866 15
4 | 182.9497 369.5434 .4950697 10
5 | 198.7604 421.7185 .4713106 5
-------------+--------------------------------------------
Summary | 144.2926 250.6152 .5757537 75

上述命令等同于加入个体虚拟变量,并在预测中包括其估计值。

· xtoos_t invest market stock, indate(15) cdate(20) dum

(5) 使用 xtoos_t 进行固定效应 (组内) 估计,预测结果不包括估计的个体部分。

. xtoos_t invest market stock, indate(15) cdate(20) fe

Out of sample evaluation according to last in-sample date
| RMSE_oos RMSE_Al~s UTheil N
-------------+--------------------------------------------
15 | 200.6561 268.0517 .7485727 25
16 | 217.1251 264.6098 .820548 20
17 | 220.5621 242.715 .9087287 15
18 | 216.974 237.3739 .9140601 10
19 | 189.1054 115.6006 1.635851 5
-------------+--------------------------------------------
Summary | 210.673 250.6152 .8406234 75

Out of sample evaluation according to forecasting horizon
| RMSE_oos RMSE_Al~s UTheil N
-------------+--------------------------------------------
1 | 179.4424 112.7054 1.592138 25
2 | 204.1317 212.2442 .9617776 20
3 | 225.9538 287.1967 .7867565 15
4 | 246.3197 369.5434 .6665514 10
5 | 252.1064 421.7185 .5978073 5
-------------+--------------------------------------------
Summary | 210.673 250.6152 .8406234 75

上述命令等同于加入个体虚拟变量,但不在预测中包括其估计值。

. xtoos_t invest market stock, indate(15) cdate(20) dum opar

(6) 使用 xtoos_t 在模型中包括因变量的滞后项。

. xtoos_t invest market stock, indate(15) cdate(20) lags(1)

Out of sample evaluation according to last in-sample date
| RMSE_oos RMSE_Al~s UTheil N
-------------+--------------------------------------------
15 | 291.8545 268.0517 1.088799 25
16 | 249.6752 264.6098 .9435597 20
17 | 205.3792 242.715 .8461744 15
18 | 187.2163 237.3739 .7886982 10
19 | 92.79947 115.6006 .8027593 5
-------------+--------------------------------------------
Summary | 242.2808 250.6152 .966744 75

Out of sample evaluation according to forecasting horizon
| RMSE_oos RMSE_Al~s UTheil N
-------------+--------------------------------------------
1 | 100.2124 112.7054 .8891535 25
2 | 189.6657 212.2442 .8936205 20
3 | 268.4804 287.1967 .934831 15
4 | 366.9452 369.5434 .9929693 10
5 | 448.165 421.7185 1.062711 5
-------------+--------------------------------------------
Summary | 242.2808 250.6152 .966744 75

(7) 使用动态模型方法的 xtoos_t,即 xtabondxtdpdsys。默认规格包括因变量的一个滞后期。

. xtoos_t invest market stock, indate(15) cdate(20) lags(2) met(xtabond)

Out of sample evaluation according to last in-sample date
| RMSE_oos RMSE_Al~s UTheil N
-------------+--------------------------------------------
15 | 166.3427 268.0517 .6205622 25
16 | 164.3264 264.6098 .621014 20
17 | 138.9675 242.715 .5725541 15
18 | 114.9347 237.3739 .4841925 10
19 | 139.9054 115.6006 1.210248 5
-------------+--------------------------------------------
Summary | 152.8161 250.6152 .609764 75

Out of sample evaluation according to forecasting horizon
| RMSE_oos RMSE_Al~s UTheil N
-------------+--------------------------------------------
1 | 110.7552 112.7054 .9826966 25
2 | 161.4334 212.2442 .7606023 20
3 | 177.9804 287.1967 .6197162 15
4 | 175.9378 369.5434 .4760952 10
5 | 166.6603 421.7185 .3951931 5
-------------+--------------------------------------------
Summary | 152.8161 250.6152 .609764 75

(8) 使用 xtoos_t 来画一个 "hair "图,其中包括个体 1 到 5 的每个预测水平的所有模型预测值。

. xtoos_t invest market stock, indate(15) cdate(20) lags(1) hgraph(1/5)

3.2 xtoos_i:在连续案例中截面维度下的应用

xtoos_i 报告指定模型的预测性能,既包括绝对值 (RMSE),也包括通过 U-Theil 比率与替代模 型的相对值。默认的估计方法是 xtreg

xtoos_i depvar [indepvars] [if], *ous(integer) *ksmpl(integer)
[rsmpl(integer)] [evalopt(varname)] [met] [mcomp(string)] [fe]
[dum] [lags(numlist)] [hgraph] [model_options]

默认情况下,替代模型是一个“朴素”的预测,即在每个时间段内所有样本个体的平均值被用来预测被排除的个体。该程序还允许使用一个 AR1 模型作为比较的替代模型。它还报告了指定模型和比较模型的几个样本内和样本外的统计数据。

被排除在外 (样本外) 的个体可能是:

  1. 大小为 n 的随机子样本;如果整个样本包含 N 个个体,那么就提取和评估没有重复个体的 N/n 个子样本。此外,采样过程可以重复 r 次,类似于自抽样。
  2. 将样本有序地划分为大小为 k 的子样本;如果整个样本包含 N 个个体,那么就形成和评估 N/k 个有序的子样本,类似于 K-fold 交叉验证,但使用个体而不是观测值。
  3. 一个特定的个体或一个特定的组 (如国家或地区)。

如果在选项 1 中,n=1,或在选项 2 中,k=1,都相当于“留一法交叉验证 (LOOCV)”。

接下来,我们举例说明如何使用 xtoos_i 进行评估。

(1) 使用 xtoos_i 来评估 40 个个体 (ous(40)) 的 20 个随机子样本 (rsmpl(20)) 和同样 40 个个体的有序子样本 (ksmpl(40)) 的预测性能。

. webuse abdata, clear
. xtoos_i n w l.w k l.k ys l.ys, ous(40) rsmpl(20) ksmpl(40)

Out of sample evaluation: Random sampling

| RMSE_in RMSE_oos R2_in R2_oos RMSE_Al~n RMSE_Al~s
----- ----+-----------------------------------------------------------
Summary | .5671476 .5816968 .8210846 .8091391 1.323403 1.332992

| R2_Alt_in R2_Alt_~s Utheil_~t N
----------+--------------------------------------------
Summary | .0258183 -.0022564 .4363842 236.4064

Out of sample evaluation: Ordered partition
| RMSE_in RMSE_oos R2_in R2_oos RMSE_Al~n RMSE_Al~s
----------+-------------------------------------------------------
Summary |.5679359 .5890679 .8193944 .791674 1.318939 1.347322

| R2_Alt_in R2_Alt_~s Utheil_~t N
----------+-------------------------------------------
Summary | .0259486 -.0898223 .4372138 230.0393

(2) 使用 xtoos_i 来评估预测性能,只限制在前 6 个评估个体 (evalopt()),而且没有随机抽样。

. gen idlto6 = id <= 6
. xtoos_i n w l.w k l.k ys l.ys, ous(40) rsmpl(0) ksmpl(40) evalopt(idlto6)

Out of sample evaluation: Ordered partition
| RMSE_in RMSE_oos R2_in R2_oos RMSE_Al~n RMSE_Al~s
--------+--------------------------------------------------------
Summary |.5679359 .5890679 .8193944 .791674 1.318939 1.347322

| R2_Alt_in R2_Alt_~s Utheil_~t N
--------+------------------------------------------
Summary | .0259486 -.0898223 .4372138 230.0393

Out of sample evaluation: Specific individuals: idlto6
| RMSE_in RMSE_oos R2_in R2_oos RMSE_Al~n RMSE_Al~s
--------+-------------------------------------------------------
Summary |.5769317 .5356993 .7970362 .8951593 1.262116 2.374768

| R2_Alt_in R2_Alt_~s Utheil_~t N
--------+---------------------------------------
Summary | .0286659 -1.060298 .2255797 36

(3) 使用 xtoos_i 来评估预测性能,只对前 6 个个体进行评估,同时为这 6 个个体中的每一个绘制预测图。

. xtoos_i n w l.w k l.k ys l.ys, ous(40) rsmpl(0) ksmpl(40) evalopt(idlto6) hgraph

3.3 二元因变量的情况

二元因变量 & 时间序列维度:

xtoos_bin_t 根据在样本内和样本外评估的接收者操作特征 (ROC) 统计量下的面积来评估预测性能。默认的估计方法是 xtlogit,但允许选择不同的估计方法 (如 logitprobitxtprobit)。

xtoos_bin_t 允许选择不同的估计方法 (如 logitprobitxtprobit),也可以只在时间序列数据集中使用。xtoos_bin_t 允许选择估计结果为正的概率的方法,这取决于所使用的估计方法 (如 prob 等) 。

二元因变量 & 截面维度:

xtoos_bin_i 根据在训练样本和样本外评估的接收者运算特征 (AUROC) 统计量下的面积来评估预测性能。默认的估计方法是 xtlogit,但允许选择不同的估计方法 (如 logitprobitxtprobit)。

xtoos_bin_i 具有与连续情况下 (xtoos_i) 相同的选择排除样本 (样本外) 的选项。允许选择估计结果为正的概率的方法。这取决于所使用的估计方法 (如 prob 等)。xtoos_bin_i 还报告了样本内个体的 AUROC,并且还估计了 AUROC 的标准误。

4. 总结

这些程序可以帮助我们实现以下目标:

  1. 我们可以评估现有模型的预测准确性;
  2. 有助于发现以前忽视的面板数据模型在其两个固有维度之间预测能力的差异;
  3. 直接用样本外的预测性能作为不同模型之间的选择标准;
  4. 很容易地被纳入新的算法,在大量的模型中进行选择。

5. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh 预测, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

  • 专题:数据处理
    • Stata波动率专题:历史波动率、预测波动率、隐含波动率
  • 专题:回归分析
    • Stata:用负二项分布预测蚊子存活率
  • 专题:合成控制法
    • Stata:合成控制法的预测区间-scpi
  • 专题:时间序列
    • Stata:时间序列数据的回归和预测
  • 专题:其它
    • Stata:预测模型中的临床决策曲线-dca

课程推荐:深度因果推断(2023年8月2-5日)
主讲老师:江艇
课程地点:西安·西北工业大学
🍓 课程主页https://www.lianxh.cn/news/835167275c3af.html

New! Stata 搜索神器:lianxhsongbl  GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉  使用:
. lianxh DID 倍分法
. songbl all

🍏 关于我们

  • 连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存