데이터 포인트를 평균화하여 두 개의 시계열 결합


10

평균 제곱 예측 오류를 최소화하여 시계열 데이터 세트의 예측 및 역전 (즉, 예측 된 과거 값)을 하나의 시계열로 결합하고 싶습니다.

2001 년에서 2010 년 사이의 시계열이 2007 년의 차이와 함께 있다고 가정 해 . 2001 년에서 2007 년 사이의 데이터 (빨간색 선 )를 사용하여 2007 년을 예측 하고 2008-2009 년 데이터 ( )를 사용하여 할 수 라인 라고 ).Y bYfYb

및 의 데이터 포인트를 된 데이터 포인트 Y_i 로 결합하고 싶습니다 . 이상적으로 는 의 평균 제곱 예측 오류 (MSPE)를 최소화하도록 가중치 를 얻고 싶습니다 . 이것이 가능하지 않다면 두 시계열 데이터 포인트 사이의 평균을 어떻게 찾을 수 있습니까?Y b w Y iYfYbwYi

Yi=wYf+(1w)Yb

간단한 예를 들면 다음과 같습니다.

tt_f <- ts(1:12, start = 2007, freq = 12)
tt_b <- ts(10:21, start=2007, freq=12)

tt_f
     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2007   1   2   3   4   5   6   7   8   9  10  11  12
tt_b
     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2007  10  11  12  13  14  15  16  17  18  19  20  21

나는 (평균화를 보여주고 ... MSPE를 최소화하는 것을 원합니다)

tt_i
     Jan Feb Mar Apr May Jun  Jul  Aug  Sep  Oct  Nov  Dec
2007 5.5 6.5 7.5 8.5 9.5 10.5 11.5 12.5 13.5 14.5 15.5 16.5

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


예측 모델이란 무엇입니까 (arima, ets, 기타)? (+1) 접근 제안에 대해 한 번 그런 방식에 대해 생각했지만 보간 후 Expectation-Maximization에 머물 렀습니다. 원칙적으로 학습 기간은 중요 할 수 있으며, 더 큰 정보 (빨간색 그림 예측)를 기반으로 모델에 더 높은 가중치를 부여합니다. 일부 정확도 기준은 가중치를 만드는 데 유용 할 수 있으며 시계열 길이와 결정적으로 연결되지 않습니다.
Dmitrij Celov

예측 모델을 제외하고 죄송합니다. 위의 내용은 단순히 predict예측 패키지 기능을 사용하는 것입니다. 그러나 HoltWinters 예측 모델을 사용하여 예측하고 역 캐스트 할 것이라고 생각합니다. 나는 <50 카운트가 적은 시계열을 가지고 Poisson 회귀 예측을 시도했지만 어떤 이유로 든 매우 약한 예측입니다.
OSlOlSO

카운트 데이터는 표시 한 위치에서 정확하게 중단 된 것으로 보이며, 예측 및 백 캐스트도 동일한 내용을 보여줍니다. 푸 아송 에서 시간 추세 에 대해 회귀를 만들었습니다 . log(counts)t
Dmitrij Celov

NA값이 없는 카운트 또는 추가 관련 시계열이 있습니까? 하위 기간은 선형 경향에 의해 잘 설명되어 있기 때문에 학습 기간 MSPE를 만드는 것은 오도 할 수 있지만 누락 된 기간에는 어딘가에 드롭 다운이 발생하며 실제로는 모든 시점이 될 수 있습니다. 또한 예측은 추세가 동일하기 때문에 평균은 하나가 아닌 두 개의 구조적 중단을 가져옵니다.
Dmitrij Celov

지금 @Dmitij로 돌아와서 죄송합니다. 당신이 말하는이 '브레이크'는 무엇입니까? 내가 할 않았다 로그 (카운트) GLM의 회귀를. 그리고 카운트 데이터가 <6 미만인 카운트 데이터의 하위 집합이있어서 사용해야합니다. 카운트 만 있습니다. 이 질문 을 보면 내가 가진 데이터에 대한 아이디어를 얻을 수 있습니다. 위의 숫자는 '15up'연령 그룹에만 해당됩니다. 이것이 의미가 있다면?
OSlOlSO

답변:


0

예측 및 백 캐스트에 대한 제곱 예측 오류가 개별적으로 있다고 가정하면 다음과 같이 권장합니다.

w=rep(NA,12);
for(w in 1:12){
w[m]=SPE_Backcast[m]/(SPE_Backcast[m]+SPE_Forecast[m]);
}

이제 w는 예측의 가중치이고 1-w는 백 캐스트의 가중치입니다.


이것은 가장 낮은 값에 더 높은 가중치를 부여하는 것으로 보입니다 (음수가 숫자가 1보다 큰 가중치를 가질 수 있음). 점은 무엇인가? 또한 2 행s/w/m/
naught101

음의 제곱 예측 오차는 어떻게 발생합니까?
Owe Jessen

3

시계열 의 고정 간격 (FI) 스무딩 을 수행하는 것이 목적입니다 . 시간 에서의 관측치의 평활화 값은 조건부 기대 값 표기 위한 시간의 관찰 벡터 시간에 . 상기 갭은 시간 에서 까지의 구간 인 것으로 가정하고 , 은 전체 계열의 길이이다. 시간 이 갭에 있고 기대 값을 으로 쓸 수 있습니다t

Y^t:=E(Yt|Y1:r,Ys:n)
u를 v에 R + 1 개 - 1 N t Y의 t | 1 : r , s : nYu:v:=[Yu,Yu+1,,Yv]uvr+1s1ntY^t|1:r,s:n 조건부 특성을 기억합니다.

스무딩 된 값에는 단순한 형태가 아닙니다. 공분산 구조가 알려진 가우스 고정 시계열의 경우 선형 시스템을 풀면 간극에서 에 대한 추정 된 을 찾을 수 있습니다. tY^tt

시계열 모델을 SS (State Space) 형식으로 만들 수있는 경우 FI 스무딩은 칼만 필터링을 기반으로하는 표준 작업이며 사용 가능한 R 함수를 사용하여 수행 할 수 있습니다. 간격의 값이 누락되도록 지정하기 만하면됩니다. 평활 알고리즘 은 갭에서 에 대한 대한 모든 관련 정보를 포함 하는 숨겨진 상태 를 추정합니다 . ARIMA 모델은 SS 형식으로 넣을 수 있습니다.αt tYtt

흥미롭게도, FI 스무딩은 두 개의 필터의 조합으로 작성 될 수 있습니다. 하나는 앞뒤로 하나는 예상 한 종류의 공식으로 만 숨겨진 상태 추정은 (예측 및 역 캐스트), 그러나 관찰 . 이것을 Rauch-Tung-Striebel 필터링이라고 합니다.Y tαtYt

적어도 곱셈 버전에서 Holt-Winters와 같은 'ad hoc'예측 절차는 SS 형태로 넣을 수 없으므로 간단한 FI 알고리즘이없는 확률 적 모델에 의존합니다. 평활화 수식은 SS 모델을 사용하여 근사화 할 수 있지만 로그 변환과 함께 구조 시계열 모델 을 사용하는 것이 훨씬 간단 합니다. R 통계 패키지 의 'KalmanSmooth', 'tsSmooth'및 'StructTS'기능 이 작업을 수행 할 수 있습니다. R 도움말 페이지에 인용 된 Harvey 또는 Durbin 및 Koopman의 책을 살펴보아야합니다. 평활 알고리즘은 추정 된 대한 조건부 분산을 제공 할 수 있습니다.Yt평활 간격을 만드는 데 사용할 수 있으며 일반적으로 간격 중간에 더 큰 경향이 있습니다. 그러나 Stuctural Models의 추정은 어려울 수 있습니다.

AP <- log10(AirPassengers) 
## Fit a Basic Structural Model
fit <- StructTS(AP, type = "BSM")

## Fit with a gap
AP.gap <- AP
AP.gap[73:96] <- NA
fit.gap <- StructTS(AP.gap, type = "BSM", optim.control = list(trace = TRUE))

# plot in orginal (non-logged) scale
plot(AirPassengers, col = "black", ylab = "AirPass")
AP.missing <- ts(AirPassengers[73:96], start=1955, , freq=12)
lines(AP.missing, col = "grey", lwd = 1)

## smooth and sum 'level' and 'sea' to retrieve series
sm <- tsSmooth(fit.gap)
fill <- apply(as.matrix(sm[ , c(1,3)]), 1, sum)
AP.fill <- ts(fill[73:96], start=1955, , freq=12)
lines(10^AP.fill, col = "red", lwd = 1)

부드럽게 채우기


2

나는 당신의 제안 된 접근 방식이 앞뒤 방송의 수단을 취하는 것에 흥미를 느낀다는 것을 안다.

지적해야 할 점 중 하나는 혼란스러운 구조를 나타내는 모든 시스템에서 예측이 더 짧은 기간 동안 더 정확할 가능성이 있다는 것입니다. 모든 시스템의 경우에는 그렇지 않습니다. 예를 들어 감쇠 진자는 잘못된 기간의 함수로 모델링 할 수 있습니다.이 경우 모든 중기 예측은 잘못된 것일 수 있지만 장기 예측은 모두 시스템이 0으로 수렴하므로 매우 정확합니다. 그러나 그것은 문제의 그래프에서 이것이 여기에서 만드는 합리적인 가정 일 수 있다고 생각합니다.

이는 누락 된 기간의 초기 부분에 대한 예측 데이터와 후자의 부분에 대한 백 캐스트 데이터에 더 의존하는 것이 더 나을 수 있음을 의미합니다. 이를 수행하는 가장 간단한 방법은 예측에 선형으로 감소하는 가중치를 사용하고 백 캐스트에 대한 반대를 사용하는 것입니다.

> n <- [number of missing datapoints] 
> w <- seq(1, 0, by = -1/(n+1))[2:(n+1)]

이것은 첫 번째 요소의 백 캐스트에 약간의 가중치를 부여합니다. 첫 번째 보간 된 점에서 예측 값만 사용하려는 경우 끝에 첨자없이 n-1을 사용할 수도 있습니다.

> w
 [1] 0.92307692 0.84615385 0.76923077 0.69230769 0.61538462 0.53846154
 [7] 0.46153846 0.38461538 0.30769231 0.23076923 0.15384615 0.07692308

귀하의 데이터가 없으므로 R의 AirPassenger 데이터 세트에서 시도해 보겠습니다. 센터 근처에서 2 년의 기간을 제거하겠습니다.

> APearly <- ts(AirPassengers[1:72], start=1949, freq=12)
> APlate <- ts(AirPassengers[97:144], start=1957, freq=12)
> APmissing <- ts(AirPassengers[73:96], start=1955, freq=12)
> plot(AirPassengers)
# plot the "missing data" for comparison
> lines(APmissing, col="#eeeeee")
# use the HoltWinters algorithm to predict the mean:
> APforecast <- hw(APearly)[2]$mean
> lines(APforecast, col="red")
# HoltWinters doesn't appear to do backcasting, so reverse the ts, forecast, 
# and reverse again (feel free to edit if there's a better process)
> backwards <- ts(rev(APlate), freq=12)
> backcast <- hw(backwards)[2]$mean
> APbackcast <- ts(rev(backcast), start=1955, freq=12)
> lines(APbackcast, col='blue')
# now the magic: 
> n <- 24 
> w <- seq(1, 0, by=-1/(n+1))[2:(n+1)]
> interpolation = APforecast * w + (1 - w) * APbackcast
> lines(interpolation, col='purple', lwd=2)

그리고 당신의 보간이 있습니다.

그래프 출력

물론 완벽하지는 않습니다. 데이터의 초기 패턴이 후자의 패턴과 다른 결과라고 생각합니다 (7 월 -8 월 피크는 초기에는 그렇게 강하지 않았습니다). 그러나 이미지에서 볼 수 있듯이 예측 또는 백 캐스팅 만하는 것보다 분명히 좋습니다. 계절적 차이가 크지 않기 때문에 데이터의 신뢰도가 떨어질 수 있습니다.

내 생각에는 신뢰 구간을 포함 하여이 작업을 시도 할 수 있지만 간단하게 그렇게하는 것의 타당성은 확실하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.