* AR2.PRG: SIMULATION ET ANALYSE DE MODÈLES AR(2) * ALLOCATE 350 COMPUTE NEND=300 , NLAG=12 , NLEAD=6 , NBEG=3 COMPUTE DELTA=2.0 , PHI1=1.25, PHI2=-0.40 DISPLAY(STORE=TITRE) 'AR(2) PHI1 = ' PHI1 'PHI2 = ' PHI2 * * Simulation de données fictives * ZERO Y; SEED 4 * * L'option SEED permet de toujours générer la même séquence * de nombres aléatoires * EQUATION 1 Y # CONSTANT Y{1 TO 2} ASSOCIATE(VARIANCE=1.0) 1 # DELTA PHI1 PHI2 * * Les racines * COMPUTE [RECTANGULAR] PHI = ||PHI1,PHI2|1,0|| EIGEN(CVALUES=CEIGEN) PHI EIGEN WRITE EIGEN CEIGEN * * Dans la cas de nombres complexes, il faut vérifier s'ils sont * à l'intérieur du cercle unitaire en utilisant la formule * SQRT( (racine réelle)**2 + (racine ima)**2 ). Notons que CEIGEN est * un vecteur (2x1) de nombres complexes qui ont implicitement deux * parties : une réelle et une imaginaire. Il faut utiliser des * instructions spéciales pour les manipuler. * DISPLAY CEIGEN(1) COMPUTE R1 = SQRT( (%REAL(CEIGEN(1)))**2 + (%IMAG(CEIGEN(1)))**2 ) DISPLAY R1 DISPLAY CEIGEN(2) COMPUTE R2 = SQRT( (%REAL(CEIGEN(2)))**2 + (%IMAG(CEIGEN(2)))**2 ) DISPLAY R2 * SIMULATE 1 NEND-1 NBEG # 1 Y * Statistiques descriptives * STATISTICS Y NBEG NEND * * Corrélations * CORRELATE(NUMBER=NLAG) Y NBEG NEND CORR_Y * * Estimation * LINREG(EQUATION=1) Y NBEG+2 NEND SET MEAN_Y NBEG NEND+NLEAD = %BETA(1)/(1-%BETA(2)-%BETA(3)) PRINT NBEG NBEG MEAN_Y * * Représentation moyenne mobile * IMPULSE(INPUT) 1 NLAG+1 # 1 IMP_Y # 1 * Prévisions * SET PREV = T == NEND FORECAST 1 NLEAD NEND+1 # 1 Y NEND+1 * * Intervalle de confiance à 75% * ERRORS 1 NLEAD # 1 STD_Y NEND+1 * SET SUP_Y NEND+1 NEND+NLEAD = Y(T)+1.15*STD_Y(T) SET INF_Y NEND+1 NEND+NLEAD = Y-1.15*STD_Y PRINT NEND-4 NEND+NLEAD INF_Y Y SUP_Y * * Résumé graphique * OPEN PLOT C:\T837\GRA\AR2_4.RGF GRPARM HEADER 20 AXISLABELING 14 SPGRAPH(HFIELD=2,VFIELD=2,HEADER=TITRE) GRAPH(HEADER='OBSERVATIONS',PATTERNS) 2 # Y NBEG+200 NEND # MEAN_Y NBEG+200 NEND GRAPH(NODATES,NUMBER=0,MAX=1.0,MIN=-1.0,STYLE=BAR, $ HEADER='AUTOCORRELATIONS',SAMESIZE) 1 # CORR_Y 1 NLAG+1 2 GRAPH(GRID=PREV,HEADER='PREVISIONS',PATTERNS,SAMESIZE) 5 # Y NEND-NLEAD NEND # Y NEND NEND+NLEAD 3 # INF_Y NEND+1 NEND+NLEAD 3 # SUP_Y NEND+1 NEND+NLEAD 3 # MEAN_Y NEND-NLEAD NEND+NLEAD 1 GRAPH(NODATES,NUMBER=0,STYLE=BAR, $ HEADER='IMPULSES',SAMESIZE) 1 # IMP_Y 1 NLAG+1 2 SPGRAPH(DONE)