IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

MATLAB Discussion :

Application d'un script KPSS sur une série de données [Débutant]


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Mai 2012
    Messages : 38
    Points : 18
    Points
    18
    Par défaut Application d'un script KPSS sur une série de données
    Bonjour,

    Je suis débutant sur Matlab. Je voulais notamment tester le script d'un test KPSS pour tester la stationnarité d'une série et mieux comprendre comment coder sur ce sujet là.

    J'ai donc téléchargé le script en .m :

    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
    function test = kpss(x,w,opt)
    T = size(x,1);
    if nargin == 2,
       opt = 0;
    end
    if opt == 0,
       e = center(x);
       else
       [par, e] = ols(x,[ones(T,1) (1:T)']);
    end
    prod = zeros(w,1);
    for j = 1:w
       prod(j) = e(j+1:T)'*e(1:T-j);
    end
    s2 = e'*e + 2*(1-(1:w)/(w+1))*prod;
    S = cumsum(e);
    test = T^(-1)*(S'*S)/s2;
    Problème comment dois je l'appliquer à une série de données ?

    Merci de votre aide
    Bon Dimanche

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Avant tout, il faut t'assurer que ton fichier.m soit sur ce qu'on appelle le "path de MATLAB", autrement dit qu'il soit situé dans un dossier connu de MATLAB.

    Le plus rapide est le mettre dans le répertoire courant "Current Directory" dans lequel tu travailles : dossier que tu peux voir et changer en haut (ou par les fonctions pwd et cd respectivement).
    L'autre façon est de le mettre dans un dossier de ton choix, puis d'ajouter ce dossier au "path" à l'aide de la fonction addpath :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    addpath('chemin de ton dossier')
    ou par
    • le bouton Start => Desktop Tools => Path ;
    • le menu File => Set Path...


    Par la suite, il te suffit de simplement l’appeler par son nom comme une fonction, en lui passant les valeurs des arguments x,w et opt.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    x = ...
    w = ...
    opt = ...
    test = kpss(x,w,opt)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Mai 2012
    Messages : 38
    Points : 18
    Points
    18
    Par défaut
    Je les mets tous dans le fichier "bin" et cela fonctionne parfaitement.
    Merci de tes propositions.

    Alors maintenant, j'ai importé des données excel sous en tant que variable "x", problème dans le script KPSS, il y a le "w" (1ère ligne) et je ne vois du tout à quoi cela correspond.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Comme indiqué dans l'entête que tu as supprimé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    % Inputs:       x - data
    %               w - reference point for the KPSS test
    %               opt - trend indicator

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Mai 2012
    Messages : 38
    Points : 18
    Points
    18
    Par défaut
    Merci, à vrai dire dans l'entête je n'avais pas les infos sur w, seulement sur opt.


    Visiblement il y a un problème, après avoir défini les variables x, w , opt (q) il me met ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function test = kpss(x,w,q)
    |
    Error: Function definitions are not permitted in this
    context.
    Je vais essayer de comprendre grâce à ta biblio des erreurs

  6. #6

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Mai 2012
    Messages : 38
    Points : 18
    Points
    18
    Par défaut
    Maintenant, je n'ai apparemment pas assez d'arguments d'entrée pour la ligne 2. J'ai bien lu la FAQ

    Mais je n'arrive pas à voir le problème puisqu'il y a bien deux arguments pour Size. (x ayant été défini à partir d'un fichier excel et validé à la ligne 1).

  8. #8
    Invité
    Invité(e)
    Par défaut
    Quelle est l'erreur obtenue ? Tu as utilisé la fonction avec les arguments comme je te l'ai indiqué ?

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Mai 2012
    Messages : 38
    Points : 18
    Points
    18
    Par défaut
    Oui,

    voici un screen. Etant débutant peut être que je me trompe. Je définis les variables x, w et q dans la "Command window" et je clique sur "Run" dans l'Editor à droite.


  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    Par la suite, il te suffit de simplement l’appeler par son nom comme une fonction, en lui passant les valeurs des arguments x,w et opt.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    x = ...
    w = ...
    opt = ...
    test = kpss(x,w,opt)

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Mai 2012
    Messages : 38
    Points : 18
    Points
    18
    Par défaut
    En effet pas malin, de ma part. Dsl, J'avais totalement zappé cette fin de message.

    J'ai un nouveau souci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Attempt to execute SCRIPT kpss as a function:
    C:\Program Files\MATLAB\R2012a\bin\kpss.m
    Je précise que j'ai bien lu la FAQ. Mais étant débutant, j'ai eu du mal à comprendre. J'ai fait "which -all kpss.m" ce qui a donné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Program Files\MATLAB\R2012a\bin\kpss.m
    Donc je présume que c'est un conflit concernant le type de fichier : script ou fonction. Jusque là je pense avoir compris. Dans ce cas là, comment le modifier en fichier fonction ?

  12. #12
    Invité
    Invité(e)
    Par défaut
    Que ce soit script ou fonction, le type de fichier est le même : un .m ; c'est le contenu qui diffère :
    • script : le fichier est constitué d'une suite d'instructions, mais ne contient aucune définition de fonction. Il est alors simplement appelé par le nom du fichier comme une fonction sans arguments d'entré/sortie, et les éventuelles variables créées le sont dans le workspace dans lequel le script est appelé.
    • fonction : le fichier contient une ou plusieurs définition(s) de fonctions/sous-fonctions. La fonction principale, située au début, doit avoir le même nom que le fichier, et c'est la seule à être visible extérieurement.

    Attention : tu ne peux pas mélanger les deux.


    Citation Envoyé par latiole Voir le message
    Dans ce cas là, comment le modifier en fichier fonction ?
    Autant faudrait-il connaître son contenu... car celui de ton premier message marche parfaitement.
    Dernière modification par Invité ; 16/07/2012 à 22h27.

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Mai 2012
    Messages : 38
    Points : 18
    Points
    18
    Par défaut
    Visiblement, je n'ai rien compris, en même temps il n'y a que comme ça que j'apprendrai :



    Merci pour tout ce que tu fais. Je t'assure que j'essaie de comprendre.

  14. #14
    Invité
    Invité(e)
    Par défaut
    Je te conseille de bien regarder ce que tu fais ligne 12 ligne qui est d'ailleurs mentionnée par l'erreur

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Mai 2012
    Messages : 38
    Points : 18
    Points
    18
    Par défaut
    J'ai bien vu qu'il y avait un souci ligne 12 et justement après avoir passé pas mal de temps (ce qui explique ma réponse tardive) à essayer de comprendre, je n'ai toujours pas saisi le problème.

    Le point virgule qui ne va pas ?

  16. #16
    Invité
    Invité(e)
    Par défaut
    Une question : tu fais quoi à cette ligne ?
    Tu appelles une fonction.

    Or si tu as bien noté ce que je t'ai dit :
    Citation Envoyé par Winjerome Voir le message
    • script : le fichier est constitué d'une suite d'instructions, mais ne contient aucune définition de fonction. Il est alors simplement appelé par le nom du fichier comme une fonction sans arguments d'entré/sortie, et les éventuelles variables créées le sont dans le workspace dans lequel le script est appelé.

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Mai 2012
    Messages : 38
    Points : 18
    Points
    18
    Par défaut
    Je comprends vite, mais il faut m'expliquer longtemps Merci énormément de ta patience

    C'est bon j'ai pigé le truc.
    Bon maintenant, apparemment il faut que je définisse "ols" (Ligne 9-code du tout premier message) et il y a une erreur sur la même ligne. Encore plusieurs heures pour comprendre tout ça.

    EDIT : Apparemment c'est un fichier fonction supplémentaire que je viens de télécharger.

  18. #18
    Invité
    Invité(e)
    Par défaut
    ols est une autre fonction qui doit être au même endroit où tu as téléchargé la fonction kpps.

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Mai 2012
    Messages : 38
    Points : 18
    Points
    18
    Par défaut
    C'est en effet ce que j'ai fait. J'ai maintenant encore tout un tas d'erreur, je vais essayer de les résoudre et reviendrait si je n'y arrive pas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Détection des variations lentes , brusques sur une série de données
    Par AJ_ing dans le forum Statistiques, Data Mining et Data Science
    Réponses: 0
    Dernier message: 24/02/2014, 16h12
  2. Réponses: 7
    Dernier message: 11/06/2007, 14h11
  3. Dernier script execute sur une base
    Par loupin dans le forum Administration
    Réponses: 2
    Dernier message: 23/05/2007, 10h06
  4. Exécuter un script perl sur une page HTML
    Par natie_49 dans le forum Web
    Réponses: 13
    Dernier message: 05/03/2007, 16h50
  5. Application de filtre de couleur sur une page web
    Par kalan dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 21/06/2006, 18h44

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