Regression Non parametrique

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Geissmann Gael
Messages : 11
Enregistré le : 04 Avr 2007, 09:11

Regression Non parametrique

Messagepar Geissmann Gael » 04 Avr 2007, 13:59

Bonjour ,

Voila je viens de tomber sur ce forum et je le trouve fort sympatique .

Donc je vous explique un peu mon cas , je réalise actuellement un modèle sur "une regression non paramètrique" assez simple les données contiennent 3 colonnes

prélèvement du 1er juillet au 16 septembre de 00:15 a 23:15 toutes les 15 minutes et tous les jours date format jj/mm/aa heure : hh:mm

-1ere colonne dateJ = jour
-2eme colonne dateH =heure
-3eme colonne donne = données d ozone en (ug/m3)

Voila ce que je voudrai faire :

Je voudrai tracer 3 graphes celui du

-1er juillet en fonction de l' heure
-celui du mois de juillet en fonction jour et heure
-le général en fonction jour moi et heure

ensuite il faudrait que j applique la regression grace a la fonction loess et peut etre spline. pa dans R mais j avoue que j ai un peu de mal car je n ai pas l 'habitude , je ne travail pas sur ce langage .

Voila je mettrai en ligne les données demain ainsi que le début de mon programme .(car je ne suis aps sur mon pc)

Si certains d entre pourrai m aider je leur en serai très reconnaisant merci a demain :)

Geissmann Gael
Messages : 11
Enregistré le : 04 Avr 2007, 09:11

Messagepar Geissmann Gael » 04 Avr 2007, 16:48

pas de réponse svp ?

Logez Maxime
Messages : 2282
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 04 Avr 2007, 16:57

Bonjour,

Une question concernant tes données comment les as-tu incoporés dans R, s'agit-il de nombre, de chaine de caractères ou encore de date au sens format date de R ?

Maxime

Geissmann Gael
Messages : 11
Enregistré le : 04 Avr 2007, 09:11

Messagepar Geissmann Gael » 04 Avr 2007, 17:33

pour heure etn jour c est des date au format date de R pour la 3 eme colonne ozone c des nombres entre 5 et 500

Logez Maxime
Messages : 2282
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 04 Avr 2007, 18:27

Re,

Peux tu juste mettre les 10 premières lignes de ton tableau par exemple.

Code : Tout sélectionner

# ne connaissant pas vraiment tes données je te propose ça
# pour le mois de juillet, data etant le tablmeau de données
plot(data$dateJ[format(data$dateJ,"%m")=="07"],data$donne[format(data$dateJ,"%m")=="07"])
# pour le premier Juillet
plot(data$dateH[format(data$dateJ,"%d/%m")=="01/07"], data$donne[format(data$dateJ,"%d/%m")=="01/07"])
# pour le complet
plot(data$dateH,data$donne)


En espérant t'avoir aidé un peu.

Maxime

Geissmann Gael
Messages : 11
Enregistré le : 04 Avr 2007, 09:11

Messagepar Geissmann Gael » 04 Avr 2007, 18:33

pas de problème , la actuellement je ne suis pas sur mon ordi je les mettrai demain a 10h

Geissmann Gael
Messages : 11
Enregistré le : 04 Avr 2007, 09:11

Messagepar Geissmann Gael » 05 Avr 2007, 08:10

Voila le début de mon programme

#PROGRAMME : estimation d'un modèle de regressioin non paramétrique

#importation des données
#On copie et stocke les donées de ozone.txt dans l'objet "ozo"
ozo<-read.table("ozone.txt",header=TRUE,sep='')

datej<-ozo[,1]
dateh<-ozo[,2]
donne<-ozo[,3]

#L'étude se fait du 1er juillet au 16 Septembre avec 95 mesures/jour soit un total de 7392 mesures
#Etudions les graphiques d'un jour , mois et le total

#plot du 1er juillet (95 mesures)
plot(ozo[1:95,2],ozo[1:95,3],type="p",col="yellow",main="1er Juillet",xlab="Temps(heures)",ylab="ozone(ug/m3)")

#plot du mois de juillet (95 mesures *31jours soit =2945 mesures effectuées) FAUTE
plot(ozo[1:2975,2],ozo[1:2975,3],type="p",col="blue",main="Mois de Juillet",xlab="Temps(heures)",ylab="ozone(ug/m3)")

#plot du 1er Juillet au 16 septebre (7392 mesures)
# mais flou COMMENT AMELIORER ... ????
ozo$date <- as.Date(as.character(datej) , format = "%d/%m/%Y")
ozo$Heure <- format(dateh, format = "%H:%M")
time<-as.POSIXct(paste(ozo$date,ozo$Heure))
plot(time,donne,col="blue",main="1e juiller au 16 septembre",xlab="Temps(jours)",ylab="ozone(ug/m3)")

et les fichier ozone.txt est le suivant (les 15 premieres lignes

on voit bien que les graphes total et pour le mois de juillet ne sont pas clars
-------------------------
l erreur avec les commandes que tu ma donné sont celle la :

"error in xy.coords(x, y, xlabel, ylabel, log) :
x and y lengths differ"

JOUR HEURE Ozone(ug/m3)
01/07/03 00:15 79
01/07/03 00:30 77
01/07/03 00:45 77
01/07/03 01:00 77
01/07/03 01:15 77
01/07/03 01:30 76
01/07/03 01:45 75
01/07/03 02:00 77
01/07/03 02:15 75
01/07/03 02:30 71
01/07/03 02:45 73
01/07/03 03:00 69
01/07/03 03:15 3
01/07/03 03:30 40
01/07/03 03:45 13
01/07/03 04:00 17
01/07/03 04:15 73
01/07/03 04:30 71
01/07/03 04:45 69
01/07/03 05:00 63
01/07/03 05:15 66
01/07/03 05:30 67

Voila merci encore

Geissmann Gael
Messages : 11
Enregistré le : 04 Avr 2007, 09:11

Messagepar Geissmann Gael » 07 Avr 2007, 12:53

Quelques petit conseil ? ?? ?

merci :)

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 08 Avr 2007, 11:31

Voici un exemple en utilisant le modèle graphique Trellis (package lattice). Il y a une astuce pour calculer loess et splines: il faut centrer la variable Time (ou autre recodage) pour éviter les dépassements numériques (temps calculé en secondes depuis 1970 avec format POSIXct). Pour ajuster les réglages des splines ou loess, voir les fct s et lo dans le package gam.

Renaud

Code : Tout sélectionner

ozone <- read.table("ozone.txt", header = TRUE, sep = " ")

ozone$Jour  <- as.Date(as.character(ozone$JOUR) , format = "%d/%m/%y")
ozone$Heure <- format(ozone$HEURE, format = "%H:%M")
Time <-as.POSIXct(paste(ozone$Jour, ozone$Heure))

>   ozone
       JOUR HEURE Ozone       Jour Heure
1  01/07/03 00:15    79 2003-07-01 00:15
2  01/07/03 00:30    77 2003-07-01 00:30
3  01/07/03 00:45    77 2003-07-01 00:45
4  01/07/03 01:00    77 2003-07-01 01:00
5  01/07/03 01:15    77 2003-07-01 01:15
6  01/07/03 01:30    76 2003-07-01 01:30
7  01/07/03 01:45    75 2003-07-01 01:45
8  01/07/03 02:00    77 2003-07-01 02:00
9  01/07/03 02:15    75 2003-07-01 02:15
10 01/07/03 02:30    71 2003-07-01 02:30
11 01/07/03 02:45    73 2003-07-01 02:45
12 01/07/03 03:00    69 2003-07-01 03:00
13 01/07/03 03:15     3 2003-07-01 03:15
14 01/07/03 03:30    40 2003-07-01 03:30
15 01/07/03 03:45    13 2003-07-01 03:45
16 01/07/03 04:00    17 2003-07-01 04:00
17 01/07/03 04:15    73 2003-07-01 04:15
18 01/07/03 04:30    71 2003-07-01 04:30
19 01/07/03 04:45    69 2003-07-01 04:45
20 01/07/03 05:00    63 2003-07-01 05:00
21 01/07/03 05:15    66 2003-07-01 05:15
22 01/07/03 05:30    67 2003-07-01 05:30


