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 :

Régression-->Réduction du pas de temps d'un jeu de données


Sujet :

R

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 69
    Points : 38
    Points
    38
    Par défaut Régression-->Réduction du pas de temps d'un jeu de données
    Bonjour,

    Je dispose d'un jeu de données de température (fichier en pièce jointe) avec un pas de temps que je souhaiterais plus fin. C-à-d que je voudrais, à partir des données dont je dispose, générer des points intermédiaires, calculés. Auriez-vous une idée de la manière dont je pourrais procéder par le biais d'une régression, ou autre?

    J'imaginais pouvoir appliquer une régression linéaire entre chaque couple de points. Il s'agit de la température de l'air et celle-ci ne présente pas de variabilité "inattendue", elle évolue assez linéairement. Comment puis-je procéder pour faire cela en routine sur R? C-a-d pour appliquer une régression linéaire entre chaque couple de point, du 1er jusqu'au dernier.

    Merci d'avance pour votre aide!
    Fichiers attachés Fichiers attachés

  2. #2
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Points : 2 673
    Points
    2 673
    Par défaut
    Bonjour,

    Pour la régression linéaire, vous avez la fonction : lm, et vous pouvez utiliser la fonction predict pour utiliser les coefficients estimés lors de la régression afin de déterminer des valeurs en de nouveaux points.

    Cependant, attention à vos remarques : la température n'est pas linéaire dans le temps.
    Voir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    X<-read.table("Data_Temp.txt",header=TRUE,sep="\t")
    plot(1:357,X$Temp,type="l",col="red")

    Cordialement,

    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 69
    Points : 38
    Points
    38
    Par défaut
    Bonjour,

    Je reviens vers vous concernant le même problème qui je pense peut être résolu par la fonction "approx".

    En effet, comme vous le dites, la température n'est pas linéaire dans le temps. Cependant, une interpolation linéaire peut permettre une bonne estimation de la température entre 2 points qui ne sont pas trop éloignés dans le temps.
    Je souhaiterais donc procéder, entre chaque point de donnée, à une interpolation linéaire pour générer de nouveau points et ainsi augmenter ma précision/diminuer mon pas de temps.

    Je dispose du jeu de données en pièce jointe. Il s'agit de données de température, avec un pas de temps d'1h. Je souhaiterais procéder à une interpolation linéaire entre chaque point pour aboutir à un pas de temps de 10min.

    Je dispose du code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    T=read.table("TestInterpol.txt") 
    approx(T$HrMn,T$Temp,method="linear",n=432)
    Je souhaite en effet obtenir une valeur de température toutes les 10mins, pendant 3 jours, soit 432 valeurs au total pour ce jeu de données. D'où la valeur du "n".

    Lorsque je lance la fonction, j'obtiens l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    > approx(T$HrMn,T$Temp,method="linear",n=432) 
    Erreur dans approx(T$HrMn, T$Temp, method = "linear", n = 432) : 
      il faut au moins deux valeurs non manquantes pour interpoler
    Savez-vous d'où cela peut venir? Je ne comprends pas puisque pour chaque valeur de température, je dispose de l'heure de capture. Il n'y a donc pour moi aucune valeur manquante qui puisse poser problème pour l'interpolation.

    Merci!
    Fichiers attachés Fichiers attachés

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 69
    Points : 38
    Points
    38
    Par défaut Interpolation Linéaire
    Bonjour,
    J'ai résolu un premier problème du au format de mon fichier de données en utilisant ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    T2=approx(as.numeric(T[-1, 2]),as.numeric(T[-1, 3]), method="linear", n=144)
    Maintenant, je m'aperçois que la fonction approx ne fournit pas le résultat que j'attendais.
    En effet, j'ai rentré dans la fonction "x=HrMn" qui correspond à l'heure de la journée et "y=Temp" qui correspond à mes valeurs de température.
    Dans mon fichier brut, j'ai une valeur de température toutes les heures et je souhaite en sortie en avoir une toutes les 10min.
    Or, je ne comprends pas très bien le fichier de sortie. Je m'attendais, pour une seule journée (de 0 à 2300 dans mon fichier brut) à obtenir quelque chose du type (avec n le nombre de valeurs de température):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    HrMn Temp
    0         13.4 (valeur que l'on retrouve dans mon fichier brut)
    10        T1   (valeur calculée sur la base d'une interpolation)
    20        T2
    30        T3
    40        T4
    50        T5
    100      13.1 (valeur que l'on retrouve dans mon fichier brut)          
    ....
    2340    T(n-1)
    2350    T(n)
    Au lieu de ça, j'obtiens ceci:
    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
    1	21
    1.160839161	20.1958042
    1.321678322	19.39160839
    1.482517483	18.58741259
    1.643356643	17.78321678
    1.804195804	16.97902098
    1.965034965	16.17482517
    2.125874126	17.13286713
    2.286713287	18.58041958
    2.447552448	20.02797203
    2.608391608	21.47552448
    2.769230769	22.92307692
    2.93006993	24.37062937
    3.090909091	24.84848485
    3.251748252	24.58041958
    3.412587413	24.31235431
    3.573426573	24.04428904
    3.734265734	23.77622378
    3.895104895	23.50815851
    4.055944056	23.22144522
    4.216783217	22.8997669
    4.377622378	22.57808858
    4.538461538	22.25641026
    4.699300699	21.93473193
    .....
    A quoi correspond chacune des colonnes?
    Auriez-vous une idée quant à la manière d'atteindre mon objectif?
    Comment par exemple coupler l'heure et la date (dans le fichier, heure=HrMn; date=Date) pour que l'interpolation se fasse dans le temps et non pas seulement en considérant les valeurs extrêmes du vecteur x.

    Merci.

Discussions similaires

  1. [C#] label n'a pas le temps de s'afficher.
    Par Isher dans le forum Windows Forms
    Réponses: 2
    Dernier message: 13/08/2007, 09h30
  2. Pas le temps de voir fenetre
    Par bonofred dans le forum Dev-C++
    Réponses: 2
    Dernier message: 20/06/2007, 17h10
  3. [TP] Pas le temps de voir les résultats à l'écran
    Par bonomsoleil dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 08/02/2006, 22h49
  4. [Début.C#] Je n'ai pas le temps de voir se qui s'affiche!!!!
    Par sylvain_c42 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 02/06/2005, 16h48

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