产品描述
在之前的博文中,我们研究了如何使用JDemetra+在EViews中执行季节性调整,产生的结果与美国人口普查中无处不在的X-13软件包给出的结果相同(或至少极其相似)。
上一篇文章没有讨论季节性调整中较受欢迎的功能之一:日历调整。在这篇文章中,我们将通过演示如何在JDemetra+中使用日历调整以及如何创建自己的日历效果(如果您希望基于内置功能进行构建)。特别是,我们将演示为JDemetra+添加农历(中国)新年变量。
内容目录
1.基于X-11的调整和日历效果
2.内置日历效果
3.农历新年(又称中国新年)
4.文件
基于X-11的调整和日历效果
JDemetra+和X-13提供的基于X-11的季节性调整程序通过使用各种移动平均方法将一系列数据迭代分解为趋势、季节性和不规则成分。
分解步骤的假设之一是基础数据是随机的,而不是确定性的。这一假设经常被违反,因此季节性调整包通常提供预处理数据的能力,以检测和纠正异常值、日历效应、缺失数据和其他确定性效应的影响。
此预处理步骤使用ARIMAX模型从数据处理中移除任何确定性因素。ARIMAX模型的外生回归部分可以包括虚拟变量(或类似的调整变量),以解释基于常规(或不规则)时间的模式。这些变量可能包括月/季度的工作/交易天数、不规则假期的影响(每年不同日期的假期,如复活节、斋月或农历新年)或用户认为重要的任何其他确定性变量。X-13和JDemetra+都内置了日历效果,可以选择将其包含在ARIMAX回归中,而无需用户自己创建变量。
内置日历效果
为了演示,我们将使用从FRED检索的1990年至2023年每月未经季节性调整的房屋开工数据。
内置效果的JDemetera+
正如我们在上一篇文章中提到的,JDemetra+有一组规范,可用于快速设置用于季节性调整的选项。其中一个规范(默认为RSA4c)包括一个ARIMAX模型,该模型具有异常值检测和校正、处理每个时期的工作日数以及调整Easter效应的功能。
要在EViews中使用此规范,我们需要做的就是打开series,然后选择Proc->Seasonal Adjustment->JDemetra+…以调出JDemetra+对话框:
由于RSA4c是默认规范,我们不需要对此页面进行任何更改。
但是,JDemetra+的内置功能之一是自动决定是否包含确定性变量。为了进行演示,我们希望始终包含它们,因此我们将关闭决策过程。为此,我们切换到“Regression”选项卡,并将“Trading days Test”和“Easter Test”下拉菜单都更改为“None”,并取消选中“leap year Auto-adjust”框:
然后,我们可以单击“确定”来生成季节性调整后的数据:
我们将输出HOUSTNSA_D11系列重命名为HOUST_D11_RSA4。
此RSA4c规范与我们在上一篇博文中运行的RSA3规范之间的区别在于,它包含了工作日/交易日、闰年效应和复活节效应作为内置外生变量。
由于JDemetra+允许您包含自己的外生变量,因此应该可以使用我们自己的工作日、闰年和Easter效应运行RSA3规范,并匹配RSA4c给出的结果。
为此,我们必须首先在EViews中创建自己的变量-一个用于工作日,一个用于闰年,一个用于Easter。
交易/工作日
JDemetra+有许多不同的工作日处理方法,但默认方法(称为TD2)是计算每个期间(在我们的例子中是月份)的周一至周五的数量,然后减去周六和周日的数量乘以5/2。
借助EViews的@daycount函数,我们可以使用下面这一行代码在EViews中手动创建此变量:
series td2 = @daycount(“Mon-Fri”) – 5/2*@daycount(“Sat-Sun”)
此TD2规范将每个月的交易日数纳入ARIMAX估计中使用的单个回归量。JDemetra+提供了6种替代方案,包括:
•TD7:创建一个变量,用于表示每个时期内星期一的数量与星期日的数量之差,然后创建第二个变量,用于表示每个时期内星期二的数量与星期日的数量之差,依此类推,直到表示星期六的数量与星期日的数量之差。
•TD3:为工作日数与星期日数的5倍之差创建一个变量,为星期六数与星期天数之差创建第二个变量。
闰年效应
闰年效应也可通过回归量建模。对于月度数据,除二月外,所有月份的数值均为零,非闰年二月的数值为-0.25,闰年为0.75。在EViews中,我们可以使用以下方法手动创建此变量:
series lp = (@daycount=28)*-0.25 + (@daycount=29)*0.75
Easter
Easter的处理方式稍微复杂一些。首先,Easter默认被认为是一个8天的时期,结束于Easter星期日的前一天。在这8天中,基础数据的季节性模式受到Easter假期的影响。Easter变量的计算方法是当前期间8天假期的百分比减去1600年至2099年期间8天假期的平均百分比。
例如,2021年的8天Easter假期从3月27日持续到4月3日。因此,8天中有5天(62.5%)在3月,3天(37.5%)在4月。1600年至2099年间,3月的平均百分比为38.2%。4月的平均百分比为61.8%。
因此,2021年Easter变量值在除3月(取值为24.3(62.5–38.2)和4月(取值为-24.3(37.5–61.8))以外的所有月份中均为零。
在EViews中创建此变量有点儿麻烦,因为我们需要创建一个新的工作文件页面,日期范围从1600年到2099年,并计算Easter假期。后者非常简单,这要归功于EViews的@holiday函数。
pagecreate(page=eastercalc) m 1600 2099
series easterspan = @holiday("easter(-8) easter(-1)")
series easter = easterspan - @meansby(easterspan, @month)
copy eastercalc\easter untitled\easter
pagedelete eastercalc
有手动效果的JDemetra+
我们创建了一组外生变量并将其放入我们的工作文件中:
我们可以通过使用User Regressors来告诉JDemetra+使用它们。我们再次使用RSA3的默认规范,切换到User Regressors选项卡并添加我们创建的变量:
请注意,在添加用户回归量时,JDemetra+允许您*要添加的回归量的类型。就我们的目的而言,未定义类型的回归量就足够了。(我们可以选择Calendar/Trading Day,然后在Regression选项卡上将Trading Day类型从None切换到User,这将产生相同的结果。)
单击确定会生成输出。我们将输出系列重命名为HOUST_D11_RSA3CAL(以表示我们在自己的日历变量中使用了RSA3规范)。
如果我们将此系列与之前的HOUST_D11_RSA4系列一起打开,我们可以看到它们是相同的,证明我们可以创建自己的日历变量并将它们添加到JDemetra+中,产生与内置日历变量相同的结果。
X-13内置效果
如果我们想在美国人口普查X-13包中执行相同类型的调整,我们可以打开我们的系列并选择Proc->Seasonal Adjustment->Census X-13…
在Transform选项卡上,我们将选择更改为Auto (None/log)。在X-13内置regressor 选项卡上,我们添加了交易日1系数和8天Easter效应。我们还添加了一些自动异常值,并将ARIMA模型自动转换为X - 11模型。
Census X-13程序的结果在数值上与JDemetra+产生的结果并不相同,但很接近:
以下代码重现了我们所做的工作:
wfcreate m 1990 2023
fetch(db=fred) houstnsa
houstnsa.jdemetra(spec=rsa4, noleapadj, eastertest=none, tradetest=none)
rename houstnsa_d11 houst_d11_rsa4
series td2 = @daycount("mon-fri")-5/2*@daycount("sat-sun")
series lp = (@daycount=28)*-0.25 + (@daycount=29)*0.75
pagecreate(page=eastercalc) m 1600 2099
series easterspan = @holiday("easter(-8) easter(-1)")
series easter = easterspan - @meansby(easterspan, @month)
copy eastercalc\easter untitled\easter
pagedelete eastercalc
houstnsa.jdemetra(spec=rsa3, userregs="td2 lp easter", usertypes="undef undef undef")
rename houstnsa_d11 houst_d11_rsa3cal
houstnsa.x13(save="d11", tf=auto, outtype="tc ao ls", html) @x11arima() @reg(regs="td1coef,easter[8]") @x11()
rename houstnsa_d11 houst_d11_x13
group compares houst_d11_rsa3cal houst_d11_rsa4 houst_d11_x13
show compares
农历新年(又称中国新年)
现在我们已经演示了如何创建我们自己的Easter假期变量以进行季节性调整(以及交易日和闰年),以及如何将其与内置变量相匹配,我们可以继续为其他假期创建变量,例如农历新年。农历新年是世界许多国家的重要节日,节日的时间会对经济变量产生很大影响。
在较近的一篇论文中,Song Yanfei在Luan & Zhang之前的论文的基础上,展示了如何在Census X-13中对节日进行建模,甚至提出了如何在使用X-13时使用Akaike 信息准则来选择较合适的天数来对节日进行建模。
Ping An将这种方法整合到了CNY_EVP EViews插件中,该插件允许用户为农历新年创建外生变量,并将这些变量纳入人口普查X-13。Ping An(和之前的作者)的建议之一是为农历近年构建三个单独的变量:
1.节前时期——除夕前一天结束
2.节日期间——从除夕到初七
3.节后时期——从初七的第二天开始
我们将遵循类似的流程,在JDemetra的季节性调整中模拟农历新年的影响。按照An的建议,我们将前期的持续时间设置为10天,期间的持续时间设置为8天,后期的持续时间设置为10天。
各个变量的计算方式与上面Easter的方式类似-取每个月(或季度)中该期间的天数百分比,然后减去几年中该月的平均天数。与Easter不同,我们只使用数据样本中的年份来取平均值,而不是Easter使用的1600-2099范围。
同样,使用EViews内置的@holiday函数,我们可以使用以下代码轻松创建这些变量:
series cny_b = @holiday("cny(-11) cny(-2)") - @meansby(@holiday("cny(-11) cny(-2)"), @month)
series cny_d = @holiday("cny(-1) cny(6)") - @meansby(@holiday("cny(-1) cny(6)"), @month)
series cny_a = @holiday("cny(7) cny(16)") - @meansby(@holiday("cny(7) cny(16)"), @month)
例如,术语@holiday("cny(-11) cny(-2)")*了从农历新年前11天开始到农历新年除夕前一天结束的十天时间。
创建这些变量后,我们可以按照之前的方式对农历新年执行JDemetra+季节性调整核算:
我们甚至可以指示JDemetra+使用其自己的交易日变量之一,以及我们自己的农历新年变量。
我们可以将此调整的输出与未修改的RSA3(即没有任何日历效应)的输出进行比较:
差别不大。这并不奇怪——几乎没有经济理由相信农历新年会影响美国的房屋建设。如果我们有亚洲国家的经济数据,可能会产生重大影响!
北京天演融智软件有限公司(科学软件网)是EViews软件在中国的授权经销商,为中国的软件用户提供优质的软件销售和培训服务。
手机网站
微信号码
地址:北京市 海淀区 北京市海淀区上地东路35号院1号楼3层1-312-318、1-312-319
联系人:王经理女士
微信帐号:18510103847