여러 시계열에서 동일한 모델 추정


26

나는 시계열의 초보자 배경 (일부 ARIMA 추정 / 예측)을 가지고 있으며 완전히 이해하지 못하는 문제에 직면하고 있습니다. 도움을 주시면 감사하겠습니다.

나는 동일한 유형의 데이터를 설명하는 동일한 시간 간격과 동일한 빈도로 여러 시계열을 분석하고 있습니다. 각 계열은 하나의 변수이므로 내가보고있는 다른 해당 예측 변수가 없습니다.

모든 시리즈를 설명하는 단일 모델을 추정하라는 요청을 받았습니다. 예를 들어 모든 시리즈에 맞는 동일한 차수, 계수 등으로 하나의 ARIMA (p, d, q)를 찾을 수 있다고 상상해보십시오. 관리자는 각 시리즈를 개별적으로 평가하지 않기를 원하지 않으며 시리즈 간 종속성이있는 VAR 모델을 사용하지 않기를 바랍니다.

내 질문은 : 나는 그런 모델을 무엇이라고 부를 것이며, 어떻게 모델을 추정 / 예측할 ​​수 있습니까? 코드 예제를 사용하는 것이 더 쉬운 경우 SAS와 R을 모두 사용합니다.

답변:


8

그리드 검색을 수행 할 수 있습니다. ARIMA (1,0,0)로 시작하여 ARIMA (5,2,5) 또는 그 밖의 모든 가능성을 시도하십시오. 모델을 각 시리즈에 맞추고 MAPE 또는 MASE와 같은 스케일 독립적 오류 측정을 추정하십시오 (MASE가 더 나을 것입니다). 모든 모델에서 평균 MASE가 가장 낮은 ARIMA 모델을 선택하십시오.

각 계열에 대한 오차 측정 값을 교차 검증 하고 결과를 순진한 예측 과 비교 하여이 절차를 개선 할 수 있습니다.

모든 시리즈를 설명 할 단일 모델을 찾는 이유를 묻는 것이 좋습니다. 동일한 프로세스에서 생성되지 않으면 좋은 생각처럼 보이지 않습니다.


2
감사합니다-이걸 시도합니다. 나는 이것이 최선의 생각처럼 보이지 않는다는 데 동의합니다. 내가 얻은 주장은 각 계열에 충분한 추정치 (~ 28)가 충분하지 않으며 모든 계열에 대해 추정하는 것이 더 강력하다는 것입니다. 나는 그 주장에 동의하지 않습니다.
sparc_spread

21

이를 수행하는 한 가지 방법은 모든 데이터로 긴 시계열을 구성하고 데이터를 분리하기 위해 계열간에 누락 된 값 시퀀스를 만드는 것입니다. 예를 들어, R, 당신은 세 가지 시리즈 (있는 경우 x, y그리고 z다음과 같이) 길이 (100) 및 주파수 (12)의 각각을, 당신은 그들에 가입 할 수 있습니다

combined <- ts(c(x,rep(NA,56),y,rep(NA,56),z,rep(NA,56)),frequency=12)

계절 값이 유지되도록 결 측값 수가 선택됩니다. 마지막 연도에 8 개의 결 측값을 채우고 다음 시리즈 전에 4 개의 결석 연도 (48 개의 값)를 추가했습니다. 직렬 간 상관 관계가 쇄도하기에 충분해야합니다.

그런 다음 auto.arima()최상의 모델을 찾는 데 사용할 수 있습니다 .

library(forecast)
fit <- auto.arima(combined)

마지막으로 예측을 얻기 위해 결합 된 모델을 각 계열에 개별적으로 적용 할 수 있습니다.

fit.x <- Arima(x,model=fit)
fit.y <- Arima(y,model=fit)
fit.z <- Arima(z,model=fit)

5
+1, 깔끔한 트릭. 다른 답변에 대한 OP의 의견으로 판단하여 일종의 패널 데이터 모델을 제안하려고했지만 이것이 더 좋습니다.
mpiktas

이것은 큰 도움이 될 것입니다. 더 많은 것을 설명 할 수 있습니까 : 계절적 기간을 유지하기 위해 결 측값의 수가 선택 되었습니까? 완전히 따르지 않아서 죄송합니다. 감사합니다.
sparc_spread

1
데이터에 계절성이있는 경우 (매월 관측치가있는 경우가 많음) 긴 계열이 여전히 1 월의 배수를 12로 나누고 2 월의 배수를 12로 나누는 등을 원합니다. 그런 다음 모델을 선택할 때 계절성을 적절하게 모델링 할 수 있습니다.
Rob Hyndman

3
이 트릭에 추가하려면 범주 멤버 자격을 나타내는 외부 회귀 (xreg)를 추가 할 수 있습니다. 이것은 다른 계수를 공통으로 유지하면서 다른 계열에 대한 별도의 수단을 설명합니다.
Jameson Quinn

6

다중 시계열에 대한 단일 모델 추정은 패널 데이터 계량 경제 의 영역입니다 . 그러나 설명 변수가없는 경우에는 @Rob Hyndman이 가장 적합합니다. 그러나 시계열의 수단이 다르면 (이 경우 @Rob Hyndman의 방법이 실패해야하기 때문에 테스트하십시오!) ARMA 구조는 동일하지만 Arellano-Bond를 사용해야합니다 (죄송합니다. 페이지가 없으므로 구글에서 검색하십시오) type Estimator. 이 경우의 모델은 다음과 같습니다.

yit=αi+ρ1yi,t1+...+ρpyi,tp+εit

iεiti


1
귀하의 솔루션과 다른 것들에 감사드립니다. 당신은 언급 : 그러나 시계열의 수단이 다른 것으로 판명되면 (이 경우 @Rob Hyndman의 방법이 실패해야하기 때문에 그것을 테스트하십시오!) 이것이 왜 그런지 더 설명 할 수 있습니까? 감사.
sparc_spread

2
@sparc_spread, 단지 두 시리즈라고 가정하십시오. 하나는 분산 1로 약 0에 집중되고 다른 하나는 분산 1로 1000에 집중됩니다. 그런 다음 두 계열이 동일한 계수를 사용하여 적합하면 alpha_1 = alpha_2를 제한하므로 두 계열에 대한 예측은 500, 끔찍하게 벗어났다. 기본적으로 모든 시리즈를 동일한 모델에 속하는 것으로 처리하려면 조인트 모델을 피팅하기 전에 약간의 최근 화 / 정규화가 필요할 수 있습니다.
zkurtz

4

단일 데이터 시리즈를 만들기위한 Rob Hyndman의 접근 방식에 대한 대안은 데이터를 병합하는 것입니다. 다중 시계열이 동일한 이벤트를 기록하는 일련의 기계에서 잡음이있는 판독 값을 나타내는 경우에 적합 할 수 있습니다. (각 시계열의 규모가 다른 경우 먼저 데이터를 정규화해야합니다.)

참고 : 여전히 28 개의 판독 값으로 끝나고 소음이 적기 때문에 상황에 맞지 않을 수 있습니다.

t1=xts(jitter(sin(1:28/10),amount=0.2),as.Date("2012-01-01")+1:28)
t2=xts(jitter(sin(1:28/10),amount=0.2),as.Date("2012-01-01")+1:28)
t3=(t1+t2)/2

여기에 이미지 설명을 입력하십시오


이것은 모든 신호가 본질적으로 유사한 경우에만 작동합니다 (예 : 주기적). 예를 들어 사인파 중 2 개가 위상이 180도를 벗어나면 완전히 취소됩니다!
tdc

3
예, 각 데이터 계열이 동일한 데이터를 나타내는 것으로 가정 할 때만 데이터 평균을 계산하는 것이 적합하며 각기 다른 노이즈가 있다는 점만 다릅니다.
대런 쿡

1

숨겨진 Markov 모델과 역동적 인 베이지안 네트워크를 살펴 보겠습니다. 시계열 데이터를 모델링합니다. 또한 다양한 시계열 사례, 예를 들어 다양한 개인의 여러 혈압 시계열을 사용하여 훈련합니다. 패키지를 빌드하려면 Python과 R에서 패키지를 찾아야합니다. 이러한 모델의 구조를 정의해야 할 수도 있습니다.


0

나는 똑같은 일을하려고합니다. 분명히 '다변량 자동 회귀'모델이라는 것이 있습니다. 나는 그것에 대한 참조를 찾았지만 그것을 사용하는 방법을 찾지 못했습니다. 링크 된 논문을 바탕으로 R로 구현되었다고 가정합니다.

http://journal.r-project.org/archive/2012-1/RJournal_2012-1_Holmes~et~al.pdf


표준 접근 방식은 벡터 자동 회귀 분석 이며 var 라는 R 패키지가 있습니다.
Xi'an

벡터 자동 등록이 패널 데이터의 자동 회귀와 다른가요? 아니면 다른 분야, 다른 이름의 문제입니까? plm 패키지는 패널 데이터 용으로 제안되었습니다. cran.r-project.org/web/packages/plm/vignettes/plm.pdf clidyn.ethz.ch/papers/arfit.pdf
Mox
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.