|
#実質・原系列 x <- read.csv("gdp_ex.csv",skip=3) |
・結果
|
Call:
Call: |
警告メッセージ:
Call: |
・季節調整をする
| <- read.csv("gdp_ex.csv",skip=3) gdp <- x[,2] ex <- x[,3] GDP <- ts(log(gdp),start=c(1980,1),frequency=4)#log EX <- ts(log(ex),start=c(1980,1),frequency=4)#log arima_g1 <- arima(GDP,order=c(2,1,2),transform.pars =FALSE);arima_g1 arima_g2 <- arima(GDP,order=c(2,1,2));arima_g2 #arima_g2はARの係数が定常性を満たす範囲内で尤度を最大化する arima_ex1 <- arima(EX,order=c(2,1,2),transform.pars =FALSE);arima_ex1 arima_ex2 <- arima(EX,order=c(2,1,2));arima_ex2 #arima_ex2はARの係数が定常性を満たす範囲内で尤度を最大化する sa <- list(order=c(1,1,1),period=4) sarima_g1 <- arima(GDP,order=c(2,1,2),seasonal=sa,transform.pars =FALSE);arima_g1 sarima_g2 <- arima(GDP,order=c(2,1,2),seasonal=sa);arima_g2 sarima_e1 <- arima(EX,order=c(2,1,2),seasonal=sa,transform.pars =FALSE) sarima_e2 <- arima(EX,order=c(2,1,2),seasonal=sa) sarima_e1 sarima_e2 par(mfrow=c(2,1)) ahat <- sarima_e1$resid EX_hat <- EX-ahat plot(EX,type="l",main="log EXO") lines(EX_hat,lty=2,col=2) plot(ahat,type="l",col=4,main="Resid") abline(h=mean(ahat)) lines(EX_hat,lty=2,col=2) |
・SARIMAモデルの検定
| b1 <- arima_sa_e1$coef V1 <- arima_sa_e1$var.coef t1 <- numeric(4) for (j in 1:4){ t1[j] <- b[j]/sqrt(V[j,j])} names(t) <- c("t_ar1","t_ar2","t_ma2","t_ma2");t test1 <- ((t1<0)&(pnorm(t1)<0.05))|((t1>0)&(pnorm(t1)>0.95));test1 b2 <- arima_sa_g1$coef V2 <- arima_sa_g1$var.coef t2 <- numeric(4) for (j in 1:4){ t2[j] <- b[j]/sqrt(V[j,j])} names(t2) <- c("t_ar1","t_ar2","t_ma2","t_ma2");t test2 <- ((t2<0)&(pnorm(t2)<0.05))|((t2>0)&(pnorm(t2)>0.95));test2 st.test1 <- abs(polyroot (c(-b1[2],-b1[1],1)));st.test1 st.test2_1 <- (st.test1<1);st.test2_1 st.test2 <- abs(polyroot (c(-V1[2],-V1[1],1)));st.test2 st.test2_2 <- (st.test2<1);st.test2_2 |
・残差の検定
| ahat <- sarima_e1$resid Box.test(ahat,lag=1,type="Ljung-Box") #h0=残差系列に自己相関がない。 #0.05以上→5%で棄却されない=ホワイトノイズとみなせる ahat1 <- sarima_e1$resid Box.test(ahat1,lag=1,type="Ljung-Box") #h0=残差系列に自己相関がない ahat2 <- sarima_g2$resid Box.test(ahat2,lag=1,type="Ljung-Box") #h0=残差系列に自己相関がない。 #0.05以上→5%で棄却されない=ホワイトノイズとみなせる ahat <- sarima_e1$resid Box.test(ahat,lag=1,type="Ljung-Box") #h0=残差系列に自己相関がない |
・検定
| pval <- numeric(20) for (j in 1:20){ kekka <- Box.test(ahat1,lag=j,type="Ljung-Box") pval[j] <- kekka$p.value } ttl <- "Ljung-Box test p value"; y1 <- c(0,1) plot(pval,xlab="s",ylim=c(0.05,1),main=ttl) abline(h=0.05,col=2) #保存されない tsdiag(sarima_g2);tsdiag(sarima_g2,lag=20) tsdiag(sarima_e2);tsdiag(sarima_e2,lag=20) |