• Aucun résultat trouvé

Graphiques de prévisions du chapitre 5

Dans le document Les modèles VAR(p) (Page 154-167)

Ces graphiques présentent les prévisions des séries "produit national brut" et "investissements privés" lorsque les bandes de confiance sont celles des modèles univariés.

Annexe C

Code informatique

C.1

Code SAS

C.1.1 Analyse univariée

data Useconomic2 ; infile "E :

USeconomic.txt" firstobs=2 expandtabs ; input no unemp gnp consum govinv prinv ; retain date ’30jun48’d ; date=intnx(’qtr’,date,1) ; format date yyqc7. ; run ; /* Tracé de la série chômage :unemp */ proc sgplot data=Useconomic2 ; series x=date y=unemp /markers markerattrs=(symbol=circle color=blue) ; run ; /* Essai d’identification pour la série chômage */ proc arima data=USeconomic2 ; identify var=unemp ; run ; /*Différenciation car problème de tendance selon le correlogramme*/

proc arima data=USeconomic2 ; identify var=unemp(1)minic ; run ;

/* Après avoir utilisé boxcox, nous allons utiliser la racine carrée de unemp*/ data Useconomic205 ; set Useconomic2 ; unemp1=unemp**0.5 ; run ; proc arima data=USeconomic205 ; identify var=unemp1(1)minic ; run ;

/* Un AR(1) est proposé*/ proc arima data=USeconomic205 ; identify var=unemp1(1)minic ; estimate p=1 ; run ;

/* La constante est nulle*/

proc arima data=USeconomic205 ; identify var=unemp1(1)minic ; estimate p=1 noint ; run ;

/* L’autocorrelation à k=4 sort de la bande de confiance*/ proc arima data=USeconomic205 ; identify var=unemp1(1)minic ; estimate p=(1,4) noint ; run ;

proc arima data=USeconomic205 ; identify var=unemp1(1)minic ; estimate p=(1,8) noint ; run ; /* L’autocorrelation à k=8 sort de la bande de confiance*/ proc arima data=USeconomic205 ; identify

var=unemp1(1)minic ; estimate p=(1,4,8) noint ; run ; /* Essayons avec p=1,4,8,12*/

proc arima data=USeconomic205 ; identify var=unemp1(1)minic ; estimate p=(1,4,8,12) noint ; run ; /*Le modèle final est un SARIMA[(1,1,0),(3,0,0)], meilleur au précédent. Son AIC est meilleur.*/ proc arima data=USeconomic205 ; identify var=unemp1(1)minic ; estimate p=(1,4,8,12) noint ; fore- cast out= b lead=4 interval=quarter id=date ; run ;

data b1 ; set b ; unemp = unemp1**2 ; forecast = forecast**2 + std**2 ; l95 = l95**2 ; u95 = u95**2 ; run ; /* Prévisions et valeurs observées*/

proc sgplot data=b1 ; where date >= ’30jun83’d ; band Upper=u95 Lower=l95 x=date / Legend- Label="95series x=date y=unemp /markers markerattrs=(symbol=circle color=red) ; series x=date y=forecast /markers markerattrs=(symbol=circle color=blue) ; refline ’1jul88’d /axis=x ; run ;

proc print data=b1 ; run ;

/* Tracé de la série Produit national brut : gnp*/ proc sgplot data=Useconomic2 ; series x=date y=gnp /markers markerattrs=(symbol=circle color=blue) ; run ;

/* Essai d’identification pour la série gnp */ proc arima data=USeconomic2 ; identify var=gnp ; run ; /*Différenciation car problème de tendance selon le correlogramme*/

proc arima data=USeconomic2 ; identify var=gnp(1)minic ; run ;

/*La variance augmente vers les dernières périodes nous allons essayer BOXCOX .*/ run ;

/* Avec lambda=0.2, la logvraisemblance est la deuxième plus grande valeur et les critères SBC et RMSE sont minimisés. Le critère AIC est le deuxième plus petit(différence de 0.01).*/ data Usecono- mic3 ; set Useconomic2 ; gnp1=gnp**0.2 ; run ;

/* Identification à nouveau*/ proc arima data=USeconomic3 ; identify var=gnp1 ; run ; /*Différenciation car problème de tendance selon le correlogramme*/

proc arima data=USeconomic3 ; identify var=gnp1(1)minic ; run ; /*Nous avons un modèle MA(2)*/

/* On passe à la phase d’estimation */

proc arima data=USeconomic3 ; identify var=gnp1(1) ; estimate q=2 ; forecast out= c1 lead=4 inter- val=quarter id=date ; run ;

/*Le modèle MA(2) est approprié. Rien à ajouter pour améliorer le modèle*/ data c ; set c1 ; gnp = gnp1**5 ; forecast = 15*forecast*std**4 +10*(forecast**3)*std**2 + forecast**5 ; l95 = l95**5 ; u95 = u95**5 ; run ; /* Un graphique...*/ proc sgplot data=c ; where date >= ’30jun83’d ; band Upper=u95 Lower=l95 x=date / LegendLabel="95series x=date y=gnp /markers markerattrs=(symbol=circle co- lor=red) ; series x=date y=forecast /markers markerattrs=(symbol=circle color=blue) ; refline ’1jul88’d /axis=x ; run ; /* Tracé de la série consommation : consum*/ proc sgplot data=Useconomic2 ; series x=date y=consum /markers markerattrs=(symbol=circle color=blue) ; run ; /* Essai d’identification pour la série consum */ proc arima data=USeconomic2 ; identify var=consum ; run ;

/*Différenciation car problème de tendance selon le correlogramme*/ proc arima data=USeconomic2 ; identify var=consum(1)minic ; run ; /*problème de variance selon le correlogramme*/ run ;

/* Avec lambda=0.375, la logvraisemblance est maximisée et les critères AIC et SBC sont minimisés. Cependant,pour des raisons pratiques, nous allons choisir une valeur de lambda de 0.33*/

data Useconomic4 ; set Useconomic2 ; consum1=consum**(1/3) ; run ;

/* Identification à nouveau*/ proc arima data=USeconomic4 ; identify var=consum1 ; run ; /*Différenciation car problème de tendance selon le correlogramme*/

proc arima data=USeconomic4 ; identify var=consum1(1)minic ; run ; /*Nous avons un modèle MA(3)*/

/* On passe à la phase d’estimation */

proc arima data=USeconomic4 ; identify var=consum1(1) ; estimate q=3 ; run ;

/* Il y a présence d’autocorrelation à k=8*/ proc arima data=USeconomic4 ; identify var=consum1(1) ; estimate q=(2,3,8) ; run ;

/* Il semble qu’à k=1, le coefficient soit testé nul. Enlevons-le.*/ proc arima data=USeconomic4 ; identify var=consum1(1) ; estimate q=(2,3,8) ; run ;

/*Le modèle retenu est un MA(2,3,8)*/ proc arima data=USeconomic4 ; identify var=consum1(1) ; estimate q=(2,3,8) ; forecast out= d1 lead=4 interval=quarter id=date ; run ; data d ; set d1 ; consum = consum1**3 ; forecast = 3*forecast*std**2 + forecast**3 ; l95 = l95**3 ; u95 = u95**3 ; run ; /*Le graphique*/ proc sgplot data=d ; where date >= ’30jun85’d ; band Upper=u95 Lower=l95 x=date / LegendLabel="95series x=date y=consum /markers markerattrs=(symbol=circle color=red) ; series x=date y=forecast /markers markerattrs=(symbol=circle color=blue) ; refline ’1jul88’d /axis=x ; run ; /* Tracé de la série prinv*/ proc sgplot data=Useconomic2 ; series x=date y=prinv /markers markerat- trs=(symbol=circle color=blue) ; run ;

/* Essai d’identification pour la série prinv */ proc arima data=USeconomic2 ; identify var=prinv ; run ;

/*Il semble avoir un problème de variance. Trouvons le lambda avec BOXCOX*/ run ;

