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

R Discussion :

Séries temporelles multidimensionnelles ?


Sujet :

R

  1. #1
    Membre averti
    Homme Profil pro
    Sans emploi
    Inscrit en
    Mai 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Sans emploi

    Informations forums :
    Inscription : Mai 2018
    Messages : 20
    Par défaut Séries temporelles multidimensionnelles ?
    Bonjour (ou bonsoir)

    Je travaille sur un petit projet. Je dispose de trois jeux de données : train.csv, test.csv et output.csv.

    Les tailles de ces fichiers sont énormes : dim(data_train)= [13000,200] = dim(data_output) (on verra plus tard pour data_test)

    J'ai une petite question : est-ce que je dois faire baisser le nombre des observations ? Car 13000 c'est trop, beaucoup...
    Si oui je vais appliquer l'ACP (ou d'autres méthodes..)

    Pour commencer, je dois faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # transformer en séries temporelles :
    s <- ts(data_train)
    ?

    Merci infiniment

  2. #2
    Membre expérimenté Avatar de Alpacky
    Homme Profil pro
    .
    Inscrit en
    Mars 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mars 2014
    Messages : 99
    Par défaut
    hello,

    Ca ne me paraît pas énorme comme jeux de données. Après tout dépend ce que tu veux faire. Quel est ton objectif ? Pourquoi tout transformer en série temporelle ?

    Tu parles de retirer des observations en faisant une ACP, ca me paraît assez étrange comme remarque. Admettons que tu aies une observation par ligne et que chacune des colonnes caractérisent ton observations, alors l'ACP va te permettre de diminuer le nombre de colonnes (ou features) en faisant des combinaisons linéaires de plusieurs variables à mon sens. Mais ton nombre d'observations ne va pas diminuer à proprement parler.

    Enfin si tu veux réduire tes données, je conseille donc de le faire avant de tout transformer en série temporelle.

    a+

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Décembre 2015
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2015
    Messages : 72
    Par défaut
    Bonjour,

    Je suis d'accord avec Alpacky. La première chose est la question que tu te poses sur tes données pour savoir quelles analyses il faut faire.

    Pour information, 13 000 observations, ce n'est pas si élevé que cela. R est tout à fait capable de gérer de tels jeux de données (j'en ai traité à 200 000 observations).

    Pour t'aider au mieux, pourrais tu nous présenter rapidement chaque jeux de données et les questions que tu te poses ?

  4. #4
    Membre averti
    Homme Profil pro
    Sans emploi
    Inscrit en
    Mai 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Sans emploi

    Informations forums :
    Inscription : Mai 2018
    Messages : 20
    Par défaut
    Bonjour,

    excusez-moi pour le temps de répondre..

    L'objectif est de prédire la production horaire de chaque unité de production électrique en France.

    data_input, ce sont les séries temporelles d'entrée (200) et chaque colonne correspond à une série temporelle

    data_output contient les séries temporelles de production des différentes unités de production.

    Je peux mettre le fichiers ici si ça vous intéresse

  5. #5
    Membre expérimenté
    Profil pro
    Loisir
    Inscrit en
    Novembre 2011
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Loisir

    Informations forums :
    Inscription : Novembre 2011
    Messages : 159
    Par défaut
    Bonjour,

    pour pouvoir t'aider, il faut plus d'informations sur tes données et plus de précision sur ce que tu veux faire. C'est encore trop vague.

    Est-ce que tu veux avoir une production théorique à partir de la seule "courbe de production connue" ? Si oui, pour chaque série temporelle, que représente les 13000 valeurs ? Des productions horaires ? Des valeurs à des instants particuliers ...?

  6. #6
    Membre averti
    Homme Profil pro
    Sans emploi
    Inscrit en
    Mai 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Sans emploi

    Informations forums :
    Inscription : Mai 2018
    Messages : 20
    Par défaut
    Ok, je fais le copier coller (je l'ai pris d'un site challenge daté de 2017, je ne participe pas à ce challenge, je fais ce projet pour mieux apprendre à me servir des séries temporelles, merci beaucoup ) :

    Description des données
    Commentaire général
    Suivant les demandes des organisateurs du challenge, nous avons modifé nos données afn de rendre la tache plus difcile aux équipes qui seraient tentées par de la triche. En conséquence:
    - les noms des moyens de production sont des chaines de 10 caractères aléatoires
    - Ces données sont attachées à des régions géographiques, mais ces régions elles-mêmes sont des chaines de 10 caractères aléatoires
    - toutes les valeurs sont renormalisées par un facteur qui ne vous est pas donné
    Cela étant dit, nous ne supprimons pas les informations concernant:
    - la technologie de production
    - le véritable nom des données d'entrées (demande, production éolienne etc)
    - les données concernant la France entière sont nommées comme telle explicitement
    Nous pensons en efet qu'il est a la fois plus intéressant de travailler sur des données en sachant à quoi elles correspondent, mais aussi qu'il est plus facile d'apporter un regard critique si ces noms ne sont pas randomisés.
    Description détaillée Trois fchiers d'entrées :
    - categorical_input.csv : chaque ligne donne le nom d'une unité de production, le nom de sa région d'appartenance, sa puissance théorique maximale, et sa technologie
    - input_train.csv : ce sont les séries temporelles d'entrée (200). Chaque colonne correspond à une série temporelle. Il y a deux types de données. Tout d'abord les données d'input à proprement parler, nommées 'I_region_varname', ou region est le nom de la région concernée, et varname le nom de la variable (demande, interconnexions, prod éolienne etc). Nous avons également un input de ce type au niveau agrégé France : la production hydraulique des rivières au fl de l'eau n'est disponible qu'au niveau France et pas au niveau régional. Ensuite, nous avons des données de disponibilité horaire pour chaque unité de production, nommées 'A_region_unit', ou region est le nom de la region d'appartenance de l'unité, et unit le nom de l'unité. Cette disponibilité correspond au maximum de production horaire, le minimum étant 0 dans le cas de toutes les technologies de production, sauf pour les STEP (station de pompage avec barrage, appelé 'Pumped-storage hydro'), qui sont capables de pomper de l'eau dans un lac pour stocker de l'énergie et dont le minimum de production est donc le négatif de son maximum.
    - input_test.csv : même format qu'input_train.csv, mais des ID diférents correspondant à des moments diférents. un fchier d'output:
    - output_train.csv : contient les séries temporelles de production des diférentes unités de production, nommées 'P_unit' ou unit est le nom de l'unité concernée
    Vous devez soumettre un fchier output_pred.csv dont les colonnes sont dans le même ordre que output_train.csv, avec un point-virgule pour séparateur, et dont les ID correspondent à ceux de input_test.csv
    Nom : Capture d’écran 2018-10-17 à 11.07.24.jpg
Affichages : 311
Taille : 72,7 Ko

  7. #7
    Membre expérimenté Avatar de Alpacky
    Homme Profil pro
    .
    Inscrit en
    Mars 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mars 2014
    Messages : 99
    Par défaut
    bonjour,

    ok donc il y a des données et tu dois sortir des productions horaires. Pour ce faire tu veux utiliser des séries temporelles, très bien donc quel est ton problème finalement ?
    comme je l'ai dit précédemment le nombre d'observations doit pouvoir se gérer sans trop de mal.
    je pense que ton objectif maintenant est de définir ce que tu veux faire, des méthodes de prédictions il y en a plein, voila une référence pas mal
    https://www.google.cl/search?ei=ZODI....0.BQvTmMSS0WQ je te laisse le soin de trouver le pdf

    si tu as une question précise ensuite, n'hésite pas
    a+

  8. #8
    Membre averti
    Homme Profil pro
    Sans emploi
    Inscrit en
    Mai 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Sans emploi

    Informations forums :
    Inscription : Mai 2018
    Messages : 20
    Par défaut
    Bonjour,

    Justement je suis habitué aux données contenant une seule colonne (ou ligne) pour faire les séries temporelles mais là, avec les grandes dimensions, je ne sais pas ce que je dois faire pour trouver les valeurs prédites...

    Ok je vais regarder sur ton lien, merci (cowpertwait ? qu'est-ce que cela signifie ?)

  9. #9
    Membre expérimenté Avatar de Alpacky
    Homme Profil pro
    .
    Inscrit en
    Mars 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mars 2014
    Messages : 99
    Par défaut
    C'est le nom du mec qui a écrit le bouquin!
    Envoie un échantillon de données pour qu'on puisse aider ou faire qqs recommandations (et un bout de code si tu as)
    cdlt

  10. #10
    Membre averti
    Homme Profil pro
    Sans emploi
    Inscrit en
    Mai 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Sans emploi

    Informations forums :
    Inscription : Mai 2018
    Messages : 20
    Par défaut
    Bonjour,

    Très sympa de ta part, merci beaucoup !

    Je ne suis pas arrivé à joindre le fichier (lourd), du coup je l'ai téléchargé sur DL Free : http://dl.free.fr/jkfwFlF8U

    Voilà ce que je fais sur R :
    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
    setwd("~/Documents/ens challenge/WattStrat")
     
    X <- read.csv("train/input_train.csv",sep=",")
    Xtest <- read.csv("test/input_test.csv",sep=",")
    y <- read.csv("output.csv",sep=",")
     
    # suppression de la première colonne ID
    Id <- X[,1]
    Xtrain <- X[,-1]
    ytrain <- y[,-1]
     
    # chargement des bibliothèques
    library(tseries)
    library(car)
     
    names(Xtrain)
    s <- ts((Xtrain),frequency = 24)
    plot.ts(s)
    Résultat affiché :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    > plot.ts(s)
    Error in plotts(x = x, y = y, plot.type = plot.type, xy.labels = xy.labels,  : 
      impossible de tracer plus de 10 séries comme "multiple"

  11. #11
    Membre expérimenté Avatar de Alpacky
    Homme Profil pro
    .
    Inscrit en
    Mars 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mars 2014
    Messages : 99
    Par défaut
    j'ai téléchargé ton fichier mais il manque plein d'infos : notamment les fichiers d'outputs et de description des variables... quel est l'objectif ? prédire les valeurs à quelle échelle (spatiale, temporelle), appliquer un modèle un pour chaque série temporelle ou certaines sont censées t'aider à la prédiction des autres ? ya pleins de questions auxquelles répondre avant de "coder"!

    C'est ca le challenge ?

    Sinon pour ton code, l'erreur est plutôt explicite non? impossible de tracer plus de 10 séries, donc tu peux en sous sélectionner jusqu'à 1O pour utiliser la méthode de plot de la lib tseries par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    plot(s[,1:9]) #pas besoin d'écrire plot.ts comme ton objet est de class ts R va appeler la fonction plot.ts tout seul si tu appelles plot

  12. #12
    Membre averti
    Homme Profil pro
    Sans emploi
    Inscrit en
    Mai 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Sans emploi

    Informations forums :
    Inscription : Mai 2018
    Messages : 20
    Par défaut
    Bonjour Alpacky,

    Oui c'est le challenge (vers le lien que tu as cité je m'y suis inscrit pour prendre les jeux de données avant de me désinscrire ) Il me semble l'avoir dit plus haut

    D'après ce que je peux comprendre, tout ce que je dois faire, c'est faire les plots de chaque série ? Cela prend beaucoup de temps...

    J'ai dû baisser à 3 pour que le plot soit lisible :
    Images attachées Images attachées  

  13. #13
    Membre averti
    Homme Profil pro
    Sans emploi
    Inscrit en
    Mai 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Sans emploi

    Informations forums :
    Inscription : Mai 2018
    Messages : 20
    Par défaut
    Bonjour

    Est-ce qu’on abandonne ?

    Merci

  14. #14
    Membre expérimenté Avatar de Alpacky
    Homme Profil pro
    .
    Inscrit en
    Mars 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mars 2014
    Messages : 99
    Par défaut
    Bonjour,

    Citation Envoyé par gitan77 Voir le message
    Bonjour
    Est-ce qu’on abandonne ?
    Merci
    Non je ne pense pas mais j'ai plusieurs fois posé des questions sans réponse... Je pense qu'il faut que vous précisiez vos idées et vos questions.
    L'idée n'étant pas que nous écrivions le code pour vous non?

    Lorsque j'ai donné une solution pour faire le plot c'est juste pour "dépasser" votre erreur mais ce n'est en aucun cas tout ce qu'il est possible de faire.
    Il vous faut comprendre vos données, ce que vous souhaitez modéliser et comment y parvenir. Pour l'instant vous savez juste que vous voulez utiliser des séries temporelles...
    Mais quelles données en entrée, quelles sorties ? Comment entraîner le modèle etc.. Dans un premier temps il vous faut répondre à ces questions (il me semble que cela a déjà été évoqué précédemment).

    Personnellement je ne vais pas construire le code pour vous mais je ne vous abandonne pas non plus! Je vous ai envoyé une référence mais il en existe d'autres. Je me suis inscrit sur le concours pour avoir accès aux données et au problème.
    Il me semble que si vous n'avez jamais réalisé d'études de ce type, ce problème n'est pas une "bonne formation", je vous conseillerai de vous familiariser d'abord avec les séries temporelles etc.
    Cependant il y a un document python, l'avez vous fait tourner ? C'est un jupyter notebook, cela vous présentera le problème, les données etc. Pour faire tourner ce notebook http://jupyter.org/install !

    Voila des ressources (en R) que j'ai survolé et qui sont intéressantes pour vous je pense:
    https://www.math.u-psud.fr/~goude/Ma...serie_temp.pdf
    https://math.unice.fr/~rubentha/ense...temp-m1-im.pdf

    Bref, si vous avez des questions précises n'hésitez pas, sinon peut être que quelqu'un d'autre vous aidera,
    Bonne journée

  15. #15
    Membre averti
    Homme Profil pro
    Sans emploi
    Inscrit en
    Mai 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Sans emploi

    Informations forums :
    Inscription : Mai 2018
    Messages : 20
    Par défaut
    Bonjour,

    Mais non, je connais déjà les séries temporelles, AR, MA, ARMA, SARIMA, ARIMA, etc j'en passe... Et j'ai déjà travaillé sous R et non sous Python comme le site le suggère parce que je ne connais pas bien ce langage et je ne vais pas apprendre à mieux le maitriser. De plus, je ne participe pas à ce challenge...

    Tout ce que je cherche, c'est prédire la production horaire de chaque unité de production mais je suis perdu : le fichier d'entrée contient 200 colonnes = variables = 200 séries temporelles alors que celui de sortie 157 colonnes... Si je comprends, je ne dois pas supprimer des variables très corrélées entre elles...

    Chaque colonne correspond à la région, à la technologie de production, à la météo etc... Mon objectif est de trouver une fonction à apprendre à approximer et qui permet de reconstruire le niveau de production de chaque moyen de production.

    Merci de votre compréhension...

  16. #16
    Membre expérimenté Avatar de Alpacky
    Homme Profil pro
    .
    Inscrit en
    Mars 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mars 2014
    Messages : 99
    Par défaut
    Si je vous suggérais de faire tourner le notebook ce n'est pas pour apprendre python mais parce qu'il contient du texte et des explications qui vous aideront notamment à comprendre les données et pourquoi, par exemple, vous avez un nombre différent de colonnes entre input_train et output_train...

    Sans comprendre les données je ne vois pas comment vous pouvez construire de modèle, voila pourquoi je vous le suggérais. J'ai fait tourner le notebook et l'ai enregistré au format html afin que vous puissiez le lire! Il n'y a pas besoin de connaître python, le texte et les explications devraient vous permettre d'y voir plus clair.

    Voila un lien pour le document: https://drive.google.com/open?id=1jH...7VLkhMotCUKmHc

Discussions similaires

  1. séries temporelles - ARIMA
    Par mathieu_r dans le forum R
    Réponses: 5
    Dernier message: 21/04/2011, 16h23
  2. Réponses: 2
    Dernier message: 30/03/2010, 16h27
  3. Requète sur séries temporelles
    Par Christian78 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 13/09/2008, 07h51
  4. Séries temporelles Arma et Farima
    Par sam13 dans le forum MATLAB
    Réponses: 1
    Dernier message: 31/01/2007, 19h19
  5. [JFreeChart] Séries temporelles
    Par habasque dans le forum 2D
    Réponses: 1
    Dernier message: 10/12/2006, 14h59

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