Hur tolkar jag AIC

posted in: Articles | 0
. (Du kan rapportera problem om innehållet på den här sidan Här)Vill du dela ditt innehåll på r-bloggare? klicka här om du har en blogg, eller här om du inte gör det.

min student frågade idag hur man tolkar AIC (Akaikes Information
kriterier) statistik för modellval. Vi hamnade bashing ut några r
kod för att visa hur man beräknar AIC för en enkel GLM (allmänt
linjär modell). Jag tror alltid att om du kan förstå härledningen av en
statistik, är det mycket lättare att komma ihåg hur man använder den.,

Nu om du Google härledning av AIC, du kommer sannolikt att stöta på en
mycket matematik. Men principerna är egentligen inte så komplexa. Så här
vi kommer att passa några enkla GLMs, sedan härleda ett sätt att välja den ”bästa”
en.

Hoppa till slutet om du bara vill gå över de grundläggande principerna.

innan vi kan förstå AIC måste vi dock förstå
statistisk metod för likelihoods.,

förklara likelihoods

säg att du har några data som normalt distribueras med ett medelvärde av5
och ett sd av3:

set.seed(126)n <- 50 #sample sizea <- 5sdy <- 3y <- rnorm(n, mean = a, sd = sdy)hist(y)

nu vill vi uppskatta några parametrar för befolkningen som yvar
samplade från, som dess medelvärde och standard devaiation (som vi vet här
att vara 5 och 3, men i den verkliga världen vet du inte det).

Vi kommer att använda frequentiststatistik för att uppskatta dessa parametrar.,
filosofiskt betyder det att vi tror att det finns ”ett sant värde” för
varje parameter, och de data vi observerade genereras av detta sanna
– värde.

m1 <- glm(y ~ 1, family = "gaussian")sm1 <- summary(m1)

uppskattningen av medelvärdet lagras härcoef(m1) =4,38, den uppskattade
variansen härsm1$dispersion= 5,91, eller SDsqrt(sm1$dispersion)
=2,43. Bara för att vara helt klar, vi angav också att vi tror att
data följer en normal (AKA ”Gaussian”) distribution.,

vi passar bara en GLM ber R att uppskatta en intercept parameter (~1),
vilket är helt enkelt medelvärdet av y. Vi får också ut en uppskattning av SD
(=$\sqrt varians$) du kanske tror att det är overkill att använda en GLM till
uppskatta medelvärdet och SD, när vi bara kunde beräkna dem direkt.

väl observera nu att R också uppskattat några andra kvantiteter, som
Rest avvikelse och AIC statistik.

Du kanske också är medveten om att avvikelsen är ett mått på modellpassningen,
ungefär som summan av kvadraterna., Observera också att värdet på AIC är
misstänkt nära avvikelsen. Trots sitt udda namn är begreppen
som ligger till grund för avvikelsen ganska enkla.

som jag sa ovan observerar vi data som genereras från en
– befolkning med ett sant medelvärde och ett sant SD. Med tanke på att vi vet har
uppskattningar av dessa kvantiteter som definierar en sannolikhetsfördelning, kan vi
också uppskatta sannolikheten för att mäta ett nytt värde på yatt
säga = 7.,

för att göra detta kopplar vi helt enkelt de uppskattade värdena till ekvationen för
den normala fördelningen och ber om den relativa sannolikheten för 7. Vi
gör detta med r-funktionen dnorm

sdest <- sqrt(sm1$dispersion)dnorm(7, mean = coef(m1), sd = sdest)## 0.09196167

formellt är detta den relativa sannolikheten för värdet 7 med tanke på medelvärdet
och SD som vi uppskattade (=4.8 och 2.39
om du använder samma slumpmässiga frö som jag).,

Du kan fråga varför sannolikheten är större än 1, säkert, eftersom det kommer
från en sannolikhetsfördelning, bör det vara < 1. Tja, den normala
distributionen är kontinuerlig, vilket innebär att den beskriver en infinte uppsättning
möjligay värden, så sannolikheten för ett givet värde kommer att vara noll.
den relativa sannolikheten å andra sidan kan användas för att beräkna
sannolikheten för ett intervall av
värden.,

så att du kan inse att beräkningen av sannolikheten för alla data
skulle vara ett förnuftigt sätt att mäta hur väl vår ”modell” (bara ett medelvärde och
SD här) passar in i data.

Så här ser sannolikheten ut:

plot(y, dnorm(y, mean = coef(m1), sd = sdest), ylab = "Likelihood")

det är bara en normal distribution.

för att göra detta, tänk på hur du skulle beräkna sannolikheten för
flera (oberoende) händelser. Säg chansen att jag rider min cykel för att arbeta på
en viss dag är 3/5 och chansen det regnar är 161/365 (som
Vancouver!,), då chansen jag kommer att rida i regnet är 3/5 *
161/365 = ca 1/4, så jag bäst bära en kappa om ridning i Vancouver.

vi kan göra detsamma för likelihoods, helt enkelt multiplicera sannolikheten för
varje individ y värde och vi har den totala sannolikheten. Detta kommer att vara
ett mycket litet antal, eftersom vi multiplicera en hel del små tal av varje
andra., Så ett knep vi använder är att summera loggen för likelihoods istället
för att multiplicera dem:

