min studerende spurgte i dag, hvordan man fortolker AIC (Akaikes Information
kriterier) statistik for modelvalg. Vi endte med at bashing ud nogle R
kode for at demonstrere, hvordan man beregner AIC for en simpel GLM (generel
lineær model). Jeg tror altid, at hvis du kan forstå udledningen af en
statistik, er det meget lettere at huske, hvordan man bruger den.,
nu, hvis du google afledning af AIC, vil du sandsynligvis løbe ind i en
masse matematik. Men principperne er virkelig ikke så komplekse. Så her
vi vil passe nogle enkle GLMs, derefter udlede et middel til at vælge den ‘bedste’
En.Spring til slutningen, hvis du bare vil gennemgå de grundlæggende principper.
før vi kan forstå AIC selv, vi nødt til at forstå den
statistiske metode sandsynligheder.,
Forklare sandsynligheder
Sige, at du har nogle data som er normalfordelte med en middelværdi på 5
og en sd 3
:
set.seed(126)n <- 50 #sample sizea <- 5sdy <- 3y <- rnorm(n, mean = a, sd = sdy)hist(y)
Nu, vi ønsker at vurdere nogle parametre for befolkningen, at y
var
samplet fra, som middelværdien og standard devaiation (som vi kender her
at være 5 og 3, men i den virkelige verden, du ikke vil vide det).
Vi vil bruge fre .uentist statistik til at estimere disse parametre.,
filosofisk betyder det, at vi mener, at der er ‘en sand værdi’ for
hver parameter, og de data, vi observerede, genereres af denne sande
værdi.
m1 <- glm(y ~ 1, family = "gaussian")sm1 <- summary(m1)
estimatet for middelværdien er gemt her coef(m1)
=4.38, den anslåede
varians her sm1$dispersion
= 5.91, eller SD – sqrt(sm1$dispersion)
=2.43. Bare for at være helt klar, specificerede vi også, at vi mener, at
– dataene følger en normal (AKA “Gaussisk”) distribution.,
Vi passer bare til en GLM, der beder R om at estimere en intercept-parameter (~1
),
hvilket simpelthen er gennemsnittet af y
. Vi får også et estimat af SD
(= $\s .rt variance$), du tror måske, at det er overkill at bruge en GLM til at estimere middelværdien og SD, når vi bare kunne beregne dem direkte.
Bemærk nu, at R også estimerede nogle andre mængder, som den resterende afvigelse og AIC-statistikken.
Du er måske også opmærksom på, at afvigelsen er et mål for modelpasning,
meget som summen af kvadrater., Bemærk også, at værdien af AIC er
mistænkeligt tæt på afvigelsen. På trods af sit ulige navn er begreberne
, der ligger til grund for afvigelsen, ganske enkle.
som jeg sagde ovenfor observerer vi data, der genereres fra en
– befolkning med et sandt middel og et sandt SD. Da vi ved, har
estimater af disse mængder, der definerer en sandsynlighedsfordeling, kunne vi
også estimere sandsynligheden for at måle en ny værdi på y
at
sige = 7.,
for at gøre dette sætter vi blot de estimerede værdier i ligningen for
den normale fordeling og beder om den relative sandsynlighed for 7
. Vi
gøre det med R-funktionen dnorm
sdest <- sqrt(sm1$dispersion)dnorm(7, mean = coef(m1), sd = sdest)## 0.09196167
Formelt, dette er den relative sandsynlighed for, at værdien 7 i betragtning af den
værdier af middelværdi og SD-at vi forventede (=4.8 og 2.39
der henholdsvis, hvis du bruger den samme random seed som mig).,
Du kan spørge, hvorfor sandsynligheden er større end 1, da den kommer
fra en sandsynlighedsfordeling, skal den være <1. Nå, den normale
distribution er kontinuerlig, hvilket betyder, at den beskriver et infinte sæt
muligty
værdier, så sandsynligheden for en given værdi vil være nul.
den relative sandsynlighed på den anden side kan bruges til at beregne
sandsynligheden for et interval på
værdier.,
så du kan indse, at beregning af sandsynligheden for alle data
ville være en fornuftig måde at måle, hvor godt vores ‘model’ (bare en gennemsnitlig og
SD her) passer til dataene.
Her er hvad sandsynligheden ser sådan ud:
plot(y, dnorm(y, mean = coef(m1), sd = sdest), ylab = "Likelihood")
Det er bare en normal fordeling.
for at gøre dette skal du tænke over, hvordan du beregner sandsynligheden for
flere (uafhængige) begivenheder. Sig, at chancen for at jeg cykler til at arbejde på
en given dag er 3/5, og chancen for, at det regner, er 161/365 (som
Vancouver!,), så er chancen for at jeg vil ride i regnen 3/5 *
161/365 = omkring 1/4, så jeg har bedst en frakke, hvis jeg kører i Vancouver.
Vi kan gøre det samme for sandsynligheder, blot multiplicere sandsynligheden for
hver enkelt y
værdi, og vi har den samlede sandsynlighed. Dette vil være
et meget lille antal, fordi vi multiplicerer mange små tal med hver
andet., Så et trick, vi bruger, er at opsummere loggen over sandsynlighederne i stedet
for at multiplicere dem:
y_lik <- dnorm(y, mean = coef(m1), sd = sdest, log = TRUE)sum(y_lik)## -114.8636
jo større (jo mindre negativ) sandsynligheden for vores data i betragtning af
– modellens estimater, desto bedre passer modellen til dataene. Afvigelsen er
beregnet ud fra sandsynligheden, og for afvigelsen indikerer mindre værdier
En tættere tilpasning af modellen til dataene.
parameterværdierne, der giver os den mindste værdi af
-log-sandsynligheden, betegnes som de maksimale sandsynlighedsestimater.,
Sammenligne alternative hypoteser med sandsynligheder
Nu siger, at vi har målinger og to kovariater, x1
og x2
, enten
som vi tror kan påvirke 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 er en årsag til y, men x2 ikke påvirke y. Hvordan ville vi vælge
som hypotese er mest sandsynligt?, En måde ville være at sammenligne modeller
med forskellige kombinationer af kovariater:
m1 <- glm(y ~ x1)m2 <- glm(y ~ x2)m3 <- glm(y ~ x1 + x2)
Nu er vi ved at montere en linje til y, så vores estimat af middelværdi er nu
linje, der passer bedst, varierer med værdien af x1. For at visualisere dette:
plot(x1, y)lines(x1, predict(m1))
predict(m1)
giver den linje, der passer bedst, dvs middelværdien af y
givet hver x1 værdi., Herefter bruger vi forudsige, at få sandsynligheder for hver
model:
sandsynligheden for m1
større end m2
, som giver mening, fordim2
har den ‘falske’ covariate i det. Sandsynligheden for m3
(hvor
både x1 og x2 i det), er en anelse større end sandsynligheden m1
så skal vi vurdere, at modellen som giver nær så god en repræsentation
af data?,
fordi sandsynligheden kun er en lille smule større, har tilføjelsen af x2
kun forklaret en lille mængde af variansen i dataene. Men hvor
tegner du linjen mellem inklusive og eksklusive22? Du løber ind i et
lignende problem, hvis du bruger R^2 til modelvalg.
så hvad nu hvis vi straffer sandsynligheden for antallet af paramatere, vi
skal estimere for at passe til modellen? Så hvis vi inkluderer flere kovariater
(og vi estimerer flere hældningsparametre), vil kun de, der tegner sig for et
parti af variationen, overvinde straffen.,
hvad vi ønsker en statistik, der hjælper os med at vælge den mest parsimonious
model.
AIC som et mål for parsimoni
en måde, vi kan straffe sandsynligheden for antallet af parametre er
For at tilføje et beløb til det, der er proportional med antallet af parametre.
Lad os først multiplicere log-sandsynligheden med -2, så den er positiv
og mindre værdier indikerer en tættere pasform.
LLm1 <- sum(dnorm(y, mean = predict(m1), sd = sqrt(sm1$dispersion), log = TRUE))-2*LLm1## 251.2428
hvorfor det er -2 ikke -1, jeg kan ikke helt huske, men jeg tror bare historiske
grunde.,
tilføj derefter 2*k, hvor k er antallet af estimerede parametre.
-2*LLm1 + 2*3## 257.2428
m1
der er tre parametre, man opfange, en skråning og har en
standard afvigelse. Lad os nu beregne AIC for alle tre modeller:
Vi ser, at model 1 har den laveste AIC og derfor har den mest
parsimonious pasform. Model 1 overgår nu model 3, som havde en lidt
højere sandsynlighed, men på grund af den ekstra kovariat har også en højere
straf.,
AIC grundlæggende principper
Så for at opsummere, er de grundlæggende principper, der styrer brugen af AIC er:
-
Lavere indikerer en mere påholdende model, i forhold til en model, der passer til
med en højere AIC. -
det er et relativt mål for modelparsimoni, så det har kun
betydning, hvis vi sammenligner AIC for alternative hypoteser (= forskellige
Modeller af dataene). -
Vi kan sammenligne ikke-indlejrede modeller. For eksempel kunne vi sammenligne en
lineær med en ikke-lineær model., -
sammenligningerne er kun gyldige for modeller, der passer til samme respons
data (dvs.værdier af y). -
modelvalg udført med AIC vælger den samme model som
leave-one-out cross Validering (hvor vi udelader et datapunkt
og passer til modellen og evaluerer derefter dens pasform til det punkt) for store
prøvestørrelser. -
Du bør ikke sammenligne for mange modeller med AIC., Du vil køre
ind i de samme problemer med flere model sammenligning som du ville
med p-værdier, idet du ved en tilfældighed kan finde en model med den
laveste AIC, det er ikke rigtig den mest passende model. -
Når du bruger AIC, kan du ende med flere modeller, som
udfører på samme måde som hinanden. Så du har lignende beviser
vægte for forskellige alternative hypoteser. I eksemplet ovenfor m3
er faktisk omtrent lige så god som m1. -
Du bør rette for små prøvestørrelser, hvis du bruger AIC med
små prøvestørrelser, ved at bruge AICC-statistikken.,
forudsat at det regner hele dagen, hvilket er rimeligt for Vancouver.
Skriv et svar