Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SAS Base Discussion :

Extrapolation de valeurs


Sujet :

SAS Base

  1. #1
    Membre à l'essai
    Extrapolation de valeurs
    Bonjour,
    J'ai fait une analyse de tendance :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    PROC REG DATA=TAUX;
    MODEL TAUX_COLO=PERIODE;
    RUN;
    Cette tendance est significative :
    on a la table suivante : 
    PERIODE      TAUX
    2003         VALEUR1
    2004         VALEUR2
    ....               
    2012         VALEUR12



    Et du coup je veux créer 3 lignes : 1 pour 2013, 1 pour 2014 et une pour 2015 en extrapolant 3 nouvelles valeurs de TAUX à partir des valeurs précédentes.
    Je crois que c'est la procédure SCORE, pouvez vous m'aider ?

    Merci beaucoup,

  2. #2
    Expert confirmé
    Bonjour.
    La doc de la proc SCORE doit effectivement contenir un exemple de ce genre.
    Sinon il y a plus simple : tu ajoutes 3 observations à ta table d'origine, avec des valeurs manquantes pour TAUX_COLO. Tu mets cette table en entrée de ta proc REG, et tu ajoutes une instruction OUTPUT OUT=tableSAS_resultat PRED=extrapolation ;.
    Bon courage.
    Olivier

  3. #3
    Membre à l'essai
    Suite extrapolation
    Merci beaucoup Olivier.

    Pour la tranche d'age "20" (qui correspond à 20-24 ans) j'ai vu auparavant qu'il y a une tendance significative des taux avec la période (=années) donc je vais extrapoler pour cette classe d'age là sur les nouvelles années 2013 2014 et 2015 :
    J'ai fait ceci :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    PROC SQL;
       INSERT INTO TAUX
       SET PERIODE=2013, AGE=20,TAUX_COLO=.
       SET PERIODE=2014, AGE=20,TAUX_COLO=.
       SET PERIODE=2015, AGE=20,TAUX_COLO=.;
    QUIT;
    PROC REG DATA=TAUX(WHERE=(AGE=20));
    MODEL TAUX_COLO=PERIODE;
    OUTPUT OUT=TAUX_F PRED=EXTRAPOLATION;
    RUN;

    En faisant ça, SAS extrapole une valeur dès le début en 2003 etc.... dans la varoable extrapolation donc je fais ça ensuite :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    IF TAUX_COLO=. THEN TAUX_COLO=EXTRAPOLATION;


    Le problème c'est que comme la tendance est significativement décroissante, on se retrouve avec des taux négatifs en 2015. Or il s'agit de taux pour SMR ensuite.
    Avez vous une idée ?

    D'autre part il m'indique le message d'erreur suivant à chaque proc reg :
    WARNING: The range of variable PERIODE is so small relative to its mean that there may be loss of accuracy in the
    computations. You may need to rescale the variable to have a larger value of RANGE/abs(MEAN), for example, by using PROC STANDARD M=0;
    Est-ce que la qualité de mes résultats reste pertinente ?


    Merci beaucoup pour votre retour précieux,

    Anaïs