library(lattice)
library(gam)

xyplot(Ozone ~ Time, data = ozone, aspect = "xy",
  panel = function(x, y){
# trace une grille
    panel.grid()
# trace une ligne joignant les points
    panel.xyplot(x, y, type = "l", lty = "dotdash")
# trace les points
    panel.xyplot(x, y, cex = 1.2, pch = 21, fill = "light blue", col = "blue")
# lissage spline
    m <- mean(x)
    X <- x - m
    fm1 <- gam(y ~ s(X))
    llines(x, fitted(fm1), col = "red")
# lissage loess
    fm2 <- gam(y ~ lo(X))
    llines(x, fitted(fm2), col = "green")
    },
  key = list(space = "right",
             text = list(c("data", "spline", "loess")),
             lines = list(col = c("blue", "red", "green"),
                          lty = c("dotdash", "solid", "solid")))
  )

Geissmann Gael
Messages : 11
Enregistré le : 04 Avr 2007, 09:11

Messagepar Geissmann Gael » 08 Avr 2007, 13:43

Merci ,

jsute une petite erreur
"Time <-as.POSIXct(paste(ozone$Jour, ozone$Heure))
Erreur dans fromchar(unclass(x)) : la chaîne de caractères n'est pas dans un format standard non ambigu
"

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 09 Avr 2007, 10:08

L'exemple que j'ai donné fonctionne de mon côté. Je suis parti du fichier tel que vous l'avez envoyé (copié dans le presse-papier, importé dans R avec read.table(file = "clipboard") puis sauvegardé au format ASCII dans mon répertoire de travail). Il faut adapter ce code au format de votre jeu de données. L'essentiel de l'exemple répond à votre question initiale:

ensuite il faudrait que j applique la regression grace a la fonction loess et peut etre spline. pa dans R mais j avoue que j ai un peu de mal car je n ai pas l 'habitude , je ne travail pas sur ce langage .


Le code que vous utilisez est assez avancé. Si c'est vous qui l'avez écrit, vous devriez trouver facilement la source des erreurs que vous mentionnez. Sinon, vous ne pourrez pas faire l'économie de passer qques jours ou semaines à étudier les manuels de base sur R (nombreuses ressources gratuites, y compris dans l'installation de base de R ou sur le site CRAN). C'est un investissement utile. Nous ne pouvons pas le faire à votre place ;-)

Renaud

Geissmann Gael
Messages : 11
Enregistré le : 04 Avr 2007, 09:11

Messagepar Geissmann Gael » 12 Avr 2007, 14:58

Merci pour ces réponse Juste quelque petites questions :

-pouvait vous me donner une url du package pour R et windows
-Y a t il uine autre solution pour réaliser cette regression non para. sans package ?

Merci beacoup

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 13 Avr 2007, 13:30

Geissmann Gael a écrit :Merci pour ces réponse Juste quelque petites questions :

-pouvait vous me donner une url du package pour R et windows


gam est sur le site CRAN, directement accessible depuis R (RGui pour Windows) par le menu "Packages", option "Installer le(s) package(s)".

-Y a t il uine autre solution pour réaliser cette regression non para. sans package ?

Merci beacoup


Toutes les fonctions, y compris les plus communes, sont dans des packages !

Si vous voulez dire "un package se trouvant dans l'installation de base de R", voir les packages splines et mgcv, mais l'interface (fcts permettant de faire les calculs) est plus complexe.

Renaud

Geissmann Gael
Messages : 11
Enregistré le : 04 Avr 2007, 09:11

Messagepar Geissmann Gael » 15 Avr 2007, 14:09

xyplot(Ozone ~ Time, data = ozone, aspect = "xy",
panel = function(x, y){

aparemment il ya une erreur sur cett ligne je n arrive pas a la trouvé

l erreur est : Erreur dans `[.data.frame`(y, id) : colonnes non définies sélectionnées

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 15 Avr 2007, 15:36

Vérifier les noms des variables dans la formule et le data.frame.

Renaud


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité