我一直在使用EViews statconn接口,通过R的预测包中的nsdiffs(test=c("ch"))函数从弗雷德循环大量的序列,以检查其中有多少%需要季节性差异。然而,在26,000+系列的试运行之后,OCSB测试返回了1245个阳性结果(output=1),而Canova测试的结果为零,这让我怀疑我做错了什么,但不知道到底是什么。
for !k = 1 to !keriesnumber
xput(rtype=ts) sertest!k 'pass the series from EViews to R
xrun library(forecast) 'call necessary forecast library
xrun sertest!k <- ts(sertest!k, start=c(1990, 1), end=c(2014, 6), frequency=12) 'specify timeseries properties
xrun kpss_!k<- ndiffs(sertest!k) 'kpss test
xrun ch_!k<-nsdiffs(sertest!k,m=frequency(sertest!k),test=c("ch")) 'ch test
xrun ocsb_!k<-nsdiffs(sertest!k,m=frequency(sertest!k),test=c("ocsb")) 'ocsb test
xget kpss_!k 'return the three output integers back to eviews
xget ch_!k
xget ocsb_!k
!count=!count+1
kpss_vector(!count)=kpss_!k 'store the results in a vector
ch_vector(!count)=ch_!k
ocsb_vector(!count)=ocsb_!k
next我是不是在nsdiffs命令中错误地指定了频率或其他什么?如果是,为什么(我认为是正确的)?在没有问题的情况下执行OCSB:~1/26似乎是在这种类型的数据集中不拒绝null的合理次数。我希望作为一个非本地的R用户,我只是忘了调用一个库或一些简单的东西,一些人可以识别这个问题:)。否则,似乎奇怪的是,在我测试的26000的宏观经济系列赛将不需要季节性差异的CH测试。我也尝试了一个类似的例程,一些数据来自于原始CH论文(95.html),但是仍然无法找到神圣的output=1。
发布于 2014-12-18 23:44:05
以参考文件所示应用程序中使用的“工资”系列为例,根据Canova和Hansen检验(即不稳定的季节周期表明需要季节性差异)返回值1:
require(forecast)
wage <- structure(c(2.32, 2.35, 2.38, 2.4, 2.41, 2.44, 2.47, 2.5, 2.52,
2.55, 2.58, 2.61, 2.63, 2.66, 2.7, 2.73, 2.78, 2.82, 2.87, 2.92,
2.96, 3.02, 3.07, 3.12, 3.15, 3.2, 3.26, 3.3, 3.36, 3.43, 3.49,
3.53, 3.61, 3.66, 3.72, 3.79, 3.83, 3.9, 3.98, 4.05, 4.09, 4.18,
4.29, 4.39, 4.42, 4.48, 4.57, 4.66, 4.73, 4.8, 4.91, 5.01, 5.1,
5.19, 5.29, 5.4, 5.5, 5.63, 5.74, 5.89, 6, 6.07, 6.21, 6.34,
6.46, 6.57, 6.7, 6.9, 7.06, 7.17, 7.31, 7.44, 7.55, 7.62, 7.71,
7.81, 7.91, 7.96, 8.02, 8.15, 8.25, 8.29, 8.35, 8.43, 8.51, 8.54,
8.59, 8.68), .Tsp = c(1964, 1985.75, 4), class = "ts")
x <- diff(log(wage))
nsdiffs(x, frequency(x), test = "ch")
# [1] 1该系列的测试统计值为1.11,接近参考文件中报告的1.14。在计算协方差矩阵时,由于滞后截断参数的选择不同,可能会产生差异。(下面的示例需要从SeasDummy包的源文件中复制和粘贴函数forecast和SD.test,因为这些函数不是导出的。)
SD.test(x, 4)
[1] 1.112811在使用其他系列时,请记住在频率为零时过滤可能的单位根,并在转换后的序列上应用Canova和Hansen测试(如果需要的话),例如数据的第一个差异。
编辑
我没有在auto.arima的文档中找到OP提到的语句,但是看一下源代码,似乎首先确定了季节性差异的数量,然后应用了一个选择规则差异数量的测试。
我不熟悉OCSB测试,这是nsdiffs中的默认测试。对于这种测试,在应用测试时,数据中可能存在频率为零的单位根(就像具有相同空假设的H曲测试中的情况一样)。然而,如果使用Canova和Hansen检验,则宜将数据转换为在零频率处删除可能的单位根。
您可以通过运行第一个d和D并相应地转换数据来改变选择ndiffs和D的顺序。然后,您可以使用选项nsdiffs在转换后的系列上运行test="ch"。这样,您可以将参数d和D传递给auto.arima。
https://stackoverflow.com/questions/27554942
复制相似问题