Pomóż mi zrozumieć wartości w Bayesian glm


13

Próbuję uruchomić Bayesa logit na dane tutaj . Używam bayesglm()w armpakiecie w R. Kodowanie jest dość proste:

df = read.csv("http://dl.dropbox.com/u/1791181/bayesglm.csv", header=T)
library(arm)
model = bayesglm(PASS ~ SEX + HIGH, family=binomial(link="logit"), data=df)

summary(model) daje następujący wynik:

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  0.10381    0.10240   1.014    0.311    
SEXMale      0.02408    0.09363   0.257    0.797    
HIGH        -0.27503    0.03562  -7.721 1.15e-14 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2658.2  on 1999  degrees of freedom
Residual deviance: 2594.3  on 2000  degrees of freedom
AIC: 2600.3

Przeprowadź mnie przez to. Rozumiem, że ten kod używa bardzo słabego wcześniejszego (ponieważ nie określam wcześniejszych środków), więc wynik będzie praktycznie taki sam, jeśli użyję glm()zamiast niego bayesglm(). Ale wynik powinien być nadal w duchu bayesowskim, prawda? Jakie są tutaj wartości i wartości ? Czy te częste narzędzia wnioskowania nie są częste? Czy są tutaj interpretowane inaczej?pz


To jest komentarz, a nie odpowiedź, ale to ma dla mnie sens. Otrzymujesz oszacowania, które prawdopodobnie są wartościami, dla których maksymalny rozkład tylnej części ciała jest maksymalny. Może być również możliwe, że są one tylko środkiem z tyłu? Warto sprawdzić, czy możesz. Ale bez względu na dokładne szczegóły, kiedy już masz jakieś szacunki, możesz je przetestować za pomocą zwykłego oszacowania / standardowego. Błąd -> procedura z-score, która działa, jeśli tył jest wystarczająco blisko normy (w normalnych warunkach utrzymuje się).
Erik

Erik ... Masz rację: współczynniki są rzeczywiście średnimi gęstościami bocznymi. Moje pytanie dotyczy wartości p i z. Co oni tu reprezentują?
user3671

Dobrze. Jeśli masz gęstość, która jest w przybliżeniu normalnie rozłożona, możesz sprawdzić, czy jej średnia wynosi zero, biorąc wynik z-score = średnia / odchylenie standardowe rozkładu i porównując ją ze standardowym rozkładem normalnym. Następnie patrzysz, jak mało prawdopodobne jest, aby Twoja wartość lub większa wartość znajdowała się w standardowym rozkładzie normalnym -> wartość p. Szczegółowe informacje można znaleźć w Z-score na Wikipedii.
Erik

No tak. Ale po co zawracać sobie głowę robieniem tego w otoczeniu bayesowskim? W wnioskowaniu bayesowskim oszacowanie punktowe jest moim najlepszym przypuszczeniem na temat parametru losowego, więc nie trzeba go testować. Co najwyżej mogę podać „wiarygodny przedział”, który jest równoważny z częstym „przedziałem ufności”, ale którego interpretacja statystyczna jest zupełnie inna. To myląca część dotycząca wyniku podsumowania (). Duch jest bayesowski, ale wynik jest częsty?
user3671

Jednym z punktów jest to, że oszacowanie, które otrzymasz, będzie inne, ponieważ wykorzystałeś wcześniej. I chociaż oszacowanie punktowe jest „najlepszym odgadnięciem”, jeśli chcesz pokazać w sposób bayesowski, że coś ma efekt, postaraj się pokazać, że wiarygodny przedział nie zawiera zera. Kiedy przybliżasz tylną wartość normalną z tą samą średnią i sd (asymptotycznie poprawną), wtedy przedział wiarygodności (1-p / 2) jest największym symetrycznym przedziałem wiarygodności zawierającym zero, więc twoja odpowiedź jest zasadniczo taka sama. P jest wartością p podaną powyżej.
Erik

Odpowiedzi:


16

Świetne pytanie! Chociaż istnieją p-bayesowskie wartości p , a jeden z autorów pakietu uzbrojenia jest zwolennikiem, to, co widzisz w swoich wynikach, nie jest p-bayesowską wartością p. Sprawdź klasęmodel

class(model)
"bayesglm" "glm"      "lm" 

i widać, że klasa bayesglm dziedziczy po glm. Ponadto badanie pakietu uzbrojenia nie wykazało żadnej konkretnej metody podsumowania dla obiektu bayesglm. Więc kiedy to zrobisz

summary(model)

faktycznie robisz

summary.glm(model)

i uzyskiwanie częstej interpretacji wyników. Jeśli chcesz uzyskać bardziej bayesowską perspektywę, funkcja uzbrojenia todisplay()


+1 Doskonała odpowiedź! Na tym polega problem z R, jest tak wielu wysoce inteligentnych statystyk, którzy piszą okropny kod, który pozostawia takie miny lądowe.
Bogdanovist

Wydaje się, że jest to celowy wybór ze strony projektantów, a nie przeoczenie.
atiretoo

Po przeczytaniu linku zgadzam się z intencją, ale w takim przypadku podsumowanie () powinno zostać ponownie zaimplementowane, aby po prostu wywołać display () zamiast dawać bezsensowne wyniki bez ostrzeżenia. Osoba, która zadała to pytanie, została potknięta przez kod, który złamał model użytkownika dla R, który został ustanowiony przez każdy inny obiekt, którego kiedykolwiek używał. To okropna praktyka programowania.
Bogdanovist

2
Wielkie dzięki, atiretoo. Rodzi to kolejne pytanie. Jaka jest różnica między display () a podsumowaniem ()? Wydaje mi się, że dane wyjściowe z pierwszego są tylko danymi wyjściowymi z drugiego, pomniejszone o dwie kolumny i zaokrąglone do 2 cyfr. Wygląda na to, że z postu Gelmana, który podałeś powyżej.
user3671

Tak, a z dyskusji na blogu Andrew Gelmana wygląda na to, że naprawią to w przyszłych wersjach pakietu uzbrojenia.
atiretoo
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.