STOCKHOLMS UNIVERSITET 2 mars 2006 Matematiska institutionen Avd. för matematisk statistik Mikael Andersson Laboration 3: Hierarkiska binomialmodeller i R Även i denna laboration skall ni jobba med hierarkiska modeller, fast med binomialfördelade observationer i stället för normalfördelade som i Laboration 2. Dessutom skall ni använda två olika (men snarlika) modeller och göra en jämförelse mellan dem.. Mycket av tankegångarna från Laboration 2 kommer igen här, men det blir förstås andra uttryck för stickprovs-, à priori- och hoppfördelningar. Teoretisk bakgrund Detta avsnitt bygger på avsnitt 5.3 i kursboken. Låt oss anta att vi har betingat oberoende och binomialfördelade observationer givet parametern θ från J olika grupper enligt y j θ j Bin(n j, θ j ) j =, 2,..., J Vi antar vidare att parametrarna θ, θ 2,..., θ J också är betingat oberoende givet hyperparametrarna α och β och följer en betafördelning enligt θ j α, β Beta(α, β) j =, 2,..., J Slutligen ansätter vi den icke-informativa à priorifördelningen p(α, β) (α + β) 5/2 Enligt Bayes formel kan nu à posteriorifördelningen skrivas J p(θ, α, β y) p(α, β)p(θ α, β)p(y θ) p(α, β) p(θ j α, β)p(y j θ j ) j=
(α + β) 5/2 (α + β) 5/2 J Γ(α + β) j= Γ(α)Γ(β) θα j ( θ j ) β θ y j j ( θ j ) n j y j ( ) J Γ(α + β) J θ α+y j j ( θ j ) β+n j y j Γ(α)Γ(β) j= Vid numerisk beräkning av à posteriorifördelningen kan funktionen prod i R, som ger produkten av en vektor, vara användbar. 2 Metropolis-Hastingsalgoritm för den hierarkiska binomialmodellen Vi går även i den här laborationen direkt på konstruktionen av en funktion i R som simulerar en Markovkedja med à posteriorifördelningen ovan som stationär fördelning. Tankegången är liknande den i Laboration 2, nämligen att vi skall simulera nya värden för samtliga parametrar θ, θ 2,..., θ J en i taget. Däremot visar det sig olämpligt att simulera hyperparametrarna α och β var för sig eftersom deras sammanlagda fördelning är starkt osymmetrisk. Vi kommer till det senare. Börja som vanligt med att starta en textredigerare och skriv in MHalg3 <- function(m,n,y,theta0,alfa0,beta0,d,d2,d3){ Precis som i Laboration 2 kommer m att representera antal simulerade steg i kedjan, medan n är en vektor bestående av totalantalen n, n 2,..., n J i de olika grupperna. De simulerade värdena θ t j kommer att lagras i den m J-dimensionella matrisen theta på precis samma sätt som i Laboration 2, medan α t och β t lagras i vektorerna alfa och beta. Börja som tidigare med att skapa de tomma vektorerna theta <- array(dim=c(m+,j)) alfa <- c() beta <- c() och låta de första värdena för parametrarna vara lika med startvärdena enligt theta[,] <- theta0 alfa[] <- alfa0 beta[] <- beta0 och bestäm antal grupper med J <- length(y) Själva uppdateringarna av parametervärdena kommer nu att följa nästan exakt samma struktur som i Laboration 2 utom att uttrycken för acceptanskvoten r kommer att bli annorlunda, på grund av att vi använder oss av en annorlunda à posteriorifördelning, och 2
andra hoppfördelningar, på grund av att parametrarna har andra egenskaper. Vi kan därför använda oss av en stor for-sats för att hålla reda på stegen i kedjan och en mindre for-sats för de komponentvisa uppdateringarna av θ j -parametrarna. I den mindre for-satsen kan vi använda den temporära vektorn thetat på precis samma sätt som förut. När det gäller hoppfördelningen för varje θ j så skall vi däremot konstruera den på ett nytt sätt. Eftersom alla θ j ligger mellan 0 och så är det olämpligt att använda en likformig eller normalfördelad hoppfördelning direkt utan vi skall utgå från logoddset θ j φ j = log θ j i stället, som ju är obegränsat både nedåt och uppåt. Uppdateringen θj därför att följa mönstret a. Beräkna φ t j b. Simulera φ = φ t + Y. = log(θj t /( θj t )). c. Beräkna θ j = exp(φ j)/( + exp(φ j)). av θ t j kommer där Y är ett normalfördelat slumptal med väntevärde 0 och standardavvikelse d. Detta leder också till att hoppfördelningen för θ j blir asymmetrisk enligt j ) J t (θj θj t ) = J t (φ j φ t Med andra ord kan acceptanskvoten skrivas dφ j dθ j = J t(φ j φ t j ) θj ( θj ) r = p( θ, α t, β t y)θ j ( θ j ) p( θ t, α t, β t y)θj t ( θj t ) där θ t motsvarar den temporära vektorn thetat och θ den temporära vektorn med j:te komponenten utbytt mot kandidatvärdet θ j. Vid konstruktion av hoppfördelningar för hyperparametrarna α och β visar det sig vara bättre att betrakta parametriseringen η = log(α) log(β) γ = log(α + β) i stället. Vi skall inte fördjupa oss här i varför just denna parametrisering fungerar. Intresserade hänvisas till avsnitt 5.3 i boken. Vi skall nu generera nya kandidatvärden för α och β samtidigt enligt följande steg: a. Beräkna η t = log(α t ) log(β t ). b. Beräkna γ t = log(α t + β t ). 3
c. Simulera η = η t + Z. d. Simulera γ = γ t + V. e. Beräkna α = e η +γ /(e η + ). f. Beräkna β = e γ /(e η + ). där Z är ett normalfördelat slumptal med väntevärde 0 och standardavvikelse d 2 och V ett normalfördelat slumptal med väntevärde 0 och standardavvikelse d 3. Vi får nu följande samband mellan hoppfördelningarna i de två parametriseringarna enligt η η J t (α, β α t, β t ) = J t (η, γ η t, γ t α β ) γ γ α β = J t (η, γ η t, γ t α ) β (α + β) (α + β) Detta innebär att acceptanskvoten kan skrivas r = = J t (η, γ η t, γ t )α β p(θ t, α, β y)α β p(θ t, α t, β t y)α t β t När det gäller beräkning av denna acceptanskvot kan man tyvärr få en del numeriska problem, vilket beror på gammafunktionen Γ. För stora värden på α och β så kommer dessa termer, i värsta fall, att överskrida datorns kapacitet att hantera stora tal. För heltal gäller att Γ(k) = (k )! vilket exempelvis innebär att Γ(00) 0 56. Nu är visserligen R ganska duktig på att hantera stora tal, men det finns en gräns som ligger runt 0 300. Detta motsvarar ett argument runt 70, vilket inte är ett orimligt värde för hyperparametrarna α och β. Lösningen på dilemmat är funktionen lgamma i R som ger den naturliga logaritmen av gammafunktionen, det vill säga log(γ(x)). För att få exempelvis kvoten måste man i R skriva Γ(α t ) Γ(α ) exp(lgamma(alfa[t])-lgamma(alfa_star)) om man har lagrat det simulerade värdet α i variabeln alfa star. Sedan kan man hantera motsvarande kvoter av gammafördelningar som dyker upp på liknande sätt. Glöm inte att acceptera både α och β samtidigt om kvoten r understiger det likformiga slumptalet. 4
3 Dataanalys I november 995 gjordes en stor undersökning av tonåringars attityder till vissa typiska normbrott såsom skolk, snatteri, fusk på prov och alkoholkonsumtion. Studien gjordes på samtliga elever i åttonde klass i Örebro kommun, som fick fylla i en enkät under en lektionstimme. Bland annat ställdes frågan om man hade druckit sig berusad någon gång. Antalet elever som svarade ja på den frågan tillsammans med totala antalet elever uppdelat på skolor och kön blev följande: Pojkar Flickor Skola Ja Totalt Ja Totalt 20 52 4 6 2 3 4 25 3 0 53 2 46 4 4 54 9 55 5 5 4 3 49 6 9 40 34 7 7 36 9 32 8 23 47 8 55 9 2 53 2 64 0 5 6 23 49 4 28 6 28 2 8 9 2 25 3 38 6 24 Eftersom olika skolor har olika upptagningsområden, där de socio-ekonomiska förutsättningarna kan skilja sig åt, kan det vara rimligt att ansätta en hierarkisk modell för dessa data. Exempelvis kan man tänka sig att vissa skolor ligger i områden som domineras av hyreslägenheter medan andra skolor ligger i mer utpräglade villaområden och att elever från dessa områden kan ha olika attityder till alkoholkonsumtion. Dessutom har vi ingen information om detta, varför det är rimligt att betrakta sannolikheterna för berusning i olika skolor som stokastiska. Som ett första steg skall ni nu analysera data separat för pojkar och flickor. Mata alltså först in data för pojkarna i vektorerna y p och n p och simulera parametervärden med hjälp av MHalg3. Inte heller här behöver ni beräkna skalreduktion eller effektivt antal simuleringar för att hitta optimala hopplängder. Det visar sig att d = 0.7 och d 2 = d 3 = 0.25 ger effektiva algoritmer. Simulera kedjan ett stort antal steg, kasta bort första hälften och lagra resultaten i variablerna theta p, alfa p och beta p. Upprepa simuleringen för flickornas data i vektorerna y f och n f och lagra resultaten i variablerna theta f, alfa f och beta f. (I den här analysen har vi ganska många parametrar, vilket kan göra simuleringen långsam.) 5
Sammanfatta resultaten genom att beräkna medelvärden och sannolikhetsintervall för parametrarna. Hyperparametrarna α och β är inte så intuitiva så där kan det vara mer illustrativt att studera väntevärde och standardavvikelse för θ j, det vill säga µ = E[θ j ] = α α + β σ = Var[θ j ] = αβ (α + β) 2 (α + β + ) En hypotes som forskarna som gjorde undersökningen ville testa är om det finns någon skillnad mellan pojkar och flickor avseende alkoholkonsumtion. Om det inte finns någon skillnad är det heller ingen mening med att dela upp data i pojkar och flickor. Det innebär, under denna hypotes, att vi kan låta y j vara totala antalet elever som någon gång har druckit sig berusad och n j totala antalet elever i skola j och göra om analysen på dessa data. I R är det enkelt att addera vektorer enligt > y_t <- y_p+t_f > n_t <- n_p+n_f Lagra sedan dessa resultat i variablerna theta t, alfa t och beta t och sammanfatta dem på samma sätt som ovan. 4 Modellval För att avgöra vilken av dessa modeller som beskriver data bäst skall vi använda oss av deviance-måttet D(y, θ) = 2 log p(y θ) I det här fallet kan vi ju skriva stickprovsfördelningen vilket ger p(y θ) J j= θ y j j ( θ j ) n j y j J D(y, θ) = 2 (y j log(θ j ) + (n j y j ) log( θ j )) j= (Egentligen är detta inte exakt deviance på grund av att vi bortser från binomialtermen i uttrycket ovan, men eftersom vi enbart är intresserade av att jämföra deviance för olika modeller spelar detta ingen roll.) Enligt avsnitt 6.7 i boken är både den minimala deviance och den genomsnittliga deviance Dˆθ(y) = D(y, ˆθ) D avg (y) = E[D(y, θ) y] intressanta. För analysen ovan på enbart pojkar kan Dˆθ(y) beräknas i R enligt 6
> Dt_p <- -2*sum(y_p*log(mean(theta_p))+(n_p-y_p)*log(-mean(theta_p))) För att få D avg (y) måste vi först beräkna D(y, θ t ) för varje steg i simuleringen, exempelvis genom en for-sats enligt > for(t in :N){ D[t] <- -2*sum(y_p*log(theta_p[t,])+(n_p-y_p)*log(-theta_p[t,]))} > Da_p <- mean(d) där N står för antalet steg i simuleringen som ni har sparat. Byt sedan ut y p, n p och theta p mot motsvarande vektorer för flickor och beräkna på samma sätt Dt f och Da f. Totala deviance för hela modellen får vi genom att summera > Dt <- Dt_p+Dt_f > Da <- Da_p+Da_f Beräkning av motsvarande kvantiteter för andra modellen (Dt2 p, Dt2 f, Dt2 och så vidare) görs på exakt samma sätt utom att både theta p och theta f byts ut mot theta t. (OBS! Behåll y p, n p, y f och n f.) Beräkna även effektivt antal parametrar p () D och DIC (Deviance Information Criterion) för båda modellerna. 4. Redovisning = D avg (y) Dˆθ(y) DIC = 2 D avg (y) Dˆθ(y) Laborationen skall redovisas skriftligt med en utskrift av filen MHalg3.m, medelvärden och 95 %-iga sannolikhetsintervall, beräkningar av olika deviancemått samt slutsatser av analyserna inklusive val av modell. Det går även bra att skicka redovisningen via e-post till mikaela@math.su.se i pdf- eller postscript-format. 7