Jak wizualizować bayesowską dobroć do regresji logistycznej


10

Dla problemu bayesowskiej regresji logistycznej stworzyłem rozkład predykcyjny boczny. Próbuję z rozkładu predykcyjnego i otrzymuję tysiące próbek (0,1) dla każdej mojej obserwacji. Wizualizacja dobroci dopasowania jest mniej niż interesująca, na przykład:

wprowadź opis zdjęcia tutaj

Ten wykres pokazuje 10 000 próbek + zaobserwowany punkt odniesienia (sposób w lewo można dostrzec czerwoną linię: tak, to obserwacja). Problem polega na tym, że ten wykres nie ma charakteru informacyjnego i będę miał 23 z nich, po jednym dla każdego punktu danych.

Czy istnieje lepszy sposób na wizualizację 23 punktów danych oraz próbek z tyłu.


Kolejna próba:

wprowadź opis zdjęcia tutaj


Kolejna próba na podstawie artykułu tutaj

wprowadź opis zdjęcia tutaj


1
Zobacz tutaj przykład, w którym działa powyższa technika danych.
Cam.Davidson.Pilon

To dużo zmarnowanej przestrzeni IMO! Czy naprawdę masz tylko 3 wartości (poniżej 0,5, powyżej 0,5 i obserwacji) czy to tylko artefakt z podanego przez ciebie przykładu?
Andy W

W rzeczywistości jest gorzej: mam 8500 0 i 1500 1. Wykres po prostu wypycha te wartości, aby utworzyć połączony histogram. Ale zgadzam się: dużo zmarnowanej przestrzeni. Naprawdę, dla każdego punktu danych mogę go zmniejszyć do proporcji (ex 8500/10000) i obserwacji (albo 0 albo 1)
Cam.Davidson.Pilon

Masz więc 23 punkty danych i ile predyktorów? Czy twoja tylna predykcyjna dystrybucja dla nowych punktów danych lub dla 23, których użyłeś do dopasowania modelu?
probabilislogiczny

Twoja zaktualizowana fabuła jest zbliżona do tego, co zamierzałem zasugerować. Co jednak reprezentuje oś X? Wygląda na to, że masz nałożone pewne punkty - co przy zaledwie 23 wydaje się niepotrzebne.
Andy W

Odpowiedzi:


5

Mam wrażenie, że nie do końca oddajesz wszystkie towary swojej sytuacji, ale biorąc pod uwagę to, co mamy przed sobą, rozważmy użyteczność prostej kropki do wyświetlenia informacji.

Wykres kropkowy

Jedyną prawdziwą rzeczą, której nie ma tutaj (być może nie są to zachowania domyślne):

  • Wykorzystałem zbędne kodowanie, kształt i kolor, aby rozróżnić zaobserwowane wartości braku wad i wad. Przy tak prostych informacjach umieszczenie kropki na wykresie nie jest konieczne. Masz również problem, gdy punkt znajduje się w pobliżu środkowych wartości, potrzeba więcej spojrzeń w górę, aby zobaczyć, czy zaobserwowana wartość wynosi zero lub jeden.
  • Posortowałem grafikę według obserwowanych proporcji.

Sortowanie jest prawdziwym wyzwaniem dla takich wykresów punktowych. Sortowanie według wartości proporcji tutaj pomaga łatwo odkryć duże obserwacje resztkowe. Posiadanie systemu, w którym można łatwo sortować według wartości zawartych w wykresie lub w zewnętrznych cechach skrzynek, jest najlepszym sposobem na uzyskanie haju.

Ta rada obejmuje również ciągłe obserwacje. Możesz pokolorować / ukształtować punkty zgodnie z tym, czy reszta jest ujemna czy dodatnia, a następnie dopasować rozmiar punktu do absolutnej (lub kwadratowej) reszty. Nie jest to jednak IMO konieczne ze względu na prostotę obserwowanych wartości.


1
Podoba mi się to rozwiązanie i treść, czekam tylko na inne zgłoszenia. Dzięki, Andy.
Cam.Davidson.Pilon

1
@ Cam.Davidson.Pilon - Czekam też na inne zgłoszenia! Ponieważ twój model ma tylko jeden predyktor - sortowanie według przewidywanej proporcji defektów byłoby równoznaczne z sortowaniem według temperatury (zakładając efekt monotoniczny - jak pokazano na twoim wykresie). Być może ktoś przyjdzie z innym rozwiązaniem, które skutecznie pozwala zobaczyć zarówno przewidywaną proporcję, jak i pierwotną temperaturę (lub coś zupełnie innego). Ten ekran jest dobry do widzenia złych prognoz, ale nie jest bardzo dobry do rzeczy takich jak widzenie efektów nieliniowych.
Andy W

1
Z przyjemnością przyznam Ci nagrodę. Sortowanie jest kluczem do prezentacji, a ja będę używać papieru z poprzedniego postu. Dzięki!
Cam.Davidson.Pilon

4

Typowym sposobem wizualizacji dopasowania modelu regresji logistycznej Bayesa za pomocą jednego predyktora jest wykreślenie rozkładu predykcyjnego wraz z odpowiednimi proporcjami. (Daj mi znać, jeśli rozumiem twoje pytanie)

Przykład z wykorzystaniem popularnego zestawu danych Bliss.

wprowadź opis zdjęcia tutaj

Kod poniżej w 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)

Nie jestem facetem z R, czy możesz podać fabułę / wynik?
Cam.Davidson.Pilon

@ Cam.Davidson.Pilon Przykro mi, moja reputacja nie pozwala mi uwzględniać fabuły. Ale chodzi o wykreślenie całej krzywej dawka-odpowiedź wraz z zaobserwowanymi proporcjami.
Cerberis,

Dodałem zdjęcie. Zakładasz inną strukturę danych, w której OP nie obejmuje bezpośrednio twojego przykładu. Dane PO byłaby niczym jeśli ni = 23a no = 7i każda z 23 osób ma inną dose. Możesz zrobić podobny wykres dla danych PO (punkty są albo umieszczone na 0, albo na 1 na osi Y, a ty kreślisz funkcję). Zobacz przykłady podobnych wykresów regresji logistycznej w odnośnikach podanych w tej odpowiedzi .
Andy W

@AndyW Dziękuję za to i za wyjaśnienie.
Cerberis,

@AndyW ah dokumenty, które łączysz są bardzo przydatne! Będę musiał przyjrzeć się bliżej tym, aby sprawdzić, czy mogę je zastosować.
Cam.Davidson.Pilon

3

Odpowiadam na prośbę o alternatywne techniki graficzne, które pokazują, jak dobrze symulowane zdarzenia awarii odpowiadają obserwowanym zdarzeniom awarii. Powstało pytanie w „probabilistyczny Bayesa Metody Programowania i dla hakerów” znaleźć tutaj . Oto moje podejście graficzne:

Symulowane vs obserwowane uszkodzenia O-ringu

Kod znaleźć tutaj .


Ciekawe - czy możesz podać jakieś argumenty, dlaczego warto skorzystać z tej techniki? Dzięki za udostępnienie!
Cam.Davidson.Pilon

Jest to wynik probabilistyczny, a nie deterministyczny. Dlatego szukałem przedstawienia, które przekaże kilka rzeczy: 1) zakres zaobserwowanych i przewidywanych zdarzeń; 2: rozkład prawdopodobieństwa przewidywanych awarii; 3) rozkład prawdopodobieństwa przewidywanych awarii; oraz 4) zakresy, w których uszkodzenie jest bardziej prawdopodobne, brak awarii jest bardziej prawdopodobne, i zakresy, w których prawdopodobieństwo awarii i braku awarii nakładają się. Ten wykres pokazuje mi to wszystko.
user35216,

Kilka dodatkowych uzupełnień / wyjaśnień: 1) zakres temperatur obserwowanych i przewidywanych zdarzeń; 5) rzeczywiste zaobserwowane awarie i usterki
użytkownik35216,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.