짧은 다변량 시계열을 예측하는 가장 어리석은 방법


16

29 번째 시간 단위에 대해 다음 4 가지 변수를 예측해야합니다. 대략 2 년 분량의 기록 데이터가 있으며 여기서 1과 14와 27은 모두 같은 기간 (또는 연도)입니다. 결국, 나는 , w d , w cp 에서 Oaxaca-Blinder 스타일 분해를 하고 있습니다. 있습니다.

time    W               wd              wc               p
1       4.920725        4.684342        4.065288        .5962985
2       4.956172        4.73998         4.092179        .6151785
3       4.85532         4.725982        4.002519        .6028712
4       4.754887        4.674568        3.988028        .5943888
5       4.862039        4.758899        4.045568        .5925704
6       5.039032        4.791101        4.071131        .590314
7       4.612594        4.656253        4.136271        .529247
8       4.722339        4.631588        3.994956        .5801989
9       4.679251        4.647347        3.954906        .5832723
10      4.736177        4.679152        3.974465        .5843731
11      4.738954        4.759482        4.037036        .5868722
12      4.571325        4.707446        4.110281        .556147
13      4.883891        4.750031        4.168203        .602057
14      4.652408        4.703114        4.042872        .6059471
15      4.677363        4.744875        4.232081        .5672519
16      4.695732        4.614248        3.998735        .5838578
17      4.633575        4.6025          3.943488        .5914644
18      4.61025         4.67733         4.066427        .548952
19      4.678374        4.741046        4.060458        .5416393
20      4.48309         4.609238        4.000201        .5372143
21      4.477549        4.583907        3.94821         .5515663
22      4.555191        4.627404        3.93675         .5542806
23      4.508585        4.595927        3.881685        .5572687
24      4.467037        4.619762        3.909551        .5645944
25      4.326283        4.544351        3.877583        .5738906
26      4.672741        4.599463        3.953772        .5769604
27      4.53551         4.506167        3.808779        .5831352
28      4.528004        4.622972        3.90481         .5968299

나는 p w d + ( 1 p ) w c 더하기 측정 오차 로 근사 할 수 있다고 생각 하지만 낭비, 근사 오차 또는 도난으로 인해 W가 항상 그 양을 초과한다는 것을 알 수 있습니다 .+(1)

여기 2 가지 질문이 있습니다.

  1. 내 첫 번째 생각은 1 개의 지연과 외생 시간 및 기간 변수를 사용하여 이러한 변수에 대한 벡터 자동 회귀를 시도하는 것이었지만 데이터가 거의 없기 때문에 나쁜 생각처럼 보입니다. (1) "미세 수"에 비해 성능이 우수하고 (2) 변수 사이의 연결을 이용할 수있는 시계열 방법이 있습니까?

  2. 다른 한편으로, VAR에 대한 고유 값의 계수는 모두 1보다 작으므로 비정규성에 대해 걱정할 필요가 없다고 생각합니다 (Dickey-Fuller 테스트는 그렇지 않다고 제안합니다). 예측은 p를 제외하고 시간 추세가있는 유연한 일 변량 모델의 ​​예측과 대부분 일치합니다. . 지연에 대한 계수는 대부분 합리적이지는 않지만 대부분 합리적으로 보입니다. 기간 추세의 일부와 마찬가지로 선형 추세 계수가 중요합니다. 여전히 VAR 모델보다이 간단한 접근 방식을 선호해야하는 이론적 인 이유가 있습니까?

전체 공개 : 나는 Statalist 에 대해 비슷한 질문을 했지만 아무런 대답이 없었습니다.


안녕하세요, 시계열 데이터에 적용되지 않은 분해에 대해 더 많은 컨텍스트를 제공 할 수 있습니까?
Michelle

'='(')+(1')(')+()(')+(ϵ'ϵ)여기서 소수는 변수의 현재 값을 나타냅니다.
Dimitriy V. Masterov

흠, 회귀 전에 먼저 특이 치를 제외하는 것은 어떻습니까?
athos

어느 정도의 정밀도가 필요합니까? 아시다시피 ARIMA 모델을 사용하고 매우 낮은 MSE를 얻을 수 있기 때문에 묻습니다. 그러나 이러한 모델은 일반적으로 최대 가능성을 사용하여 적합하므로 과적 합이 거의 확실합니다. 작은 데이터를 처리 할 때 베이지안 모델은 강력하지만 ARIMA 모델보다 MSE가 훨씬 높습니다.
Robert Smith

답변:


2

이 질문은 수년간 여기에 있었지만 여전히 다음 아이디어가 유용 할 수 있음을 이해합니다.

  1. 변수 사이에 연결이 있고 이론적 수식이 제대로 작동하지 않으면 PCA를 사용하여 체계적인 방식으로 (선형) 종속성을 찾을 수 있습니다. 이 질문에서 주어진 데이터에 대해 이것이 잘 작동 함을 보여줄 것입니다.

  2. 데이터가 많지 않은 경우 (총 112 개), 몇 가지 모델 매개 변수 만 추정 할 수 있으며 ( 예 : 전체 계절 효과를 맞추는 것은 옵션이 아님) 사용자 정의 모델을 사용하는 것이 합리적 일 수 있습니다.

다음은 이러한 원칙에 따라 예측하는 방법입니다.

1 단계. PCA를 사용하여 데이터의 종속성을 밝힐 수 있습니다. R에 저장된 데이터와 함께 x:

> library(jvcoords)
> m <- PCA(x)
> m
PCA: mapping p = 4 coordinates to q = 4 coordinates

                              PC1         PC2          PC3          PC4
standard deviation     0.18609759 0.079351671 0.0305622047 0.0155353709
variance               0.03463231 0.006296688 0.0009340484 0.0002413477
cum. variance fraction 0.82253436 0.972083769 0.9942678731 1.0000000000

이것은 처음 두 주요 성분이 분산의 97 %를 설명하고 세 성분을 사용하면 분산의 99.4 %를 차지함을 보여줍니다. 따라서 처음 2 ~ 3 대의 PC 모델을 만드는 것으로 충분합니다. (데이터는 대략 만족합니다=0.2341.1528.842.)

PCA를하는 것은 4×4직교 행렬. 이러한 행렬의 공간은 6 차원이므로 6 개의 매개 변수를 추정했습니다. (실제로 PC1 만 사용하기 때문에 "유효한"매개 변수가 적을 수 있습니다.

2 단계. PC1에는 분명한 추세가 있습니다.

> t <- 1:28
> plot(m$y[,1], type = "b", ylab = "PC1")
> trend <- lm(m$y[,1] ~ t)
> abline(trend)

PC1의 동향

이 추세가 제거 된 PC 점수 사본을 만듭니다.

> y2 <- m$y
> y2[,1] <- y2[,1] - fitted(trend)

다른 PC의 점수를 플롯하면 명확한 추세가 나타나지 않으므로 변경하지 마십시오.

PC 점수가 중심에 있기 때문에 추세는 PC1 샘플의 질량 중심을 통과하며 추세를 맞추는 것은 하나의 매개 변수를 추정하는 데만 해당합니다.

3 단계 . 페어 산포도는 명확한 구조를 나타내지 않으므로 PC를 독립적 인 것으로 모델링합니다.

> pairs(y2, asp = 1, oma = c(1.7, 1.7, 1.7, 1.7))

추세를 제거한 후 PC의 페어 산포도

단계 4. PC1에는 지연 시간이 13 인 명확한주기가 있습니다 (질문에서 제안한대로). 이것은 다른 방식으로 볼 수 있습니다. 예를 들어, 지연 13 자기 상관은 상관 관계 분석에서 0과 크게 다른 것으로 나타납니다.

> acf(y2[,1])

드리프트를 제거한 후 PC1의 ACF

(시프트 된 사본과 함께 데이터를 플로팅 할 때주기가 시각적으로 더 두드러집니다.)

추정 된 매개 변수의 수를 낮게 유지하고 상관 관계가 유의 한 기여를하는 유일한 지연으로 지연 13을 표시하므로 PC1을 다음과 같이 모델링합니다. 와이+13(1)=α13와이(1)+σε+13여기서 ε독립적이고 표준 정규 분포입니다 (즉, 대부분의 계수가 0으로 고정 된 AR (13) 프로세스입니다). 추정하기 쉬운 방법α13σlm()기능을 사용하고 있습니다 :

> lag13 <- lm(y2[14:28,1] ~ y2[1:15,1] + 0)
> lag13

Call:
lm(formula = y2[14:28, 1] ~ y2[1:15, 1] + 0)

Coefficients:
y2[1:15, 1]  
     0.6479  

> a13 <- coef(lag13)
> s13 <- summary(lag13)$sigma

타당성 테스트로서, 주어진 데이터 (검은 색)와 PC1 (파란색)에 대한 내 모델의 임의 궤적과 함께 1 년의 미래 범위를 표시합니다.

t.f <- 29:41
pc1 <- m$y[,1]
pc1.f <- (predict(trend, newdata = data.frame(t = t.f))
          + a13 * y2[16:28, 1]
          + rnorm(13, sd = s13))
plot(t, pc1, xlim = range(t, t.f), ylim = range(pc1, pc1.f),
     type = "b", ylab = "PC1")
points(t.f, pc1.f, col = "blue", type = "b")

PC1의 시뮬레이션 된 궤도

파란색으로 시뮬레이션 된 경로는 데이터의 합리적인 연속처럼 보입니다. PC2와 PC3의 상관 관계는 유의 한 상관 관계를 나타내지 않으므로 이러한 구성 요소를 화이트 노이즈로 모델링합니다. PC4는 상관 관계를 보여 주지만, 총 분산에 거의 기여하지 않아 모델링 할 가치가없는 것처럼 보이며,이 구성 요소를 화이트 노이즈로 모델링합니다.

여기에 두 개의 매개 변수가 더 장착되었습니다. 이것은 우리에게 112 개의 숫자로 구성된 데이터로 시작했을 때 터무니없는 것처럼 보이지 않는 PCA를 포함한 총 9 개의 파라미터를 제공합니다.

예보. 노이즈를 제거하고 (평균을 구하기 위해) PCA를 뒤집어 수치 예측을 얻을 수 있습니다.

> pc1.f <- predict(trend, newdata = data.frame(t = t.f)) + a13 * y2[16:28, 1]
> y.f <- data.frame(PC1 = pc1.f, PC2 = 0, PC3 = 0, PC4 = 0)
> x.f <- fromCoords(m, y.f)
> rownames(x.f) <- t.f
> x.f
          W       wd       wc         p
29 4.456825 4.582231 3.919151 0.5616497
30 4.407551 4.563510 3.899012 0.5582053
31 4.427701 4.571166 3.907248 0.5596139
32 4.466062 4.585740 3.922927 0.5622955
33 4.327391 4.533055 3.866250 0.5526018
34 4.304330 4.524294 3.856824 0.5509898
35 4.342835 4.538923 3.872562 0.5536814
36 4.297404 4.521663 3.853993 0.5505056
37 4.281638 4.515673 3.847549 0.5494035
38 4.186515 4.479533 3.808671 0.5427540
39 4.377147 4.551959 3.886586 0.5560799
40 4.257569 4.506528 3.837712 0.5477210
41 4.289875 4.518802 3.850916 0.5499793

불확실성 밴드는 분석적으로 또는 간단히 Monte Carlo를 사용하여 얻을 수 있습니다.

N <- 1000 # number of Monte Carlo samples
W.f <- matrix(NA, N, 13)
for (i in 1:N) {
    y.f <- data.frame(PC1 = (predict(trend, newdata = data.frame(t = t.f))
              + a13 * y2[16:28, 1]
              + rnorm(13, sd = s13)),
              PC2 = rnorm(13, sd = sd(y2[,2])),
              PC3 = rnorm(13, sd = sd(y2[, 3])),
              PC4 = rnorm(13, sd = sd(y2[, 4])))
    x.f <- fromCoords(m, y.f)
    W.f[i,] <- x.f[, 1]
}
bands <- apply(W.f, 2,
               function(x) quantile(x, c(0.025, 0.15, 0.5, 0.85, 0.975)))
plot(t, x$W, xlim = range(t, t.f), ylim = range(x$W, bands),
     type = "b", ylab = "W")
for (b in 1:5) {
    lines(c(28, t.f), c(x$W[28], bands[b,]), col = "grey")
}

예측의 불확실성 구간

줄거리는에 대한 실제 데이터를 보여줍니다 적합 모형을 사용한 예측에 대한 60 % (내부 3 개 선) 및 95 % (외부 2 개 선) 불확실성 대역과 함께.


1
재미있는 접근법. 이것을 조금 소화시켜 보겠습니다.
Dimitriy V. Masterov 2018
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.