Forum de Statistiques
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment : -50%
Friteuse sans huile – PHILIPS – Airfryer ...
Voir le deal
54.99 €

[Matlab][R] fitter mes données avec série chronologiques

2 participants

Aller en bas

[Matlab][R] fitter mes données avec série chronologiques Empty [Matlab][R] fitter mes données avec série chronologiques

Message par Alfi Mer 28 Mar 2012 - 9:00

Bonjour Smile

Voilà mon problème: j'ai des mesures sur 10 ans et j'aimerais trouver le modèle saisonnier collant le mieux à mon modèle... Ainsi j'ai pensé aux séries chronologiques dont on a parlé brièvement durant mes études; et je pense qu'il faut juste que j'arrive à isoler la saisonnalité et la tendance du bruit/résidus pour que ça me conviennent...
J'avais préalablement essayer en fittant mes données sur une courbe estimée par mes prédécesseurs (procédure annuelle sinon gros problème pour que les courbes soient continues) puis par une méthode de spline (procédure sur mes 10 ans de données) de trouver ça; mais ça ne me convient pas tout à fait: Est il possible de faire ce que je dis ou ai-je mal compris les séries chronologiques ?

Mon but (au cas où il ne serait pas clair) est d'arriver à isoler la tendance et la saisonnalité de mes données pour avoir un modèle globale régulier (en gros j'aimerai mais je ne sais pas si c'est possible extraire de mes données une fonction générale du genre f(x)=sin(x) )
Et ensuite utiliser ce modèle pour fitter mes données sur ce modèle (et éviter de passer par tous les points) et ainsi pouvoir calculer les dates de début et de fin du phénomène que je cherche à observer sans m'en remettre aux aléas de mes données.

Pour la partie de fit de mes données avec le modèle, je pensais faire quelque chose du genre (exemple en Matlab mais je peux faire la même chose sous R) :
Code:
beta0=???
[beta,resid,J] = nlinfit(temps,mesdonnées,@fonction_obtenue_SARIMA, beta0 ,options);
[ypred,delta] = nlpredci(@fonction_obtenue_SARIMA,temps,beta,resid,J);


Est ce réaliste/possible ? Si oui, quelle est la procédure à adopter ? Comment puis je faire pour réussir à faire ça ?
(je suis preneur de tout: je travaille sur Matlab actuellement, mais je peux utiliser R aussi )
En gros ce que je veux c'est ma série sans bruit (que ce soit du bruit au sein d'une année ou du bruit entre les années (variation de la date de début du processus): c'est à dire tendance+saisonnalité-bruit ) pour pouvoir ensuite la fitter sur mes données et y introduire à ce moment là les variation entre les années...

Petite précision: je ne sais pas si ça a une véritable influence mais mes données dépendent des valeurs de l'année en cours: quand ça augmente ce n'est pas censé fonctionner par pic brutal (même si le bruit peut avoir une répercussion...)

Merci par avance


Dernière édition par Alfi le Ven 30 Mar 2012 - 8:13, édité 2 fois

Alfi

Nombre de messages : 5
Date d'inscription : 28/03/2012

Revenir en haut Aller en bas

[Matlab][R] fitter mes données avec série chronologiques Empty Re: [Matlab][R] fitter mes données avec série chronologiques

Message par Alfi Jeu 29 Mar 2012 - 9:16

Après avoir pas mal lu (sans forcément tout comprendre), je me rends compte que ce n'est pas vraiment un ARIMA ou SARIMA...

En effet ce que je souhaite c'est travailler sur la saisonnalité et la tendance alors qu'eux sont axés sur le bruit.

Je me demande donc s'il serait possible de:
- prendre mes données, retirer la tendance, désaisonnaliser: j'ai donc le bruit
- reprendre mes données initiales et retirer le bruit obtenu à l'étape précédente
- ensuite faire le traitement que je voulais: fitter mes données avec cette courbe et rechercher les dates (le plus précisément possible) où il y a un changement brusque dans le passé

Est ce une idée totalement farfelue? Est ce faisable?
Apparemment les commandes n'existent pas en Matlab, je vais tenter sous R:

Code:
data=scan(file=”donnee.dat”,skip=k)
start=c(2000,1)
end=(2011,365) //ou alors plutôt utiliser les jours cumulés? soit 4583
frequency=365 //pb annee bisextile?
serie <- ts (data,start,end,frequency)
plot.ts(serie)
serie_decomp <- decompose(serie,type=”additive”)
ma fonction <- serie_decomp$trend+serie_decomp$seasonal


puis tracer pour vérifier et reporter sous Matlab les valeurs pour faire le fit avec un beta0 encore indéterminé...

Je suis parti du principe que c'était une série additive mais je pourrais tester les 2 au pire

Je n'ai pas encore tester ce code parce que j'ai quelques soucis pour transmettre mes données de Matlab vers R mais inutile de m'aider pour ça, je devrais réussir à le faire fonctionner bientôt

Je voudrais juste avoir votre avis avisés sur cette méthode un peu bancale (puisque de moi)... et son implémentation... ainsi que des conseils pour beta0 (comment s'y prendre pour le définir?)
Toutes critiques constructives sont évidemment les bienvenues ^^

Merci par avance

Alfi

Nombre de messages : 5
Date d'inscription : 28/03/2012

Revenir en haut Aller en bas

[Matlab][R] fitter mes données avec série chronologiques Empty Re: [Matlab][R] fitter mes données avec série chronologiques

Message par gg Jeu 29 Mar 2012 - 9:44

Bonjour.

Ce que tu te proposes de faire est classique. Sauf qu'en plus du bruit, tu vas éliminer aussi les changements brusques, puisqu'ils ne font justement pas partie ni de la tendance, ni des variations saisonnières. A moins qu'ils soient périodiques (avec une période annuelle), auquel cas ils sont intégrés aux variations saisonnières.

mais avec tes nouvelles explications, j'ai l'impression que tu recherches essentiellement les ruptures de tendance et/ou de variations saisonnières. Dans une recherche à postériori, il est possible, avec des données nombreuses, de faire ce genre de repérage. A vue, déjà, pour la tendance en simplifiant la série par une moyenne mobile, et en jouant sur le nombre de termes. On fera apparaître sur la représentation de la série des périodes évoluant différemment. On pourra justifier cela ensuite par des régressions. On peut aussi analyser les résidus (ce que tu as appelé le bruit), qui ont une forme "régulière" si la tendance globale recouvre deux tendances partielles ou si les variations saisonnières ont été régulières sur une période, puis ont changé et eu une autre régularité.
Il existe différents outils plus ou moins adaptés, mais je ne les connais pas.

Cordialement.

gg

Nombre de messages : 2174
Date d'inscription : 10/01/2011

Revenir en haut Aller en bas

[Matlab][R] fitter mes données avec série chronologiques Empty Re: [Matlab][R] fitter mes données avec série chronologiques

Message par Alfi Jeu 29 Mar 2012 - 11:53

Merci pour votre réponse, je commençais à croire que personne ne me répondrait jamais

Oui les variations qui m'intéressent sont censé revenir périodiquement justement ^^

L'intérêt de ce que je cherche c'est de voir les variations de ces dates de changement entre les différentes années en fait...

Je souhaite récupérer la fonction qui régit la tendance et la saisonnalité; fitter mes données avec cette fonction pour avoir une base de travail "propre" puis trouver les points d'inflexion des changement et récupérer les dates correspondantes... Mais je ne veux avoir les dates très régulièrement espacées en utilisant la saisonnalité: justement pas en fait! ^^

Sinon j'ai tenté mon code sous R, ça ne fonctionne pas:
Code:
Erreur dans plotts(x = x, y = y, plot.type = plot.type, xy.labels = xy.labels,  :  impossible de tracer plus de 10 séries comme "multiple"
donc je ne sais pas trop quoi faire pour avancer à présent... Sad

Alfi

Nombre de messages : 5
Date d'inscription : 28/03/2012

Revenir en haut Aller en bas

[Matlab][R] fitter mes données avec série chronologiques Empty Re: [Matlab][R] fitter mes données avec série chronologiques

Message par Alfi Jeu 29 Mar 2012 - 14:03

ça tourne plus ou moins finalement mais ça ne me convient pas du tout

Mais, j'ai des erreurs

Code:
data <- read.csv("C:/.../dat1.csv")
start=c(55) #pour le 1/03/2000 (je n'ai pas les données
end=c(4583) #pour 31/12/2011
#ou autre chose?
frequency=365 #pb annee bisextile?
mat=data[data[,4]==1,] #sélection des données qui m'intéressent
serie <- ts (mat,start,end,frequency)
plot.ts(serie)
                  Erreur dans plotts(x = x, y = y, plot.type = plot.type, xy.labels = xy.labels,  :
                    impossible de tracer plus de 10 séries comme "multiple"

serie_decomp <- decompose(serie,type="additive")
                  Erreur : impossible d'allouer un vecteur de taille 302.6 Mo

fct <- serie_decomp$trend+serie_decomp$seasonal

Je ne peux pas vous joindre les figures que j'obtiens mais c'est pas top!
Je ne m'attendais pas vraiment à ce genre de résultat: tendance assez chaotique (pas du tout une allure linéaire contrairement à ce que je m'attendais), beaucoup de variation dans la saisonnalité (même si ces variations sont saisonnières pour le coup, je m'attendais à quelque chose de beaucoup plus lisse)...

Je commence à me demander si je ne devrais pas abandonner l'idée et essayer autre chose... mais quoi?

Alfi

Nombre de messages : 5
Date d'inscription : 28/03/2012

Revenir en haut Aller en bas

[Matlab][R] fitter mes données avec série chronologiques Empty Re: [Matlab][R] fitter mes données avec série chronologiques

Message par Alfi Ven 30 Mar 2012 - 8:27

personne ne peut m'aider? Crying or Very sad

Je précise tout de même que mes données de base sont assez irrégulières tout de même (varie beaucoup sur une courte période, et c'est justement ces variations dont j'aimerais me débarasser)

En fait je pensais que les variations seraient phagocytées par les résidus mais pas du tout, ils sont conservés!
Et ce qui m'inquiete le plus c'est la tendance qui ressemble à tout sauf à une tendance!

J'avais pensé appliquer une méthode de spline sur ma fonction fct, mais quand je vois la tendance je me demande si c'est une bonne idée...

Si vous voulez que je vous montre les courbes que j'obtiens je peux vous les envoyer par mail (envoyez moi un MP)

Je me sens un peu démuni face à ce problème Sad
Savez vous si je pourrais m'y prendre totalement autrement puisque cette technique ne semble pas vraiment marcher...?

Alfi

Nombre de messages : 5
Date d'inscription : 28/03/2012

Revenir en haut Aller en bas

[Matlab][R] fitter mes données avec série chronologiques Empty Re: [Matlab][R] fitter mes données avec série chronologiques

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum