ggplot2: régression logistique - probabilités de tracé et ligne de régression
J'ai un ensemble de données.cadre contenant un prédicteur continu et une réponse dichotomique de la variable.
> head(df)
position response
1 0 1
2 3 1
3 -4 0
4 -1 0
5 -2 1
6 0 0
Je peux facilement calculer une régression logistique par le biais de la glm()
-fonction, pas de problèmes jusqu'à ce point.
Prochaine, je veux créer une intrigue avec ggplot
qui contient à la fois empirique probabilités pour chacun de l'ensemble des 11 valeurs prédictives, et la régression ajustée ligne.
Je suis allé de l'avant et a calculé les probabilités avec cast()
et sauvegardé dans un autre des données.cadre
> probs
position prob
1 -5 0.0500
2 -4 0.0000
3 -3 0.0000
4 -2 0.2000
5 -1 0.1500
6 0 0.3684
7 1 0.4500
8 2 0.6500
9 3 0.7500
10 4 0.8500
11 5 1.0000
J'ai tracé les probabilités:
p <- ggplot(probs, aes(x=position, y=prob)) + geom_point()
Mais lorsque j'essaie d'ajouter la régression ajustée ligne
p <- p + stat_smooth(method="glm", family="binomial", se=F)
il renvoie un message d'avertissement: non-integer #successes in a binomial glm!
.
Je sais que pour le tracé de la stat_smooth
"correctement", je dois appeler l'original df
de données avec la variable dichotomique. Cependant, si j'utilise le df
données dans ggplot()
, je ne vois aucune façon de tracer les probabilités.
Comment puis-je combiner les probabilités et la ligne de régression dans une parcelledans la façon dont il est censé être dans ggplot2, c'est à dire sans aucune avertissements ou messages d'erreur?
source d'informationauteur vincentqu
Vous devez vous connecter pour publier un commentaire.
En gros, il existe trois solutions:
La fusion des données.images
Le plus simple, après vous avez vos données dans deux
data.frame
s consisterait à fusionner enposition
:Ensuite, vous pouvez appeler
ggplot
sur cedata.frame
sans mise en garde:En évitant la création de deux données.images
Dans le futur, vous pourriez directement d'éviter la création de deux données distinctes.les cadres qui vous avez à fusionner plus tard. Personnellement, j'aime utiliser le
plyr
package:Edit: l'Utilisation des données différentes pour chaque couche
J'ai oublié de mentionner, que vous pouvez utiliser pour chaque couche d'un autre
data.frame
qui est un grand avantage deggplot2
:Comme un indice supplémentaire: Éviter l'utilisation de la variable nom de
df
puisque vous substituez la fonction intégréestats::df
en lui assignant le nom de cette variable.