y_lik <- dnorm(y, mean = coef(m1), sd = sdest, log = TRUE)sum(y_lik)## -114.8636

ju större (desto mindre negativ) sannolikheten för våra data med tanke på
– modellens uppskattningar, desto bättre passar modellen data. Avvikelsen är
beräknad från sannolikheten och för avvikelsen mindre värden
indikerar en närmare anpassning av modellen till data.

de parametervärden som ger oss det minsta värdet av
-log-sannolikheten kallas den maximala sannolikheten uppskattningar.,

jämföra alternativa hypoteser med likelihoods

nu säger vi att vi har mätningar och två kovariater, x1 och x2, antingen
som vi tror kan påverka y:

a <- 5b <- 3n <- 100x1 <- rnorm(n)x2 <- rnorm(n)sdy <- 1y <- a + b*x1 + rnorm(n, sd = sdy)par(mfrow = c(1,2))plot(x1, y)plot(x2, y)

så X1 är en orsak till Y, men X2 påverkar inte y. hur skulle vi välja
vilken hypotes är mest sannolikt?, Väl ett sätt skulle vara att jämföra modeller
med olika kombinationer av kovariater:

m1 <- glm(y ~ x1)m2 <- glm(y ~ x2)m3 <- glm(y ~ x1 + x2)

nu monterar vi en linje till y, så vår uppskattning av medelvärdet är nu
raden av bästa passform, det varierar med värdet av x1. För att visualisera detta:

plot(x1, y)lines(x1, predict(m1))

predict(m1) ger raden av bästa passform, dvs medelvärdet för y
givet varje x1-värde., Vi använder sedan predict för att få likelihoods för varje
Modell:

sannolikheten för m1är större änm2, vilket är meningsfullt eftersom
m2 har den ”falska” kovariaten i den. Sannolikheten för m3 (som har
både x1 och x2 i det) är fraktionellt större än sannolikheten m1,
så ska vi bedöma att modellen ger nästan lika bra en representation
av data?,

eftersom sannolikheten bara är lite större har tillägget av x2
bara förklarat en liten mängd av variansen i data. Men där
ritar du linjen mellan inklusive och exklusive x2? Du stöter på ett
liknande problem om du använder R^2 för modellval.

så vad händer om vi straffar sannolikheten med antalet paramaters vi
måste uppskatta för att passa modellen? Sedan om vi inkluderar fler kovariater
(och vi uppskattar mer lutning parametrar) endast de som står för en
mycket av variationen kommer att övervinna straffet.,

vad vi vill ha en statistik som hjälper oss att välja den mest parsimonious
– modellen.

AIC som ett mått på parsimony

ett sätt som vi kan straffa sannolikheten med antalet parametrar är
att lägga till ett belopp som är proportionellt mot antalet parametrar.
låt oss först multiplicera log-sannolikheten med -2, så att den är positiv
och mindre värden indikerar en närmare passform.

LLm1 <- sum(dnorm(y, mean = predict(m1), sd = sqrt(sm1$dispersion), log = TRUE))-2*LLm1## 251.2428

varför dess -2 inte -1, jag kan inte riktigt komma ihåg, men jag tror bara Historiska
skäl.,

lägg sedan till 2*k, där k är antalet uppskattade parametrar.

-2*LLm1 + 2*3## 257.2428

för m1 det finns tre parametrar, en avlyssning, en lutning och en
standardavvikelse. Låt oss nu beräkna AIC för alla tre modellerna:

Vi ser att model 1 har den lägsta AIC och har därför den mest
parsimonious passformen. Modell 1 överträffar nu modell 3 som hade en något
högre sannolikhet, men på grund av den extra covariate har en högre
straff också.,

AIC grundläggande principer

för att sammanfatta är de grundläggande principerna som styr användningen av AIC:

  1. lägre indikerar en mer parsimonious modell, i förhållande till en modell fit
    med en högre AIC.

  2. det är ett relativt mått på modellparsimoni, så det har bara
    mening om vi jämför AIC för alternativa hypoteser (=olika
    modeller av data).

  3. Vi kan jämföra icke-kapslade modeller. Till exempel kan vi jämföra en
    linjär till en icke-linjär modell.,

  4. jämförelserna gäller endast för modeller som är anpassade till samma svar
    data (dvs. värden för y).

  5. modellval som utförs med AIC kommer att välja samma modell som
    leave-one-out cross validation (där vi lämnar ut en datapunkt
    och passar modellen, sedan utvärdera dess passform till den punkten) för stora
    provstorlekar.

  6. Du bör inte jämföra för många modeller med AIC., Du kommer att köra
    i samma problem med flera modell jämförelse som du skulle
    med p-värden, genom att du kan av en slump hitta en modell med
    lägsta AIC, som inte är verkligen den mest lämpliga modellen.

  7. När du använder AIC kan du sluta med flera modeller som
    utför på samma sätt som varandra. Så du har liknande bevis
    vikter för olika alternativa hypoteser. I exemplet ovan m3
    är faktiskt ungefär lika bra som m1.

  8. Du bör korrigera för små provstorlekar om du använder AIC med
    små provstorlekar, med hjälp av AICC-statistiken.,

förutsatt att det regnar hela dagen, vilket är rimligt för Vancouver.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *