ARIMA 모델링을위한 매개 변수 결정 (p, d, q)


10

통계와 R에 익숙하지 않습니다. 데이터 세트의 ARIMA 매개 변수를 결정하는 프로세스를 알고 싶습니다. R을 사용하고 이론적으로 (가능한 경우) 똑같은 것을 알아낼 수 있습니까?

데이터는 1 월 12 일에서 3 월 14 일까지이며 월별 판매량을 나타냅니다. 데이터 세트는 다음과 같습니다.

99 58 52 83 94 73 97 83 86 63 77 70 87 84 60 105 87 93110 71158 52 33 68 82 88 84

그리고 추세는 다음과 같습니다.

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

데이터에는 추세, 계절별 동작 또는 주기성이 나타나지 않습니다.

답변:


9

일반적으로 Box, Jenkins & Reinsel의 시계열 분석 과 같은 고급 시계열 분석 교과서 (소개 서적은 일반적으로 소프트웨어를 신뢰하도록 지시합니다)를 파헤 칩니다. 인터넷 검색을 통해 Box-Jenkins 절차에 대한 자세한 내용을 찾을 수도 있습니다. Box-Jenkins 이외의 다른 접근 방식 (예 : AIC 기반 접근 방식)이 있습니다.

R에서는 먼저 데이터를 ts(시계열) 객체 로 변환 하고 R에게 빈도가 12 (매월 데이터)임을 알립니다.

require(forecast)
sales <- ts(c(99, 58, 52, 83, 94, 73, 97, 83, 86, 63, 77, 70, 87, 84, 60, 105, 87, 93, 110, 71, 158, 52, 33, 68, 82, 88, 84),frequency=12)

(부분) 자기 상관 함수를 그릴 수 있습니다.

acf(sales)
pacf(sales)

AR 또는 MA 동작을 제안하지는 않습니다.

그런 다음 모델을 맞추고 검사하십시오.

model <- auto.arima(sales)
model

?auto.arima도움이 필요하면 참조하십시오 . 보시다시피 auto.arima데이터에 추세 나 계절성, AR 또는 MA가 표시되지 않으므로 간단한 (0,0,0) 모델을 선택 하십시오 . 마지막으로 시계열 및 예측을 예측하고 플로팅 할 수 있습니다.

plot(forecast(model))

예보

?forecast.Arima(자본 A를주의!).

이 무료 온라인 교과서 는 R을 사용한 시계열 분석 및 예측에 대한 훌륭한 소개입니다. 매우 권장됩니다.


안녕 스테판, 내 데이터 세트에 대한 데이터와 줄거리를 추가했습니다. 보시다시피 27 개의 데이터 포인트 만 있으므로 여기에서 연기가납니다. 여기에 뭔가 제안 해 주시겠습니까?
Raunak87

나는 대답을 편집했다. 시리즈는 많은 구조를 나타내지 않으므로 실제로 할 수있는 일은 거의 없습니다. 본질적으로 노이즈가 있고 그 외에는 거의 없기 때문에 예측 간격이 큽니다.
Stephan Kolassa

4

두 가지 사항. 시계열은 월 단위이므로 27 개의 점이 자기 상관 구조를 제공하지 않으므로 합리적인 ARIMA 추정을 위해서는 최소 4 년의 데이터가 필요합니다. 이는 또한 판매가 자체 가치와 상관 관계가 아닌 외부 요인에 의해 영향을 받는다는 것을 의미 할 수 있습니다. 판매에 어떤 요소가 영향을 미치는지 파악하고 그 요소를 측정하십시오. 그런 다음 회귀 또는 VAR (벡터 자동 회귀)을 실행하여 예측을 얻을 수 있습니다.

이 값 이외의 다른 것이 없으면 지수 평활 법을 사용하여 순진한 예측을 얻는 것이 가장 좋습니다. 지수 평활은 R에서 사용할 수 있습니다.

둘째, 제품 판매가 개별적으로 보이지 않는 경우, 두 제품의 판매는 서로 연관 될 수 있습니다. 예를 들어 커피 판매 증가는 차 판매 감소를 반영 할 수 있습니다. 다른 제품 정보를 사용하여 예측을 개선하십시오.

이는 일반적으로 소매 또는 공급망의 판매 데이터에서 발생합니다. 그들은 일련의 자기 상관 구조를 많이 보여주지 않습니다. 반면 ARIMA 또는 GARCH와 같은 방법은 일반적으로 자기 상관 관계가있는 주식 시장 데이터 또는 경제 지수와 함께 작동합니다.


3

이것은 실제로 주석이지만 허용치를 초과하므로 시계열 데이터를 분석하는 올바른 방법을 제안하기 위해 준 답변으로 게시합니다. .

잘 알려진 사실이지만 여기 및 다른 곳에서는 종종 무시됩니다. 임시 ARIMA 모델 구내를 공식화하는 데 사용되는 이론적 ACF / PACF는 펄스 / 레벨 이동 / 계절 펄스 / 현지 시간 추세가 없다는 것입니다. 또한 시간에 따른 상수 매개 변수와 상수 오류 분산을 구상합니다. 이 경우 21 번째 관측치 (값 = 158)는 특이 치 / 펄스로 쉽게 플래그가 지정되고 제안 된 -80 조정은 수정 된 값 78을 산출합니다. 수정 된 계열의 결과 ACF / PACF는 확률 적 (ARIMA) 구조의 증거를 거의 또는 전혀 나타내지 않습니다. 이 경우 수술은 성공했지만 환자는 사망했습니다. 표본 ACF는 공분산 / 분산을 기반으로하며 부적절하게 팽창 / 팽창 된 분산은 ACF에 대한 하향 바이어스를 산출합니다. Keith Ord 교수는 이것을 "이상한 나라의 앨리스 효과"라고 ​​언급했습니다.


2

Stephan Kolassa가 지적했듯이 데이터에는 많은 구조가 없습니다. 자기 상관 함수는 ARMA 구조를 제안하지 않는다 (참조 acf(sales), pacf(sales)) 및 forecast::auto.arima모든 AR 또는 MA 순서를 선택하지 않습니다.

require(forecast)
require(tsoutliers)
fit1 <- auto.arima(sales, d=0, D=0, ic="bic")
fit1
#ARIMA(0,0,0) with non-zero mean 
#Coefficients:
#      intercept
#        81.3704
#s.e.     4.4070

그럼에도 불구하고 잔차의 정규성이 없음은 5 % 유의 수준에서 기각됩니다.

JarqueBera.test(residuals(fit1))[[1]]
#X-squared = 12.9466, df = 2, p-value = 0.001544

참고 : 패키지에서 사용할 수있는 JarqueBera.test기능을 기반으로 jarque.bera.test합니다 tseries.

관측치 21에서 첨가 된 이상 값을 포함 시키면 tsoutliers잔차가 정규화된다. 따라서 절편 추정과 예측은 외부 관측치의 영향을받지 않습니다.

res <- tsoutliers::tso(sales, types=c("AO", "TC", "LS"), 
  args.tsmethod=list(ic="bic", d=0, D=0))
res
#ARIMA(0,0,0) with non-zero mean 
#Coefficients:
#      intercept     AO21
#        78.4231  79.5769
#s.e.     3.3885  17.6072
#sigma^2 estimated as 298.5:  log likelihood=-115.25
#AIC=236.49   AICc=237.54   BIC=240.38
#Outliers:
#  type ind time coefhat tstat
#1   AO  21 2:09   79.58  4.52
JarqueBera.test(residuals(res$fit))[[1]]
#X-squared = 1.3555, df = 2, p-value = 0.5077

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