/* Avec lambda=0.2, la logvraisemblance est maximisée et les critères AIC et SBC sont minimisés. Ce qui n’est pas le cas pour le RMSE*/ data Useconomic5 ; set Useconomic2 ; prinv1=prinv**0.2 ; run ;

/* Réidentification */ proc arima data=USeconomic5 ; identify var=prinv1 ; run ; /* Différentiation */ proc arima data=USeconomic5 ; identify var=prinv1(1)minic ; run ; /*Nous avons un modèle AR(1)*/ /* On passe à la phase d’estimation */

proc arima data=USeconomic5 ; identify var=prinv1(1) ; estimate p=1 ; run ;

/*Sans mu, le modèle sera meilleur*/ proc arima data=USeconomic5 ; identify var=prinv1(1) ; esti- mate p=1 noint ; run ;

/* à k=4 il y a autocorrelation*/ proc arima data=USeconomic5 ; identify var=prinv1(1) ; estimate p=(1,4) noint ; run ; /* à k=8 il y a autocorrelation*/ proc arima data=USeconomic5 ; identify var=prinv1(1) ; estimate p=(1,4,8) noint ; run ; /* à k=12 il y a autocorrelation*/ proc arima data=USeconomic5 ; iden- tify var=prinv1(1) ; estimate p=(1,4,8,12) noint ; run ;

/* Nous terminons avec un modèle SARIMA((1,1,0),(3,0,0)).*/ proc arima data=USeconomic5 ; iden- tify var=prinv1(1) ; estimate p=(1,4,8,12) noint ; forecast out= e1 lead=4 interval=quarter id=date ; run ;

data e ; set e1 ; prinv = prinv1**5 ; forecast = 15*forecast*std**4 +10*(forecast**3)*std**2 + fore- cast**5 ; l95 = l95**5 ; u95 = u95**5 ; run ; /*Le graphique*/ proc sgplot data=e ; where date >= ’30jun85’d ; band Upper=u95 Lower=l95 x=date / LegendLabel="95series x=date y=prinv /markers markerattrs=(symbol=circle color=red) ; series x=date y=forecast /markers markerattrs=(symbol=circle color=blue) ; refline ’1jul88’d /axis=x ; run ;

/* Tracé de la série govinv*/ proc sgplot data=Useconomic2 ; series x=date y=govinv /markers mar- kerattrs=(symbol=circle color=blue) ; run ;

/* Essai d’identification pour la série govinv */ proc arima data=USeconomic2 ; identify var=govinv ; run ;

/*Il semble avoir un problème de variance a certains points. Trouvons le lambda avec BOXCOX*/ run ;

/* Nous n’allons pas transformer la variable mais plutôt la différencier car présence d’une tendance*/ proc arima data=USeconomic2 ; identify var=govinv(1)minic ; run ;

/*Nous avons un modèle AR(1)*/ /* On passe à la phase d’estimation */ proc arima data=USeconomic2 ; identify var=govinv(1) ; estimate p=1 ; run ; /* Un meilleur modèle */

proc arima data=USeconomic2 ; identify var=govinv(1) ; estimate p=(1,3) ; run ; proc arima data=USeconomic2 ; identify var=govinv(1) ; estimate p=(1,12) ; run ;

proc arima data=USeconomic2 ; identify var=govinv(1) ; estimate p=(3,12) ; run ; /* Un meilleur mo- dèle */ proc arima data=USeconomic2 ; identify var=govinv(1) ; estimate p=(1,3,12) ; run ; /* Ce mo- dèle est meilleur. le critère AIC est le plus petit.*/ proc arima data=USeconomic2 ; identify var=govinv(1) ; estimate p=(1,3,12) ; forecast out= f lead=4 interval=quarter id=date ; run ; /*Le graphique*/ proc sg- plot data=f ; where date >= ’30jun83’d ; band Upper=u95 Lower=l95 x=date / LegendLabel="95series x=date y=govinv /markers markerattrs=(symbol=circle color=red) ; series x=date y=forecast /markers markerattrs=(symbol=circle color=blue) ; refline ’1jul88’d /axis=x ; run ;

data Useconomic3 ; infile "E :

USecom4.txt" firstobs=2 expandtabs ; input no unemp gnp consum govinv prinv ; retain date ’30jun48’d ; date=intnx(’qtr’,date,1) ; format date yyqc7. ; run ;

* Vérification de la robustesse des modèles ajustés aux 5 séries ;

* Série chômage ; data Useconomic3205 ; set USeconomic3 ; unemp1 = unemp**0.5 ; run ;

proc arima data=USeconomic3205 ; identify var=unemp1(1) ; estimate p=(1,4,8,12) noint ; forecast out= b lead=4 interval=quarter id=date ; run ;

data b1 ; set b ; unemp = unemp1**2 ; forecast = forecast**2 + std**2 ; l95 = l95**2 ; u95 = u95**2 ; run ;

Data bb ; merge b Useconomic2 ; by date ; run ; proc sgplot data=bb ; where date >= ’30jun83’d ; band Upper=u95 Lower=l95 x=date / LegendLabel="95series x=date y=unemp /markers markerat- trs=(symbol=circle color=red) ; series x=date y=forecast /markers markerattrs=(symbol=circle co- lor=blue) ; refline ’1jul87’d /axis=x ; run ;

* Le modèle est approprié. Aucun coefficient n’est testé nul. Les données prédites des quatres der- nières observations ne sont pas significativement différentes. Cependant, on voit bien que les prévi- sions ont tendance à diminuer pendant que les vraies valeurs augmentent. ;

* Série Produit national brut ;

data Useconomic4 ; set Useconomic3 ; gnp1=gnp**0.2 ; run ; proc arima data=USeconomic4 ; identify var=gnp1(1) ; estimate q=2 ; forecast out= c1 lead=4 interval=quarter id=date ; run ;

cast**5 ; l95 = l95**5 ; u95 = u95**5 ; run ;

Data cc ; merge c Useconomic2 ; by date ; run ; /* Un graphique...*/ proc sgplot data=cc ; where date >= ’30jun83’d ; band Upper=u95 Lower=l95 x=date / LegendLabel="95series x=date y=gnp /markers markerattrs=(symbol=circle color=red) ; series x=date y=forecast /markers markerattrs=(symbol=circle color=blue) ; refline ’1jul87’d /axis=x ; run ;

* Le modèle est approprié. ;

* Série consommation ; data Useconomic5 ; set Useconomic3 ; consum1=consum**(1/3) ; run ; proc arima data=USeconomic5 ; identify var=consum1(1) ; estimate q=(2,3,8) ; forecast out= d1 lead=4 interval=quarter id=date ; run ; data d ; set d1 ; consum = consum1**3 ; forecast = 3*forecast*std**2 + forecast**3 ; l95 = l95**3 ; u95 = u95**3 ; run ; Data dd ; merge d Useconomic2 ; by date ; run ; /*Le graphique*/ proc sgplot data=dd ; where date >= ’30jun83’d ; band Upper=u95 Lower=l95 x=date / LegendLabel="95series x=date y=consum /markers markerattrs=(symbol=circle color=red) ; series x=date y=forecast /markers markerattrs=(symbol=circle color=blue) ; refline ’1jul87’d /axis=x ; run ; * Le modèle est approprié mais l’un des coefficients est testé significativement nul. Les prévisions sont assez rapprochées des vraies valeurs. ;

* Série investissements privés ; data Useconomic6 ; set Useconomic3 ; prinv1=prinv**0.2 ; run ; proc arima data=USeconomic6 ; identify var=prinv1(1) ; estimate p=(1,4,8,12) noint ; forecast out= e1 lead=4 interval=quarter id=date ; run ;

data e ; set e1 ; prinv = prinv1**5 ; forecast = 15*forecast*std**4 +10*(forecast**3)*std**2 + fo- recast**5 ; l95 = l95**5 ; u95 = u95**5 ; run ; Data ee ; merge e Useconomic2 ; by date ; run ; /*Le graphique*/ proc sgplot data=ee ; where date >= ’30jun85’d ; band Upper=u95 Lower=l95 x=date / Le- gendLabel="95series x=date y=prinv /markers markerattrs=(symbol=circle color=red) ; series x=date y=forecast /markers markerattrs=(symbol=circle color=blue) ; refline ’1jul87’d /axis=x ; run ; * Tous les coefficients sont testés significativement non-nuls et les prévisions sont bonnes.

* Série investissements gouvernementaux ; proc arima data=USeconomic3 ; identify var=govinv(1) ; estimate p=(1,3,12) ; forecast out= f lead=4 interval=quarter id=date ; run ; Data ff ; merge f Useco- nomic2 ; by date ; run ; /*Le graphique*/ proc sgplot data=ff ; where date >= ’30jun83’d ; band Up- per=u95 Lower=l95 x=date / LegendLabel="95series x=date y=govinv /markers markerattrs=(symbol=circle color=red) ; series x=date y=forecast /markers markerattrs=(symbol=circle color=blue) ; refline ’1jul87’d /axis=x ; run ;

* Un seul coefficient est testé nul. La valeur du test est assez proche de 1.96. De plus les prévisions sont très proches des vraies valeurs. ;

C.1.2 Analyse multivariée

data Useconomic2 ; infile "C : Users Ty-Ann Esther Desktop DOCS MEMOIRE CODES 27-10 CODES

USeconomic.txt" firstobs=2 expandtabs ; input no unemp gnp consum govinv prinv ; retain date ’30jun48’d ; date=intnx(’qtr’,date,1) ; format date yyqc7. ; run ;

data Useconomic3 ; infile "C : Users Ty-Ann Esther Desktop DOCS MEMOIRE CODES 27-10 CODES

USecom4.txt" firstobs=2 expandtabs ; input no unemp gnp consum govinv prinv ; retain date ’30jun48’d ; date=intnx(’qtr’,date,1) ; format date yyqc7. ; run ;

data USeconomic4 ; set USeconomic3 ; unemp1=unemp**0.5 ; gnp1=gnp**0.2 ; consum1=consum**(1/3) ; prinv1=prinv**0.2 ; run ;

data USeconomic5 ; set USeconomic2 ; unemp1=unemp**0.5 ; gnp1=gnp**0.2 ; consum1=consum**(1/3) ; prinv1=prinv**0.2 ; run ; /* Modèle à 5 variables */ proc varmax data=USeconomic5 ; model unemp1 gnp1 consum1 prinv1 govinv / minic=(type=SBC) dif=(unemp1(1) gnp1(1) consum1(1) prinv1(1) go- vinv(1)) print=(parcoef pcorr pcancorr corry) ; run ;

/* Etude de la causalité - préparation des données */ data USeconomic6 ; set USeconomic2 ; du- nempmod=dif(unemp**0.5) ; dgnpmod=dif(gnp**0.2) ; dconsummod=dif(consum**(1/3)) ; dprinv- mod=dif(prinv**0.2) ; dgovinv=dif(govinv) ; run ;

/* Etude de la causalité de Granger : Modèle à 5 variables */ proc varmax data=USeconomic6 ; model dunempmod dgnpmod dconsummod dprinvmod dgovinv / p=1 ; causal group1=(dprinvmod dconsummod) group2=(dunempmod dgnpmod dgovinv) ; causal group1=(dunempmod dgnpmod dgo- vinv)group2=(dprinvmod dconsummod) ; causal group1=(dgovinv) group2=(dunempmod dgnpmod

dconsummod dprinvmod) ; causal group1=(dunempmod dgnpmod dconsummod dprinvmod) group2=(dgovinv) ; run ;

/*Modèle à 5 variables*/ proc varmax data=USeconomic6 plot=impulse ; model dunempmod dgnp- mod dconsummod dprinvmod dgovinv / p=1 print=(impulse=(all)) ; run ;

proc varmax data=USeconomic6 plot=impulse ; model dprinvmod dconsummod dgnpmod dunemp- mod dgovinv / p=1 print=(impulse=(all)) ; run ;

