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

  1. #1
    Membre à l'essai
    Homme Profil pro
    Doctorant
    Inscrit en
    novembre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Finance

    Informations forums :
    Inscription : novembre 2014
    Messages : 22
    Points : 18
    Points
    18

    Par défaut Régression par fenêtre roulante

    Bonjour,

    Pour des fins de régressions en fenêtre roulante, j’ai codé le programme ci-dessous permettant de créer les variables NewDate, w et ws. L’objectif était d’établir une fenêtre de 12 mois qui avance d’un mois d’une boucle à une autre, et ce, pour chaque fonds mutuel identifié par la variable, Fund Identifier (crsp_fundno). Pour simplifier les choses, seulement deux fonds sont utilisés (les fonds n’ont pas tous les mêmes dates de début et de fin) Le programme me permet d’obtenir le résultat désiré qui est schématisé comme suit (avec un fonds dont les données s'étalent de janvier 2012 à décembre 2016):

    201201 201202 ............. 201212 (boucle1)
    201202 201203...................201301 (boucle2)
    201203 201204.......................201302 (boucle 3)
    etc

    201601................................................................ 201612 (dernière boucle)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     Data lastdate (keep=CRSP_FUNDNO LastDt);
        set verif1;
        format LastDt YYMMDD10.;
        by CRSP_FUNDNO Datem;
        if last.CRSP_FUNDNO then do;
            LastDt = intnx('month',CALDT,0,'end');
            output;
        end;
    run;
     
    Data NewTable (keep=CRSP_FUNDNO CALDT LastDt);
        merge Verif1 LastDate;
        by CRSP_FUNDNO;
    run;
     
    Data NewTable2 (drop=CALDT);
        set NewTable;
        format NEWDate YYMMDD10.;
        by CRSP_FundNo Caldt;
        retain w;
        if first.CRSP_FundNo then w = 0;
        Do ws = 1 to 12 ;
            NewDate = intnx('month',CALDT,ws-1,'end');
            if ws = 1 then w + 1;
            if NewDate LE LastDt then output;
        end;
    run;
    Je précise que la variable datem est de format numérique alors que la variable CALDT est de format date YYMMDDN8.

    Je souhaite modifier ce programme pour que l’incrément soit désormais de deux mois (par exemple). En d’autres termes, je garde toujours ma fenêtre de 12 mois qui représente la longueur d’échantillon de la boucle mais cette fois-ci le début de chaque boucle avancera de deux mois. Voici le résultat espéré :

    201201 201202 ............. 201212 (boucle1)
    201203 201204...................201302 (boucle2)
    201205 201206.......................201304 (boucle 3)
    etc

    201601................................................................ 201612 (dernière boucle)

    Vous trouverez en pièce jointe un fichier Excel qui contient les données utilisées. Y aura-t-il quelqu’un qui pourrait m’indiquer comment changer le programme pour obtenir ce résultat ?

    Je vous remercie pour le temps qui y sera consacré !
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/10/2010, 11h50
  2. [max] par fenêtre
    Par Newenda dans le forum MATLAB
    Réponses: 7
    Dernier message: 11/06/2009, 14h15
  3. Créer un contexte de session par fenêtre de navigateur
    Par guillaumev dans le forum ASP.NET
    Réponses: 4
    Dernier message: 08/01/2008, 10h31
  4. Réponses: 3
    Dernier message: 14/04/2006, 09h57
  5. Renseignement pop-up par fenêtre apellante - Firefox / IE
    Par damjal dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 07/12/2005, 16h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo