Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > Macro
Macro Forum d'entraide sur le langage Macro de SAS
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/06/2011, 17h35   #1
Invité de passage
 
Inscription : juin 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 20
Points : 3
Points : 3
Par défaut Modification d'une macro

Bonjour,
Mon problème porte sur une macro permettant d'estimer des value-at-risk hors échantillon. Pour être plus précise, j'ai récupéré une macro que j'ai modifié et adapté à mes données, je l'ai faite tournée et elle marchait. Cependant, le modèle d'estimation qui figurait dans cette macro n'était pas celui que je voulais, j'ai donc mis mon nouveau modèle mais la macro ne marche pas.

La macro qui marche: macro1.txt
Celle qui ne marche pas:macro2.txt
Merci pour vos réponses!!
Lamyaa34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 18h37   #2
Invité de passage
 
Inscription : juin 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 20
Points : 3
Points : 3
Par défaut Un peu de précision

Je pense avoir cerné l'origine du problème sans pouvoir y résoudre. Après l'estimation du modèle dans le code, apparaissent ls commandes suivantes:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
DATA ResultGarchNormalLast;
SET ResultGarchNormal;
IF _n_=&insize then output;
run;
 
DATA param;
SET param;
call symput('al',a);
call symput ('be',b);
call symput('w',arch0);
call symput('alpha',arch1);
call symput('beta',garch1);
run;
 
DATA VaR;
SET ResultGarchNormalLast;
prev=(&al*(lag1(y)/(1-(lag1(y))**2)))-(&be*(lag1(y)));
h_prev = &w+&alpha*(y-prev)**2+&beta*h_y;
var=prev+(sqrt(h_prev)*quantile('normal',&tc));
run;
Ces commandes marchent très bien avec la macro1 mais pas avec la 2. Le premier groupe de commande vise à sélectionner dans la table des résultats de l'estimation la dernière valeur _n_ pour pouvoir faire une première prévision hors échantillon. Le problème, c'est qu'avec la macro 2 cette nouvelle table ne contient aucune donnée!
Si vous avez des réponses, n'hésitez pas!
Lamyaa34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 20h20   #3
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Essaie de remplacer ce code

Code :
1
2
3
4
DATA ResultGarchNormalLast;
SET ResultGarchNormal;
IF _n_=&insize then output;
run;

par ça:
Code :
1
2
3
4
5
6
 
 
DATA ResultGarchNormalLast;
SET ResultGarchNormal end=eof;
IF eof then output;
run;
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 09h53   #4
Invité de passage
 
Inscription : juin 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 20
Points : 3
Points : 3
Merci mais j'ai déja tenté cette manoeuvre. Je pense avoir résolu mon problème: il suffisait de remplacer :
IF _n_=&insize then output;
run;
par IF _n_=&insize-1 then output;
run;
Car le nouveau modèle retenu possédait des retards qui n'avaient pas été pris en compte dans la première version!

Merci pour vos réponses!!!!
Lamyaa34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h44.


 
 
 
 
Partenaires

Hébergement Web