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 :

Faire une régression avec intervalles de confiance


Sujet :

R

  1. #1
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut Faire une régression avec intervalles de confiance
    je continue mes débuts sur R.
    J'essaye de dessiner une régression avec intervalles de confiance avec ggplot2.
    Voici mon code. Il dessine une droite de régression à l'extérieur de l'intervalle de confiance !!

    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
    26
    27
    28
    29
    30
    #charge la librairie (à ne faire qu'une fois)
    install.packages("ggplot2", dependencies = TRUE)
     
    #monte la librairie principale et ses dépendants
    # doc sur file:///C:/Documents%20and%20Settings/planchoo/Bureau/ggplot2/html/00Index.html
    library(ggplot2)
     
    #ouvre le jeu de données diamonds inclu dans le package ggplot2
    data("diamonds", package = "ggplot2")
     
    #crée un sous-ensemble aléatoire de 100 lignes pour certains graphiques
    set.seed(1410)
    dsmall <- diamonds[sample(nrow(diamonds), 100),]
     
    #effectue la régression
    model <- lm(price ~carat, data=dsmall) 
     
    # crée les données X à plotter pour le fit
    carat = seq(from = min(dsmall$carat), to = max(dsmall$carat), length.out = 20)
    nd = data.frame(carat)
     
    # Prédictions du modèle sur les nouvelles données
    err <- stats::predict(model, newdata=nd, se = TRUE)
     
    # affecter la prédiction +/- 2 stdev à de nouvelles variables
    nd$ucl <- err$fit + 1.96 * err$se.fit 
    nd$lcl <- err$fit - 1.96 * err$se.fit 
     
    #plot les points + les prédictions avec intervalle de confiance
    qplot(carat, price, data=dsmall, alpha=0.5, xlim = c(0,3)) +   geom_smooth(aes(x=carat, ymin = lcl, ymax = ucl), data=nd, stat="identity")
    le problème est dans la dernière ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #plot les points + les prédictions avec intervalle de confiance
    qplot(carat, price, data=dsmall, alpha=0.5, xlim = c(0,3)) +   geom_smooth(aes(x=carat, ymin = lcl, ymax = ucl), data=nd, stat="identity") 
    [
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  2. #2
    Membre habitué
    Inscrit en
    Mai 2010
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 74
    Points : 164
    Points
    164
    Par défaut
    Je ne comprends trop ton code vu que avec geom_smooth on a deja l'intervalle de confiance.......Bon pour le graph d'une regression avec intervalle de confiance je pense que ca suffit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    qplot(carat, price ,data=dsmall,geom="point")+geom_smooth(method="lm")
    Et dans ligne ou il y'a un probleme tu n'a pas mis de "geom" dans ton qplot.

  3. #3
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    merci merci
    hier c'était ma première journée sur ggplot après 2 jours d'initiation à R donc forcément, tout n'est pas encore rangé à la bonne place.

    Du coup je remets un autre problème sur le même fil car il concerne toujours les intervalles de confiance : quand je mets un intervalle de confiance, ça me pourrit mes légendes.

    ci dessous du code "jouable" avec les donnée en dur
    voir la jolie légende de l'avant dernière ligne, et voir comment ça se pourrit dans la dernière ligne.

    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
    26
    #ici les données en dur
    Angle <- as.factor(as.vector(c("A",	"A",	"A",	"A",	"A",	"A",	"B",	"B",	"B",	"B",	"B",	"B",	"C",	"C",	"C",	"C",	"C",	"C",	"D",	"D",	"D",	"D",	"D",	"D",	"E",	"E",	"E",	"E",	"E",	"E")))
    Distance <- as.factor(as.vector(c("1",	"2",	"3",	"4",	"5",	"6",	"1",	"2",	"3",	"4",	"5",	"6",	"1",	"2",	"3",	"4",	"5",	"6",	"1",	"2",	"3",	"4",	"5",	"6",	"1",	"2",	"3",	"4",	"5",	"6")))
    Measured <- as.vector(c(2.26,	2.54,	3.91,	3.61,	3.35,	2.19,	2.12,	2.39,	3.33,	3.49,	3.56,	2.26,	2.12,	2.72,	3.33,	3.76,	3.75,	2.41,	2.36,	2.8,	3.38,	3.64,	3.56,	2.32,	2.6,	2.78,	3.4,	3.53,	3.57,	2.26))
    Modelled <- as.vector(c(2.1231,	2.6525,	3.505,	3.7705,	3.5531,	2.2558,	2.1231,	2.6525,	3.505,	3.7705,	3.5531,	2.2558,	2.1231,	2.6525,	3.505,	3.7705,	3.5531,	2.2558,	2.1231,	2.6525,	3.505,	3.7705,	3.5531,	2.2558,	2.1231,	2.6525,	3.505,	3.7705,	3.5531,	2.2558))
    M = data.frame(list(Angle, Distance, Measured, Modelled))
    names(M)<-c("Angle", "Distance", "Measured", "Modelled")
    summary(M)
     
    my_theme = opts(plot.background = theme_rect(fill = NA, colour = NA),
    panel.background = theme_rect(fill = NA, colour = "black", size = 0.5),
    panel.grid.major = theme_line(size=0.5, colour = "black"),
    axis.text.x = theme_text(colour = "black", size = 12),
    axis.text.y = theme_text(colour = "black", size = 12),
    axis.ticks.margin = unit(12, "points"),
    legend.background = theme_rect(fill="white"),
    legend.key = theme_rect(fill="white") )
     
    original_theme = theme_update (my_theme)
    summary(original_theme)
     
    #jolie légende
    qplot(Measured, Modelled, data = M, shape = Angle, size = Distance, geom = "point")
     
    #légende pourie
    qplot(Measured, Modelled, data = M, shape = Angle, size = Distance, geom = "point")+ geom_smooth(aes(group=1), method="lm")
    PS. J'ai bien galéré pour mettre les données en dur dans le code, donc si il y a plus simple, je suis preneur
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  4. #4
    Membre habitué
    Inscrit en
    Mai 2010
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 74
    Points : 164
    Points
    164
    Par défaut
    Excuse moi pour le retard..j'étais un peu busy ces derniers jours. Pour regler ton problème avec la légende tu peux faire ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    qplot(Measured, Modelled, data = M, shape = Angle, size = Distance, geom = "point")+ geom_smooth(aes(group=1), size = .8 ,method="lm")
    Donc l'idée c'est de fixer toi même le paramètre size pour le geom_smooth sinon par defaut ca garde celui dans le qplot (i.e Distance).
    Et par rapport à ton code si tu veux genererer des facteurs rapidement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ? gl
    # pour repeter des valeurs comme tes "A","B"...
    ? rep
    cordialement

  5. #5
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    Merci. Je note dans un coin.
    La figure est finie, mais je vais regarder en détail pour la prochaine fois.
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

Discussions similaires

  1. Faire une recherche avec/sans accents
    Par Wedge3D dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 21/02/2007, 10h43
  2. Faire une boucle avec des variables vides ?
    Par byloute dans le forum Linux
    Réponses: 5
    Dernier message: 23/02/2006, 09h33
  3. [Excel]Faire une somme avec une macro
    Par Chlo dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/01/2006, 19h53
  4. cmt se connecté a oracle pour faire une requete avec python
    Par dipajero dans le forum Bibliothèques tierces
    Réponses: 6
    Dernier message: 28/12/2005, 20h22
  5. Faire une JFrame avec LookAndFeel
    Par aburner dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 03/12/2003, 08h54

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