Intervalles de confiances régression logistique binomiale

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

Evan Alonso
Messages : 15
Enregistré le : 17 Juil 2017, 08:46

Intervalles de confiances régression logistique binomiale

Messagepar Evan Alonso » 17 Juil 2017, 09:17

Bonjour,

Avant de vous exposer mon problème, je dois vous faire un topo de la situation : Je suis en stage pour une mutuelle et j'ai effectué une régression logistique binomiale
Image

Avec comme variable expliquée le nombre de consultations en 2017 pour un adhérent (0 pour faible et 1 pour élevé) et avec comme variables explicatives le montant des cotisations versées par l’adhérent en 2016 (4 modalités), son montant de prestations reçu en 2016 (2 modalités), son âge (5 modalités), son sexe et le nombre de personnes à sa charge.

J'ai donc utilisé glm pour ma régression et j'ai utilisé predict.glm pour faire des prévisions.

Et j'en arrive à mon problème, predict.glm me donne une prévision et un taux d'erreur pour des paramètres donnés :

> P$fit
1
0.9532652
> P$se.fit
1
0.001659876
> P$residual.scale
[1] 1

Mais moi ce que je voudrais réussir à construire c'est des intervalles de confiance. Mais je n'arrive pas à visualiser comment je peux construire une courbe de prévisions ainsi que des intervalles de confiance avec des variables catégorielles. Avec des variables quantitatives je visualise mais avec un modèle comme ça je ne visualise pas du tout.
Je voudrais faire des graphes comme ceux présent dans ce pdf (pages 19 à 21) -> https://www.google.fr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwiY5s3u_I_VAhUDJFAKHRl4BLMQFggoMAA&url=http%3A%2F%2Ffreakonometrics.free.fr%2Fslides-2040-4.pdf&usg=AFQjCNEHZr39lzA0kA9SfsclRc2zEgmPVw

Mais il les fait avec une seule variable explicative et ce n'est même pas une variable catégorielle, je suis perdu.. Pareil pour ce site -> http://freakonometrics.hypotheses.org/2289

A la rigueur je pourrais faire des IC pour les valeurs prédites avec predict.glm pour des paramètres donnés mais bon... c'est juste un cas et pas chaque cas quoi...

Je ne sais pas si je suis clair, c'est assez dur à exposer clairement comme problème, n'hésitez pas à me le dire si ce n'est pas clair.

P.S : Je voudrais savoir aussi, quelle est la différence entre "response", "link" et "terms" pour le type dans predict.glm. Moi j'ai utilisé response afin d'obtenir la probabilité d'avoir 1 et le taux d'erreur de la prédiction. Mais les autres ils servent à quoi ?

Je vous remercie d'avance pour votre aide et je vous souhaite une bonne journée.

Evan.

Charles Marcucci
Messages : 52
Enregistré le : 13 Juil 2016, 09:00

Re: Intervalles de confiances régression logistique binomiale

Messagepar Charles Marcucci » 24 Juil 2017, 08:54

bonjour

Stock le résultat de ta régression logistique et fait

Code : Tout sélectionner

summary
de cette variable. Normalement tu devrai avoir les OR sous dans la colonne exp(coef) et l'intervalle de confiance à 95 % dans lower.95 et upper.95 .

Je suis pas capable de t'aider pour le reste;

Bonne journée

Alexandre Dangléant
Messages : 270
Enregistré le : 30 Mar 2010, 14:38

Re: Intervalles de confiances régression logistique binomiale

Messagepar Alexandre Dangléant » 24 Juil 2017, 09:23

Bonjour,

Je ne suis pas sûr de bien vous suivre. Si vous avez des variables catégorielles, vous ne pouvez guère faire un graphique de prévision de Y par cette variable (enfin si, mais ça n'a pas d'intérêt je pense). En revanche, vous pouvez faire une visualisation de Y par X (donc une quantitative) en fonction de chaque modalité d'une variable catégorielle...

Pour cela, je vous conseille le package ggplot2, assez puissant en la matière. Un exemple à la volée (sans données derrière, juste pour illustrer comment ça marche). Soit F votre variable catégorielle, Y la proba calculée par le modèle et X une variable quantitative :

Code : Tout sélectionner

g <- ggplot(data, aes(y = Y, x = X, fill = F, color = F)) + stat_smooth(method = "glm", alpha = 0.2, family = "binomial")
g

Vous devez normalement obtenir le graph que vous voulez, avec une couleur par modalité de votre variable qualitative.

En espérant vous avoir aidé.
Bien cordialement.

Evan Alonso
Messages : 15
Enregistré le : 17 Juil 2017, 08:46

Re: Intervalles de confiances régression logistique binomiale

Messagepar Evan Alonso » 25 Juil 2017, 12:51

Charles -> Bonjour,

Je crois que ce que vous m'indiquez ici c'est les intervalles de confiances pour les coefficients estimés. Or ce que je veux moi, c'est un intervalle de confiance pour une probabilité calculée avec predict.glm.

Alexandre -> Bonjour,

Oui c'est ce que je pensais, quand l'on a des variables catégorielles, on ne peut pas vraiment faire un graphique de prévision de Y par cette variable. C'est pour ça je suis venu ici pour demander de l'aide car je ne voyais pas comment faire, les seuls exemples que je trouvais sur internet traitaient d'intervalles de confiance pour du quantitatif.

J'ai essayé votre code en remplaçant avec mes données et ça me renvoie comme message : "Warning: Ignoring unknown parameters: family" et ça me retourne comme résultat un graphique vide :

Image



Et aussi, votre méthode c'est pour une prédiction avec juste une variable expliquée non ? Or, ma prédiction je l'ai faite avec toutes mes variables expliquées.
Image

Je suis désolé, je suis un peu perdu.. j'ai bien compris pour votre ggplot2, mais je n'arrive pas à concevoir comment je peux faire un intervalle de confiance avec "autant" de variables catégorielles.. ça ne me semble pas possible en fait, ça serait illisible. Mais je ne vais pas faire une prédiction avec juste une de mes variables explicatives non ?

En tout cas, merci pour votre sollicitude à vous deux.

Cordialement.

Evan.

Charles Marcucci
Messages : 52
Enregistré le : 13 Juil 2016, 09:00

Re: Intervalles de confiances régression logistique binomiale

Messagepar Charles Marcucci » 25 Juil 2017, 15:21

la réponse n'est elle pas dans le diaporama ?

Code : Tout sélectionner

 
 lines(p,p$fit+2*p$se.fit,lty=2)
  lines(p,p$fit-2*p$se.fit,lty=2)
 

Evan Alonso
Messages : 15
Enregistré le : 17 Juil 2017, 08:46

Re: Intervalles de confiances régression logistique binomiale

Messagepar Evan Alonso » 26 Juil 2017, 07:06

J'ai déjà essayé ce code mais il me semble que c'est pour des variables quantitatives et non qualitatives. Et c'est toujours le même problème, c'est un prédict avec juste une variable explicative, or ma prédiction est avec plusieurs variables explicatives.

Quand je fais un prédict juste avec une seule d emes variables explicatives, cette fonction du diaporama me retourne ceci :

Image

A moins que je n'ai mal compris votre message ? C'est possible aussi.

Evan Alonso
Messages : 15
Enregistré le : 17 Juil 2017, 08:46

Re: Intervalles de confiances régression logistique binomiale

Messagepar Evan Alonso » 26 Juil 2017, 09:30

J'ai retenté en modifiant votre code Alexandre :

Code : Tout sélectionner

g <- ggplot(base, aes(y = 0.5362, x = MtCotisationClasse , fill = Nbpresta2, color = Nbpresta2)) + stat_smooth(method = "glm", alpha = 0.2, method.args = list(family = "binomial"))
g


J'ai préalablement fait une prédiction avec une seule variable catégorielle et c'est pareil, ça me reodnne le même graphique vide :

Image

Je ne comprends pas. Je n'ai aucun message d'erreur mais rien ne s'affiche.

Alexandre Dangléant
Messages : 270
Enregistré le : 30 Mar 2010, 14:38

Re: Intervalles de confiances régression logistique binomiale

Messagepar Alexandre Dangléant » 26 Juil 2017, 12:32

Bonjour,

Je répète mon premier message : dans aes, le x doit être votre variable quantitative, le y étant la prédiction du passage de 0 à 1 pour chaque individu donnée par fitted(model), et fill est votre variable catégorielle. Dans ce cadre là, vous visualisez en fait l'interaction entre la catégorielle et la quantitative. Ceci me semblait être une réponse pertinente à votre demande originelle, ou du moins à ce que je pensais en comprendre... Or, vous avez mis la catégorielle sur x, une constante en y (j'imagine un des coefficients de votre modèle...), et une autre catégorielle pour fill. Il n'y a pas de message d'erreur car ggplot répond à votre demande, c'est celle ci qui est dans les choux...

J'ai l'impression que l'incompréhension est plutôt d'ordre statistique que de R, on va vite glisser vers le hors sujet eu égard aux objectifs de ce forum... Bref, m'est avis que vous devriez potasser qq cours sur la régression logistique. D'ailleurs, jusqu'ici je n'avais pas regardé la sortie du modèle : première remarque, je suis assez surpris de voir que tout est significatif... Ma courte expérience m'incite à penser que c'est le signe d'un modèle mal écrit. De plus, je ne vois aucun test d'interaction entre vos variables... A moins que vous les ayez fait au préalable, il s'agit là d'un impair.

Oui les visualisations que je vous propose correspondent effectivement à regarder les effets un à un, et c'est bien le sens de la sortie du summary : chaque effet est évalué indépendamment dans ce cadre (sauf si vous testez les interactions). Du reste, je ne vois pas comment on pourrait faire ce que vous demandez : visualiser dans un espace à deux dimensions la réponse d'une variable Y en fonction de Ni variables catégorielles et Nj variables quantitatives... Vous comptez mettre quoi en abscisse sur votre graph? Vous avez mis le doigt dessus lors de votre précédent post :
...je n'arrive pas à concevoir comment je peux faire un intervalle de confiance avec "autant" de variables catégorielles..

Sauf que c'est vrai aussi sans chercher à faire des intervalles de confiance et en ne prenant que des quantitatives...

Ce que vous demandera votre mutuelle, je pense, c'est plutôt quelle est le poids de telle ou telle variable sur le nombre de consultations (d'ailleurs, une binomiale me semble bien mal adaptée à une étude pertinente de cela). Ainsi, vous pourrez dire qu'être dans la tranche de 20 à 30 ans augmente de telle valeur la probabilité de passer d'un nombre de consultation faible à élevé par rapport à la tranche 0 à 19 ans, etc. On appelle cela les odd ratio, et ils se calculent à partir du summary... Intuitivement, c'est déjà un résultat qui permettra d'ajuster les cotisations. Personne ne vous dira comment le faire ici, les questions statistiques sont volontairement exclues de ce forum, allez en voir un de stats pour cela...

Pour obtenir une prédiction (et son intervalle de confiance) grâce à votre modèle complet, il faut encore lui dire pour quelle valeur de chaque paramètre il doit la calculer, ce que vous aviez compris dans votre premier message. C'est effectivement qqch qui intéressera votre mutuelle puisque quand un client se présentera, à la suite d'un questionnaire, vous aurez tous les paramètres pour savoir si il va beaucoup consulter et le faire payer en conséquence. Un conseil cependant, avant de vous lancer là-dedans, vérifiez que votre modèle est bon, je vous recommande le package pROC qui permet de calculer le pouvoir discriminant d'une régression logistique au travers de l'AUC. Certains préfèrent d'autres indicateurs, mais à titre personnel je trouve celui-ci plus informatif et intuitif que les autres... Là encore, à vous de faire des recherches.

Bon courage.
Cordialement.

Evan Alonso
Messages : 15
Enregistré le : 17 Juil 2017, 08:46

Re: Intervalles de confiances régression logistique binomiale

Messagepar Evan Alonso » 07 Aoû 2017, 12:02

Bonjour,

Désolé pour le temps de réponse, j'ai dû modifier mes variables suite à une discussion avec mon directeur.

Alexandre -> Toutes les vérifications nécessaires ont été prises pour vérifier la validité de mon modèle. J'ai construit une courbe ROC sur deux échantillons (un échantillon d'apprentissage et un échantillon test) afin de visualiser l'AUC, j'ai visualisé mes matrices de confusion afin d'avoir un taux d'erreur et j'ai fait les tests de vraisemblances ainsi que les tests d'interactions entre mes variables. J'ai effectivement quelques problèmes avec la théorie ainsi que le code mais je potasse depuis des mois tout ce qui est possible de potasser et je pense avoir saisi les fondements de la régression logistique. Je n'ai juste jamais fait d'intervalles de confiance dans ce cas-la, j'ai donc du mal à visualiser la chose. Désolé si je semble un peu perdu mais je fais tout mon possible.

Je vais ré-essayer de mieux comprendre comment faire ces IC et je reviendrais vers vous si il le faut.

Je vous remercie pour votre sollicitude en tout cas.

Respectueusement.

Alonso Evan.


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité