2014-12-18 3 views
1

나는 EViews statconn DCOM 인터페이스를 사용하여 R의 예측 패키지에있는 nsdiffs (test = c ("ch")) 함수를 통해 FRED에서 많은 수의 시리즈를 루프하여 계절별 차이가 필요한 비율을 조사했습니다 . 그러나 26,000+ 시리즈의 시운전 후에 OCSB 테스트는 1,245 개의 긍정적 인 결과를 나타냅니다 (출력 = 1). 그러나 Canova Hansen 테스트는 0을 반환합니다. 이는 내가 잘못한 일을하고 있는지 의심 스럽지만,NSDIFFS (R 예측 패키지)가 계절성을 표시하지 않는 이유는 무엇입니까?

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 (http://www.ssc.wisc.edu/~bhansen/progs/jbes_95.html)에서 데이터의 일부와 유사한 루틴을 시도했지만 여전히 couldnt는 신성한 출력 = 1을 찾을 수 없습니다.

+0

원래 답변을 연장했습니다. – javlacalle

답변

0

기준 용지에 도시 된 응용에 사용되는 일련의 "임금"값 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에 가까울수록 참조 서적에보고됩니다. 공분산 행렬을 계산할 때 지연 감소 매개 변수의 다른 선택 때문에 차이가 발생할 수 있습니다. (아래의 예는 복사를 필요로하며, 이러한 기능이 수출되지 않는 한 기능 SeasDummyforecast 패키지의 소스 파일에서 SD.test 붙여 넣기.)

SD.test(x, 4) 
[1] 1.112811 

, 다른 일련의 작업 주파수 제로 가능한 단위 뿌리를 필터링 기억하는 경우 Canova 및 Hansen 테스트를 변형 된 시리즈 (필요한 경우)에 적용하는 것 (예 : 데이터의 첫 번째 차이점).

편집

나는를 선택 후 소스는 계절 차이의 수를 먼저 결정되는 것으로 보인다 코드에서 테스트를 찾고 영업 이익이 아니라 언급 auto.arima 명령문의 문서에서 찾을 수 없습니다

규칙적인 차이의 숫자가 적용됩니다.

OCSB 테스트에 익숙하지 않습니다.이 테스트는 nsdiffs의 기본 테스트입니다. 이 시험의 경우, 동일한 영가설을 가진 HEGY 시험의 경우와 같이 시험을 적용 할 때 주파수 영점에있는 단위근이 데이터에 존재할 수 있습니다. 그러나 Canova 및 Hansen 테스트를 사용하는 경우 0 단위 빈도에서 가능한 단위근을 제거하는 데이터를 변환하는 것이 좋습니다.

dD이 선택된 순서를 변경하려면 먼저 ndiffs을 실행하고 이에 따라 데이터를 변환하십시오. 그런 다음 변환 된 시리즈에서 test="ch" 옵션을 사용하여 nsdiffs을 실행할 수 있습니다. 이 방법으로 인수 dDauto.arima에 전달할 수 있습니다.