Package ggpmisc

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

Anne-Laure Guinet
Messages : 15
Enregistré le : 10 Mai 2016, 13:17

Package ggpmisc

Messagepar Anne-Laure Guinet » 13 Avr 2017, 16:14

Bonjour,

J'ai crée un plot faisant apparaître la droite de régression, le coefficient et le R2, grâce au package ggpmisc.

Je voudrais maintenant créer 2 droites de régression en fonction d'une troisième variable (le sexe, qui prend donc deux valeurs possibles), dans le même plot.

Voici mon jeu de données : data.frame comprenant 48 obs. de 12 variables. Je m'intéresse ici à la régression entre les variables MVPA et GDI, en fonction du sexe.

Code : Tout sélectionner

df1<-structure(list(GDI = c(83.0118291385741, 48.2022977068829, 89.8638994922388,
75.5716477597833, 84.6335018386909, 64.7651742046512, 62.0452709823907,
77.2653816005936, 93.1952937242677, 83.9812091980565, 64.6314523838029,
73.4949661709417, 64.3986225045164, 64.0330003730697, 68.0412863558827,
54.0570994384301, 71.9655, 74.6745, 66.6222936905111, 76.2959655174688,
67.0250905140586, 73.7022564167806, 86.3681319900212, 88.8276747748326,
84.5199107261174, 52.720372718576, 83.3853546838569, 55.8948328394047,
64.6588609448751, 75.2410362479035, 64.1150859443729, 67.8778430233475,
96.4612167229215, 89.1191968061458, 86.7829879351678, 89.9552814285792,
64.7226242106881, 63.6868018679659, 78.7386033853011, 46.2408591440401,
75.9686, 74.2222, 75.4296899917986, 60.7818001124824, 75.1443798782597,
89.7787815404704, 88.8037804028268, 80.6158714332783), HipflTO = c(12.0496396911594,
33.929381997937, 2.76546927097475, -1.22064619851925, 21.1523509440571,
8.26697654138214, 10.0090858491891, 2.13649286198934, 10.0253926414513,
6.21855074359164, 16.5940358679669, 0.867658297582028, 27.0734265202475,
13.6036076923563, 10.6875207875345, 7.72659754114023, 12.8743,
22.2645, 2.9166264485203, 9.40439056605208, 10.1257354930656,
4.83281403039584, 4.83281403039584, 6.05641607273072, 11.4126443600758,
30.3604766884897, 2.52573555908502, 5.51440676874938, 19.3530166199703,
6.88459078308918, 11.3150873728761, -1.45655385160166, 12.2771492900326,
3.61792514043765, 5.7964072963354, -1.19107733192211, 35.1251398965339,
2.87060239711885, 8.28235653074396, 0.499900591697899, 10.5616,
19.9146, 0.211298015626134, 18.3656780745111, 7.97131114863465,
0.499900591697899, 2.87060239711885, 3.28406570445982), KneeflTO = c(46.5284810344042,
63.5372873959014, 45.6211386000816, 57.4289742267484, 45.3211926542186,
36.82156493663, 46.5803280664168, 43.0565255328731, 47.0230589776173,
46.3147475607348, 37.1120135654109, 32.8005551172048, 45.2389118872127,
58.3943447998288, 57.6846829486012, 52.5133311334559, 39.328,
45.8813, 34.0760393240932, 49.4742973937946, 38.8480178066191,
50.9500222201849, 49.527582107504, 34.2082036348729, 44.2278571361861,
63.5440544708534, 30.185131664676, 55.0536006798033, 40.9962936065565,
39.6187973064259, 44.4754686053775, 45.4875162211334, 40.8287892857422,
50.7007331070338, 34.3430522541736, 37.1623328075657, 50.9403648950267,
53.1779736330661, 55.4397960391291, 52.1189728858657, 40.7818,
41.7552, 32.2812959487349, 49.4742973937946, 35.703033383673,
50.9500222201849, 54.4568742172272, 32.0264501241574), AnkleflTO = c(-16.5970307460151,
-14.4486233213446, -16.8210268737107, -10.8894885878109, -23.6137986980344,
-43.0261552996531, -16.1156256497249, -12.0690794245613, -18.0167406890303,
-21.5160561198828, -27.2768661405429, -19.63450330125, -6.90423383188887,
-15.0591299605638, -15.5204671335819, -15.5374439808266, -14.5887,
-3.1998, -4.94381508369433, 10.1873507629491, -41.8737394170789,
-15.3683242564949, -14.8511267934247, -24.675068003148, -14.7486206079215,
-14.2628660131736, -6.33331589940117, -6.764953687095, -22.0544590556984,
-47.6469560165876, -13.2852786648817, -13.2631442073133, -14.3376460186298,
-22.5890257421615, -24.7280453142148, -19.2810194685073, -11.530606631805,
-14.9956255043962, -15.4697528412196, -15.6158877327769, -14.6767,
-3.0617, 5.07084996045664, 10.1873507629491, -40.3390169146622,
-15.3683242564949, -16.1110146853407, -23.4348179769874), Walkingspeed = c(0.781126690388657,
0.592198843446024, 0.71837557333629, 1.04444969157965, 0.842473886679622,
1.05637607011426, 0.429216003616361, 1.08299734869606, 0.997295599134691,
1.04687704004644, 0.731021621053124, 1.17669900552716, 0.9256138010219,
0.5865584273796, 0.634126441286247, 0.707795132646487, 1.1055,
0.6662, 0.877005706578642, 1.15730797119028, 1.13936280017747,
1.14410808356788, 0.961693020665283, 1.38457522842926, 0.781126690388657,
0.592198843446024, 0.71837557333629, 1.04444969157965, 0.842473886679622,
1.05637607011426, 0.429216003616361, 1.08299734869606, 0.997295599134691,
1.04687704004644, 0.731021621053124, 1.17669900552716, 0.9256138010219,
0.5865584273796, 0.634126441286247, 0.707795132646487, 1.1055,
0.6662, 0.877005706578642, 1.15730797119028, 1.13936280017747,
1.14410808356788, 0.961693020665283, 1.38457522842926), ScoreASK = c(64,
82, 94, 107, 106, 97, 52, 119, 118, 111, 34, 120, 112, 101, 49,
89, 114, 49, 123, 73, 70, 118, 117, 120, 64, 82, 94, 107, 106,
97, 52, 119, 118, 111, 34, 120, 112, 101, 49, 89, 114, 49, 123,
73, 70, 118, 117, 120), MVPA = c(16, 15.5, 23.3, 8.3, 13, 12.6,
10.3, 15.3, 9.6, 30.8, 4.4, 16.6, 18.3, 5, 6, 19.8, 9.6, 9.7,
17.1, 8.5, 11.5, 17.3, 21.7, 18.3, 16, 15.5, 23.3, 8.3, 13, 12.6,
10.3, 15.3, 9.6, 30.8, 4.4, 16.6, 18.3, 5, 6, 19.8, 9.6, 9.7,
17.1, 8.5, 11.5, 17.3, 21.7, 18.3), stepsperday = c(6375, 5844,
7626.71428571429, 4018.28571428571, 7037.85714285714, 4931.28571428571,
3972.28571428571, 7427.57142857143, 4494.85714285714, 10157.4285714286,
2186.42857142857, 10502.7142857143, 4965.14285714286, 2141.57142857143,
2820, 5980.42857142857, 4146.57142857143, 4663.14285714286, 6239.28571428571,
1780.85714285714, 4615.42857142857, 5824, 11377, 5432.57142857143,
6375, 5844, 7626.71428571429, 4018.28571428571, 7037.85714285714,
4931.28571428571, 3972.28571428571, 7427.57142857143, 4494.85714285714,
10157.4285714286, 2186.42857142857, 10502.7142857143, 4965.14285714286,
2141.57142857143, 2820, 5980.42857142857, 4146.57142857143, 4663.14285714286,
6239.28571428571, 1780.85714285714, 4615.42857142857, 5824, 11377,
5432.57142857143), stepcounts = c(44625, 40908, 53387, 28128,
49265, 34519, 27806, 51993, 31464, 71102, 15305, 73519, 34756,
14991, 19740, 41863, 29026, 32642, 43675, 12466, 32308, 40768,
79639, 38028, 44625, 40908, 53387, 28128, 49265, 34519, 27806,
51993, 31464, 71102, 15305, 73519, 34756, 14991, 19740, 41863,
29026, 32642, 43675, 12466, 32308, 40768, 79639, 38028), GMFCS = c(1,
2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 2, 2, 1, 2, 1, 2, 1, 1,
1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 2, 2, 1, 2, 1,
2, 1, 1, 1, 1), Atteinte = c("Diplégique", "Hémiplégique", "Hémiplégique",
"Hémiplégique", "Hémiplégique", "Hémiplégique", "Diplégique",
"Hémiplégique", "Hémiplégique", "Hémiplégique", "Diplégique",
"Hémiplégique", "Hémiplégique", "Diplégique", "Diplégique", "Diplégique",
"Diplégique", "Hémiplégique", "Diplégique", "Diplégique", "Diplégique",
"Hémiplégique", "Hémiplégique", "Hémiplégique", "Diplégique",
"Hémiplégique", "Hémiplégique", "Hémiplégique", "Hémiplégique",
"Hémiplégique", "Diplégique", "Hémiplégique", "Hémiplégique",
"Hémiplégique", "Diplégique", "Hémiplégique", "Hémiplégique",
"Diplégique", "Diplégique", "Diplégique", "Diplégique", "Hémiplégique",
"Diplégique", "Diplégique", "Diplégique", "Hémiplégique", "Hémiplégique",
"Hémiplégique"), Sexe = c("M", "F", "F", "M", "F", "M", "F",
"M", "M", "F", "F", "F", "M", "F", "F", "M", "M", "M", "F", "M",
"F", "M", "M", "F", "M", "F", "F", "M", "F", "M", "F", "M", "M",
"F", "F", "F", "M", "F", "F", "M", "M", "M", "F", "M", "F", "M",
"M", "F")), .Names = c("GDI", "HipflTO", "KneeflTO", "AnkleflTO",
"Walkingspeed", "ScoreASK", "MVPA", "stepsperday", "stepcounts",
"GMFCS", "Atteinte", "Sexe"), row.names = c(NA, -48L), class = "data.frame")


Code : Tout sélectionner

 
#ggplot
library(ggplot2)
library(ggpmisc)
df1 <- data.frame(zb)
my.formula <- df1$MVPA~df1$GDI
p1 <- ggplot(data = df1, aes(x = df1$GDI, y = df1$MVPA, colour=df1$Sexe) +geom_point()+
  geom_smooth(method = "lm", se=FALSE))
  stat_poly_eq(aes(label = paste(..eq.label.., ..rr.label.., sep = "~~~")),
               parse = TRUE, formula = my.formula)         
 
p1


Merci,

Anne-Laure

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: Package ggpmisc

Messagepar Mickael Canouil » 13 Avr 2017, 16:24

Bonjour,

il semblerait que vous ayez déjà tout ce qu'il faut pour répondre (sans les erreurs de programmation)

Code : Tout sélectionner

p1 <- ggplot(data = df1, aes(x = df1$GDI, y = df1$MVPA, colour=df1$Sexe)) +
    geom_point()+
    geom_smooth(method = "lm", se=FALSE) +
    stat_poly_eq(aes(label = paste(..eq.label.., ..rr.label.., sep = "~~~")), parse = TRUE, formula = my.formula)
   
p1


Cordialement,
Mickaël
mickael.canouil.fr | rlille.fr

Anne-Laure Guinet
Messages : 15
Enregistré le : 10 Mai 2016, 13:17

Re: Package ggpmisc

Messagepar Anne-Laure Guinet » 16 Avr 2017, 16:58

Merci de votre réponse, le problème est que j'obtiens les mêmes équations pour mes droites de régression.
Il doit y avoir une ligne de code à ajouter probablement... mais je ne sais pas où (j'ai testé plusieurs hypothèses mais cela introduit un bug systématiquement)...

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: Package ggpmisc

Messagepar Mickael Canouil » 19 Avr 2017, 08:11

Effectivement, je n'avais pas remarqué...

Le problème vient de votre formule "my.formula", celle-ci est "indépendante" du graphique et utilise l'ensemble des valeurs des variables "GDI" et "MVPA" quand vous ne vouliez utiliser les valeurs que pour un sous-groupe donné.

Ainsi, il vous suffit de remplacer votre formule par la forme générique basé sur les noms des "aesthetics", à savoir x, y, colour, group, etc.
Ici, "GDI" correspond à "x" est "MVPA" à "y", la formule à utiliser dans "stat_poly_eq" est donc "y~x"

Code : Tout sélectionner

my.formula <- y~x
p1 <- ggplot(data = df1, aes(x = df1$GDI, y = df1$MVPA, colour=df1$Sexe)) +
    geom_point()+
    geom_smooth(method = "lm", se=FALSE) +
    stat_poly_eq(aes(label = paste(..eq.label.., ..rr.label.., sep = "~~~")), parse = TRUE, formula = my.formula)
   
p1


Cordialement,
Mickaël
mickael.canouil.fr | rlille.fr


Retourner vers « Questions en cours »

Qui est en ligne

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