processi.sim<- function(n.traiet,n.oss) { ################################################# # programma per generazione di traiettorie da processi # stocastici e stima dei parametri ################################################# # input: # n.traiet = numero di traiettorie da generare # n.oss = numero di osservazioni della traiettoria # WHITE NOISE proc.stoc<-matrix(0,n.oss,1) for (i in 1:n.traiet) {set.seed(i+100) proc.stoc<-as.matrix(cbind(proc.stoc,rnorm(n.oss))) } ts.plot(proc.stoc[,2:ncol(proc.stoc)],lty=seq(1,n.traiet,1),col=seq(1,n.traiet,1)) # Simulazione di processi ARMA # MA(1) n.oss<-1000 set.seed(100) # Simulazione sim.ma1<-arima.sim(list(ma=c(-0.6)),n=n.oss) ts.plot(sim.ma1,ylab="MA(1) - theta=-0.6") # Identificazione dell'ordine del modello windows() par(mfrow=c(2,1)) acf(sim.ma1) pacf(sim.ma1) par(mfrow=c(1,1)) # Stima del modello est.ma1<-arima(sim.ma1,order=c(0,0,1)) attributes(est.ma1) t.stat.ma1<-est.ma1$coef/sqrt(diag(est.ma1$var.coef)) p.value<-2*pt(abs(t.stat.ma1),df=(n.oss-length(est.ma1$coef)),lower.tail=F) print(rbind(est.ma1$coef,diag(sqrt(est.ma1$var.coef)),t.stat.ma1,p.value)) # AR(1) sim.ar1<-arima.sim(list(ar=c(0.6)),n=n.oss) windows() ts.plot(sim.ar1,ylab="AR(1) - phi=0.6") windows() par(mfrow=c(2,1)) acf(sim.ar1) pacf(sim.ar1) par(mfrow=c(1,1)) # MA(2) sim.ma2<-arima.sim(list(ma=c(0.6,-0.5)),n=n.oss) ts.plot(sim.ma2,ylab="MA(2) - theta1=0.6, theta2=-0.5") windows() par(mfrow=c(2,1)) acf(sim.ma2) pacf(sim.ma2) par(mfrow=c(1,1)) # AR(2) sim.ar2<-arima.sim(list(ar=c(0.3,0.4)),n=n.oss) windows() ts.plot(sim.ar2,ylab="AR(2) - phi1=0.3, phi2=0.4") windows() par(mfrow=c(2,1)) acf(sim.ar2) pacf(sim.ar2) par(mfrow=c(1,1)) # ARMA(1,1) sim.arma<-arima.sim(list(ar=c(0.6),ma=c(-0.8)),n=n.oss) ts.plot(sim.arma,ylab="ARMA(1,1) - phi=0.6, theta=-0.8") windows() par(mfrow=c(2,1)) acf(sim.arma) pacf(sim.arma) par(mfrow=c(1,1)) # RW sim.rw<-arima.sim(list(ar=c(0.99999)),n=n.oss) windows() ts.plot(sim.ar1,ylab="RW") windows() par(mfrow=c(2,1)) acf(sim.rw) pacf(sim.rw) par(mfrow=c(1,1)) } processi.sim(3,1000)