Comment visualiser la qualité de l'ajustement bayésien pour la régression logistique

10

Pour un problème de régression logistique bayésienne, j'ai créé une distribution prédictive postérieure. J'échantillonne à partir de la distribution prédictive et reçois des milliers d'échantillons de (0,1) pour chaque observation que j'ai. Visualiser la qualité de l'ajustement est loin d'être intéressant, par exemple:

entrez la description de l'image ici

Ce graphique montre les 10 000 échantillons + le point de référence observé (dans la gauche, on peut distinguer une ligne rouge: oui, c'est l'observation). Le problème est que ce tracé n'est guère informatif, et j'en aurai 23, un pour chaque point de données.

Existe-t-il une meilleure façon de visualiser les 23 points de données plus les échantillons postérieurs.


Une autre tentative:

entrez la description de l'image ici


Une autre tentative basée sur le papier ici

entrez la description de l'image ici

Cam.Davidson.Pilon
la source
1
Voir ici pour un exemple où la technique de données-vis ci-dessus fonctionne.
Cam.Davidson.Pilon
C'est beaucoup d'espace perdu OMI! Avez-vous vraiment seulement 3 valeurs (en dessous de 0,5, au-dessus de 0,5 et l'observation) ou est-ce juste un artefact de l'exemple que vous avez donné?
Andy W
C'est en fait pire: j'ai 8500 0s et 1500 1s. Le graphique pousse simplement ces valeurs pour créer un histogramme connecté. Mais je suis d'accord: beaucoup d'espace perdu. Vraiment, pour chaque point de données, je peux le réduire à une proportion (ex 8500/10000) et une observation (soit 0 ou 1)
Cam.Davidson.Pilon
Vous avez donc 23 points de données et combien de prédicteurs? Et votre distraction prédictive postérieure est-elle pour de nouveaux points de données ou pour les 23 que vous avez utilisés pour ajuster le modèle?
Probabilogic
Votre intrigue mise à jour est proche de ce que j'allais suggérer. Qu'est-ce que l'axe x représente cependant? Il semble que vous ayez des points surimposés - qui avec seulement 23 semblent inutiles.
Andy W

Réponses:

5

J'ai l'impression que vous n'abandonnez pas tout à fait tous les biens à votre situation, mais étant donné ce que nous avons devant nous, considérons l'utilité d' un simple point-plot pour afficher les informations.

Tracé de points

La seule vraie chose à ne pas faire ici (qui ne sont peut-être pas des comportements par défaut) sont:

  • J'ai utilisé des codages, une forme et une couleur redondants pour distinguer les valeurs observées d'absence de défauts et de défauts. Avec des informations aussi simples, il n'est pas nécessaire de placer un point sur le graphique. Vous avez également un problème lorsque le point est proche des valeurs moyennes, il faut plus de recherche pour voir si la valeur observée est zéro ou un.
  • J'ai trié le graphique selon la proportion observée.

Le tri est le vrai coup de pied pour des points comme ceux-ci. Le tri par valeurs de proportion permet de découvrir facilement des observations résiduelles élevées. Avoir un système où vous pouvez facilement trier par valeurs contenues dans l'intrigue ou dans les caractéristiques externes des cas est le meilleur moyen d'obtenir le meilleur rapport qualité-prix.

Ce conseil s'étend également aux observations continues. Vous pouvez colorer / façonner les points selon que le résidu est négatif ou positif, puis dimensionner le point en fonction du résidu absolu (ou au carré). Ceci n'est cependant pas nécessaire ici en raison de la simplicité des valeurs observées.

Andy W
la source
1
J'aime cette solution et son contenu, j'attends juste d'autres soumissions. Merci Andy.
Cam.Davidson.Pilon
1
@ Cam.Davidson.Pilon - J'attends aussi d'autres soumissions! Parce que votre modèle n'a qu'un seul prédicteur - le tri par la proportion prédite de défauts serait synonyme de tri par température (en supposant un effet monotone - tel qu'il apparaît dans votre graphique). Peut-être que quelqu'un viendra avec une autre solution qui permet effectivement de voir à la fois la proportion prévue et la température d'origine (ou quelque chose de complètement différent). Cet affichage est bon pour voir de mauvaises prédictions, mais n'est pas très bon pour des choses comme voir des effets non linéaires.
Andy W
1
Je suis heureux de vous attribuer la prime. Le tri est la clé pour le présenter, et le papier lié à votre post précédent est ce que j'utiliserai. Merci!
Cam.Davidson.Pilon
4

La façon habituelle de visualiser l'ajustement d'un modèle de régression logistique bayésien avec un prédicteur est de tracer la distribution prédictive avec les proportions correspondantes. (S'il vous plaît, faites-moi savoir si j'ai compris votre question)

Un exemple utilisant l'ensemble de données populaire de Bliss.

entrez la description de l'image ici

Code ci-dessous dans R:

library(mcmc)

# Beetle data

ni = c(59, 60, 62, 56, 63, 59, 62, 60) # Number of individuals
no = c(6, 13, 18, 28, 52, 53, 61, 60) # Observed successes
dose = c(1.6907, 1.7242, 1.7552, 1.7842, 1.8113, 1.8369, 1.8610, 1.8839) # dose

dat = cbind(dose,ni,no)

ns = length(dat[,1])

# Log-posterior using a uniform prior on the parameters

logpost = function(par){
var = dat[,3]*log(plogis(par[1]+par[2]*dat[,1])) + (dat[,2]-dat[,3])*log(1-plogis(par[1]+par[2]*dat[,1]))

if( par[1]>-100000 ) return( sum(var) )
else return(-Inf)
}

# Metropolis-Hastings
N = 60000

samp <- metrop(logpost, scale = .35, initial = c(-60,33), nbatch = N)

samp$accept

burnin = 10000
thinning = 50

ind = seq(burnin,N,thinning)

mu1p =   samp$batch[ , 1][ind]

mu2p =   samp$batch[ , 2][ind]


# Visual tool

points = no/ni
# Predictive dose-response curve
DRL <- function(d) return(mean(plogis(mu1p+mu2p*d)))
DRLV = Vectorize(DRL)

v <- seq(1.55,2,length.out=55)
FL = DRLV(v)

plot(v,FL,type="l",xlab="dose",ylab="response")
points(dose,points,lwd=2)
Cerberis
la source
Je ne suis pas un gars R, pouvez-vous fournir l'intrigue / sortie?
Cam.Davidson.Pilon
@ Cam.Davidson.Pilon Je suis désolé, ma réputation ne me permet pas d'inclure des parcelles. Mais l'idée est de tracer toute la courbe dose-réponse ainsi que les proportions observées.
Cerberis
J'ai ajouté la photo. Vous supposez une structure différente pour les données dans laquelle les PO ne s'étendent pas directement à votre exemple. Les données du PO seraient comme si votre ni = 23et no = 7et chacun des 23 individus avaient un différent dose. Vous pouvez cependant faire un tracé similaire pour les données de l'OP (les points sont placés à 0 ou 1 sur l'axe Y et vous tracez la fonction). Voir quelques exemples de graphiques similaires pour la régression logistique dans les références que je donne sur cette réponse .
Andy W
@AndyW Merci pour cela et pour la clarification également.
Cerberis
@AndyW ah les articles que vous liez sont très utiles! Je vais devoir les examiner de plus près pour voir si je peux les appliquer.
Cam.Davidson.Pilon
3

Je réponds à une demande de techniques graphiques alternatives qui montrent à quel point les événements de défaillance simulés correspondent aux événements de défaillance observés. La question posée dans "Programmation probabiliste et méthodes bayésiennes pour les pirates" a trouvé ici . Voici mon approche graphique:

Défaillances du joint torique simulées et observées

Code trouvé ici .

user35216
la source
Intéressant - pouvez-vous présenter des arguments sur les raisons d'utiliser cette technique? Merci d'avoir partagé!
Cam.Davidson.Pilon
Il s'agit d'un résultat probabiliste et non déterministe. Par conséquent, j'ai cherché une représentation qui transmettait plusieurs choses: 1) la gamme des événements observés et prévus; 2: la distribution de probabilité des défaillances prévues; 3) la distribution de probabilité des non-défaillances prévues; et 4) les plages où la défaillance est plus probable, la non-défaillance est plus probable et les plages où les probabilités de défaillance et de non-défaillance se chevauchent. Ce graphique montre tout cela à mes yeux.
user35216
Quelques ajouts / clarifications supplémentaires: 1) la plage de température des événements observés et prévus; 5)
Échecs