데이터분석/Machine Learning
R을 이용한 ARIMA(Autoregressive integrated moving average) 분석 예
늘근이
2016. 1. 10. 13:20
ARIMA 모델 (Autoregressive integrated moving average)
ARIMA (p,d,q)
에서 AR - p MA - q I - 차분 횟수
변태는 아니지만, 연도에 따른 여자들 치마길이 분석을 ARIMA(Autoregressive integrated moving average)를 해본다.
> skirts <- c(608, 617, 625, 636, 657, 691, 728, 784, 816, 876, 949,
997, 1027, 1047, 1049, 1018, 1021, 1012, 1018, 991, 962, 921,
871, 829, 822, 820, 802, 821, 819, 791, 746, 726, 661,
620, 588, 568, 542, 551, 541, 557, 556, 534, 528, 529, 523, 531)
비정상적인 추이. 딱히 계절도 없다. 그냥 엄청 길어졌다 짧아진것일뿐.
![](https://img1.daumcdn.net/thumb/R720x0.q80/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F22277F4E5691CC970C)
차분 1번 가능
> sts1 <- diff(sts, differences=1)
![](https://img1.daumcdn.net/thumb/R720x0.q80/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F242F204B5691CCE21E)
한번 더하면
> sts2 <- diff(sts, differences=2)
![](https://img1.daumcdn.net/thumb/R720x0.q80/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2649F14F5691CD3107)
acf() / pacf() 함수를 이용해볼수도 있다
> acf(sts2, lag.max=20)
![](https://img1.daumcdn.net/thumb/R720x0.q80/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2333F54A5691D3BD01)
arima 자동
> auto.arima(skirts)
Series: skirts
ARIMA(1,2,0)
Coefficients:
ar1
-0.2997
s.e. 0.1424
sigma^2 estimated as 388.7: log likelihood=-193.66
AIC=391.33 AICc=391.62 BIC=394.9
스캔함수는 다음과같이 하면 헤더가 무시되고 불러옴
> v <- scan('http://robjhyndman.com/tsdldata/annual/dvi.dat', skip=1)
> vts <- ts(v,start=c(1500))
> plot(vts)
![](https://img1.daumcdn.net/thumb/R720x0.q80/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F227125475691D4E603)
* ACF : Auto Correlation function
* PACF : Partial Auto Correlation function