/* Etude de la causalité de Granger : Modèle à 4 variables */

proc varmax data=USeconomic6 ; id date interval=quarter ; model unemp1 gnp1 consum1 prinv1 / p=1 lagmax=5 dif=(unemp1(1) gnp1(1) consum1(1) prinv1(1)) ; output out=for1 lead=4 ; run ; /* Etude de la causalité de Granger : Modèle à 4 variables */ proc varmax data=USeconomic6 ; model dunempmod dgnpmod dconsummod dprinvmod / p=1 ; causal group1=(dgnpmod) group2=(dunempmod dconsummod dprinvmod) ; causal group1=(dunempmod dconsummod dprinvmod) group2=(dgnpmod) ; causal group1=(dunempmod ) group2=( dgnpmod dconsummod dprinvmod) ; causal group1=(dgnpmod dconsummod dprinvmod) group2=(dunempmod) ; causal group1=(dconsummod ) group2=(dunempmod dgnpmod dprinvmod) ; causal group1=(dunempmod dgnpmod dprinvmod) group2=(dconsummod) ; causal group1=(dprinvmod) group2=(dunempmod dconsummod dgnpmod) ; causal group1=(dunempmod dconsummod dgnpmod) group2=(dprinvmod) ;

causal group1=(dgnpmod dunempmod) group2=( dconsummod dprinvmod) ; causal group1=(dconsummod dprinvmod) group2=(dgnpmod dunempmod) ; causal group1=(dunempmod dconsummod) group2=( dgnpmod dprinvmod) ; causal group1=(dgnpmod dprinvmod) group2=(dunempmod dconsummod) ; causal group1=( dunempmod dprinvmod) group2=( dgnpmod dconsummod ) ; causal group1=(dgnpmod dconsummod ) group2=(dunempmod dprinvmod) ;

causal group1=(dgnpmod)group2=(dunempmod) ; causal group1=(dunempmod) group2=(dgnpmod) ; causal group1=(dprinvmod)group2=(dunempmod) ; causal group1=(dunempmod) group2=(dprinvmod) ; causal group1=(dconsummod)group2=(dunempmod) ; causal group1=(dunempmod) group2=(dconsummod) ; causal group1=(dgnpmod) group2=(dconsummod) ; causal group1=(dconsummod) group2=(dgnpmod) ; causal group1=(dgnpmod) group2=(dprinvmod) ; causal group1=(dprinvmod) group2=(dgnpmod) ; causal group1=(dconsummod) group2=(dprinvmod) ; causal group1=(dprinvmod) group2=(dconsummod) ;

causal group1=(dgnpmod dconsummod) group2=(dunempmod) ; causal group1=(dprinvmod) group2=(dconsummod dunempmod) ;

run ;

/* Etude de l’impact d’une impulsion */

/*Modèle à 4 variables. Essayer les 24 permutations : 1234, 1243, 1324, 1342, 1423, 1432, 2134, 2143, 2314, 2413, 2431, 3124, 3142, 3214, 3241, 3412, 3421, 4123, 4132, 4213, 4231, 4312, 4321 */ *1234 ; proc varmax data=USeconomic6 plot=impulse ; model dunempmod dgnpmod dconsummod

dprinvmod / p=1 print=(impulse=(orth)) ; run ;

/* Décomposition des covariances de l’erreur de prédiction*/

/*Modèle à 4 variables : essayer les 24 permutations : 1234, 1243, 1324, 1342, 1423, 1432, 2134, 2143, 2314, 2413, 2431, 3124, 3142, 3214, 3241, 3412, 3421, 4123, 4132, 4213, 4231, 4312, 4321 */ *1234 ; proc varmax data=USeconomic6 ; model dunempmod dgnpmod dconsummod dprinvmod / p=1 print=(decompose(5)) ; run ;

/* Prévisions : modèle à 4 variables*/ /* Sans les 4 dernières observations*/

/* On va dessiner sur un même graphique les prévisions des modèles univariés et multivarié. On compare les prévisions */

/* LE MODÈLE VAR*/

proc varmax data=USeconomic4 ; id date interval=quarter ; model unemp1 gnp1 consum1 prinv1 / p=1 lagmax=5 dif=(unemp1(1) gnp1(1) consum1(1) prinv1(1)) ; output out=for1 lead=4 ; run ;

/*Taux de chômage*/ proc arima data=USeconomic4 ; identify var=unemp1(1)minic ; estimate p=(1,4,8,12) noint ; forecast out= b1 lead=4 interval=quarter id=date ; run ;

data b ; set b1 ; unemp = unemp1**2 ; forecastu = forecast**2 + std**2 ; l95u = l95**2 ; u95u = u95**2 ; run ;

data h ; set for1 ; unemp = unemp1**2 ; forecastv = for1**2 + std1**2 ; l95v = lci1**2 ; u95v = uci1**2 ; run ;

/* Graphiques ensemble*/

Data uv1 ; merge b h USeconomic2 ; by date ; run ; /* Prévisions sans la bande de confiance*/

proc sgplot data=uv1 ; title ’Série Taux de chômage’ ; where date >= ’30jun83’d ; /*band Upper=u95v Lower=l95v x=date / LegendLabel="95series x=date y=unemp /markers markerattrs=(symbol=circle color=red) ; series x=date y=forecastv /markers markerattrs=(symbol=circle color=blue) ; series x=date y=forecastu /markers markerattrs=(symbol=circle color=green) ; refline ’1jul87’d / axis=x ; run ; /*gnp*/

proc arima data=USeconomic4 ; identify var=gnp1(1) ; estimate q=2 ; forecast out= c1 lead=4 inter- val=quarter id=date ; run ;

data c ; set c1 ; gnp = gnp1**5 ; forecastu = 15*forecast*std**4 +10*(forecast**3)*std**2 + fore- cast**5 ; l95u = l95**5 ; u95u = u95**5 ; run ;

data i ; set for1 ; gnp = gnp1**5 ; forecastv = 15*for2*std2**4 +10*(for2**3)*std2**2 + for2**5 ; l95v = lci2**5 ; u95v = uci2**5 ; run ;

/* Graphiques ensemble*/

Data uv2 ; merge c i USeconomic2 ; by date ; run ; /* Avec la bande de confiance du modèle univarié*/ proc sgplot data=uv2 ; title ’Série Produit national brut’ ; where date >= ’30jun83’d ; band Upper=u95u Lower=l95u x=date / LegendLabel="95series x=date y=gnp /markers markerattrs=(symbol=circle co- lor=red) ; series x=date y=forecastv /markers markerattrs=(symbol=circle color=blue) ; series x=date y=forecastu /markers markerattrs=(symbol=circle color=green) ; refline ’1jul87’d / axis=x ; run ; /* Avec la bande de confiance du modèle VAR*/ proc sgplot data=uv2 ; title ’Série Produit national brut’ ; where date >= ’30jun83’d ; band Upper=u95v Lower=l95v x=date / LegendLabel="95series x=date y=gnp /markers markerattrs=(symbol=circle color=red) ; series x=date y=forecastv /markers markerattrs=(symbol=circle color=blue) ; series x=date y=forecastu /markers markerattrs=(symbol=circle color=green) ; refline ’1jul87’d / axis=x ; run ;

/*consum*/

/*Le modèle retenu est un MA(2,3,8)*/ proc arima data=USeconomic4 ; identify var=consum1(1) ; estimate q=(2,3,8) ; forecast out= d1 lead=4 interval=quarter id=date ; run ; data d ; set d1 ; consum = consum1**3 ; forecastu = 3*forecast*std**2 + forecast**3 ; l95u = l95**3 ; u95u = u95**3 ; run ; /* Prévisions et valeurs observées : univarié*/

data j ; set for1 ; consum = consum1**3 ; forecastv = 3*for3*std3**2 + for3**3 ; l95v = lci3**3 ; u95v = uci3**3 ; run ;

/* Prévisions et valeurs observées : multivarié*/ /*proc print data=j ; run ;*/ /* Graphiques ensemble*/

Data uv3 ; merge d j USeconomic2 ; by date ; run ; /* Prévisions sans la bande de confiance*/

proc sgplot data=uv3 ; title ’Série Consommation’ ; where date >= ’30jun83’d ; series x=date y=consum

/markers markerattrs=(symbol=circle color=red) ; series x=date y=forecastv /markers markerattrs=(symbol=circle color=blue) ; series x=date y=forecastu /markers markerattrs=(symbol=circle color=green) ; refline

’1jul87’d / axis=x ; run ; /*prinv*/

/* Nous avons un modèle SARIMA((1,1,0),(3,0,0)).*/ proc arima data=USeconomic4 ; identify var=prinv1(1) ; estimate p=(1,4,8,12) noint ; forecast out= e1 lead=4 interval=quarter id=date ; run ;

data e ; set e1 ; prinv = prinv1**5 ; forecastu = 15*forecast*std**4 +10*(forecast**3)*std**2 + fore- cast**5 ; l95u = l95**5 ; u95u = u95**5 ; run ;

/* Prévisions et valeurs observées : univarié*/

data k ; set for1 ; prinv = prinv1**5 ; forecastv = 15*for4*std4**4 +10*(for4**3)*std4**2 + for4**5 ; l95v = lci4**5 ; u95v = uci4**5 ; run ;

/* Prévisions et valeurs observées : multivarié*/ /* Graphiques ensemble*/

Data uv4 ; merge e k USeconomic2 ; by date ; run ; /* Avec la bande de confiance du modèle univarié*/

proc sgplot data=uv4 ; title ’Série Investissements privés’ ; where date >= ’30jun83’d ; band Up- per=u95u Lower=l95u x=date / LegendLabel="95series x=date y=prinv /markers markerattrs=(symbol=circle color=red) ; series x=date y=forecastv /markers markerattrs=(symbol=circle color=blue) ; series x=date y=forecastu /markers markerattrs=(symbol=circle color=green) ; refline ’1jul87’d /axis=x ; run ; /* Avec la bande de confiance du modèle VAR*/

proc sgplot data=uv4 ; title ’Série Investissements privés’ ; where date >= ’30jun83’d ; band Up- per=u95v Lower=l95v x=date / LegendLabel="95series x=date y=prinv /markers markerattrs=(symbol=circle color=red) ; series x=date y=forecastv /markers markerattrs=(symbol=circle color=blue) ; series x=date y=forecastu /markers markerattrs=(symbol=circle color=green) ; refline ’1jul87’d /axis=x ; run ; /* Calcul de l’erreur quadratique prévisionnelle. Exemple de la série tronquée de 4 périodes*/

/*Série Taux de chômage*/ data uv1 ; set uv1 ; eqpu=(unemp-forecastu)**2 ; eqpv=(unemp-forecastv)**2 ; run ;

proc sql ; create table eqp1 as select no, sum(eqpu)/4 as eqpu4, sum(eqpv)/4 as eqpv4 from uv1 WHERE no>=158 ; quit ;

/*Série Produit national brut*/

data uv2 ; set uv2 ; eqpu=(forecastu-gnp)**2 ; eqpv=(forecastv-gnp)**2 ; run ; proc sql ; create table eqp2 as select no, sum(eqpu)/4 as eqpu4, sum(eqpv)/4 as eqpv4 from uv2 WHERE no>=158 ; quit ; /*Série Consommation*/ data uv3 ; set uv3 ; eqpu=(forecastu-consum)**2 ; eqpv=(forecastv-consum)**2 ; run ;

proc sql ; create table eqp3 as select no, sum(eqpu)/4 as eqpu4, sum(eqpv)/4 as eqpv4 from uv3 WHERE no>=158 ; quit ;

prinv)**2 ; run ; proc sql ; create table eqp4 as select no, sum(eqpu)/4 as eqpu4, sum(eqpv)/4 as eqpv4 from uv4 WHERE no>=158 ; quit ;

Dans le document Les modèles VAR(p) (Page 154-167)

Documents relatifs