I sannsynlighetsprogrammering er det viktig å forstå hvordan man bygger en modell og hva hvert element i modellen representerer. I dette eksemplet ser vi på hvordan man kan bruke Stan til å lage en enkel modell basert på en normalfordeling, med en priors for parametrene og en likelihood-funksjon som er avhengig av dataene vi har.
Når vi lager en modell i Stan, bruker vi flere deler som kombineres for å skape en helhet. I første del ser vi på hvordan man kan definere priorene for modellens parametere, og deretter bygger vi likelihood-funksjonen som kobler modellen til de observerte dataene.
Modellen starter med å definere priorene for de ukjente parametrene, mu og sigma. For parameteren mu, som representerer gjennomsnittet, bruker vi en normalfordeling med en stor standardavvik (20) for å anta stor usikkerhet i forhold til verdien. For parameteren sigma, som representerer standardavviket, bruker vi en lognormalfordeling med en meanlog på 3 og en standardavvik på 1. Dette gir oss en antakelse om at sigma er positiv, samtidig som vi antar en viss variasjon i verdien.
Etter å ha definert priorene, spesifiserer vi likelihood-funksjonen. Likelihood-funksjonen kobler de ukjente parametrene til de observerte dataene. I dette tilfellet bruker vi en normalfordeling for å modellere dataene y, hvor mu er forventningen og sigma er standardavviket. Likelihood-funksjonen gir oss en måte å evaluere hvor godt de valgte parameterne forklarer de observerte dataene.
En viktig funksjon i Stan-modellen er den spesielle variabelen target, som brukes til å legge til nye bidrag til den unormerte log-posterioren. Dette er et viktig konsept i MCMC-sampling (Markov Chain Monte Carlo), som er metoden Stan bruker for å trekke prøver fra posterior-fordelingen. Hver gang vi legger til en term i target, bidrar vi med informasjon til sannsynligheten for de ukjente parameterne gitt de observerte dataene.
I koden kan vi også se et eksempel på hvordan man kan unngå å bruke en for-løkke ved å bruke vektoriserte funksjoner som er innebygd i Stan. Den vektoriserte versjonen av likelihood-funksjonen evaluerer log-likelihood for hele settet av data på én gang, noe som kan være mer effektivt enn å gjøre det for hvert datapunkt individuelt i en for-løkke.
Når vi har laget modellen, er det på tide å kjøre den med data. Dette kan gjøres i R ved å bruke funksjonen stan(), som kompilerer og kjører Stan-modellen. Dataene blir pakket i en liste, hvor y er de observerte verdiene og N er antallet datapunkter. Vi kan kjøre modellen med et standardantall kjeder og iterasjoner for å få en forståelse av hvordan parameterne blir estimert.
Når modellene er kjørt, er det viktig å sjekke hvordan kjedene har konvergert. En vanlig metode for å vurdere konvergensen er å bruke traceplots, som viser hvordan prøvene fra hver kjede har utviklet seg over tid. En god konvergens vil vises som et uregelmessig mønster, lik en "fet hårete larve" som beskrives i litteraturen. Hvis kjedene har god konvergens, betyr det at vi har fått et pålitelig estimat for parameterne.
Etter å ha kjørt modellen, kan vi hente ut oppsummerende statistikk for de estimerte parameterne. Dette kan inkludere gjennomsnitt, standardavvik, kvantiler og Monte Carlo-standardfeil. Det er også viktig å vurdere effektiv prøvestørrelse (n_eff) og Rhat-verdien for å evaluere kvaliteten på MCMC-samplingen. En høy n_eff og en Rhat nær 1 tyder på at kjedene har konvergert godt og at estimeringene er pålitelige.
Når vi har kjørt modellen og fått resultatene, kan vi visualisere posterior-fordelingene for parameterne ved hjelp av histogrammer og andre typer grafer. Dette gir en god oversikt over usikkerheten rundt estimatene og hjelper oss med å tolke resultatene på en forståelig måte.
I Stan kan vi også lagre og hente ut resultatene på forskjellige måter, avhengig av hva vi trenger videre. Vi kan bruke funksjoner som extract() for å hente ut parametrene, eller vi kan bruke verktøy som bayesplot for å lage mer detaljerte visualiseringer av resultatene.
Det er viktig å merke seg at selv om Stan er et kraftig verktøy for Bayesian-modellering, krever det en god forståelse av både statistikk og programmering. I tillegg er det viktig å være oppmerksom på modellens kompleksitet og å sjekke om resultatene gir meningsfulle og pålitelige estimater.
Etter å ha gått gjennom prosessen med å definere en modell, kjøre den med data, vurdere konvergens og analysere resultatene, har vi fått et godt grunnlag for å bruke Stan i praktiske applikasjoner. Dette kan utvides til mer komplekse modeller og brukes til å analysere en rekke forskjellige datatyper og problemstillinger.
Hvordan utlede CDF og dens inverse for en eksponensiell fordeling fra bunnen av
For å forstå hvordan man kan utlede den kumulative fordelingsfunksjonen (CDF) og dens inverse når de ikke er lett tilgjengelige, er det nødvendig å begynne med grunnleggende prinsipper. Vi tar her for oss den eksponensielle fordelingen, som ofte benyttes i ulike statistiske modeller og simuleringer. Den eksponensielle fordelingen har en kjent form for CDF, men vi kan også utlede den ved hjelp av en systematisk fremgangsmåte.
Den kumulative fordelingsfunksjonen (CDF) for en eksponensiell fordeling er gitt ved:
Her er et kvantile av fordelingen. For å løse dette integralet, bruker vi metoden for -substitusjon. Først definerer vi . Deretter er den deriverte av med hensyn til :
Dette betyr at , eller at . Ved å erstatte med i CDF-en, får vi:
Etter substitusjon for , forenkles CDF-en til:
Dermed har vi utledet CDF-en for den eksponensielle fordelingen:
hvor er et vilkårlig punkt, og er rateparameteren til fordelingen. Denne funksjonen gir oss sannsynligheten for å observere et kvantile eller en verdi mindre enn .
For å finne den inverse CDF-en, som er kvantilen som svarer til en gitt sannsynlighet, løser vi følgende likning:
Ved å løse for , får vi:
Denne formelen gir oss kvantilen for en gitt sannsynlighet . I praksis kan vi bruke denne inverse CDF-en til å generere tilfeldige variabler som følger en eksponensiell fordeling.
For å implementere dette i programmering kan vi skrive en funksjon i R som beregner denne inverse CDF-en, som vist her:
I Stan-modellen, som følger konvensjoner for Stan-syntaks, kan vi implementere den eksponensielle fordelingen ved å bruke en tilsvarende tilnærming. Her er et eksempel på hvordan en slik funksjon kan se ut i Stan:
Ved å bruke disse funksjonene kan vi generere data og tilpasse eksponensielle fordelinger i Stan, for eksempel ved å bruke følgende kode for å generere 1000 observasjoner:
Når dataene er generert, kan vi bruke Stan til å tilpasse modellen og estimere parametrene. For eksempel kan vi definere en modell i Stan som tar hensyn til eksponensielle fordelinger og bruker en normalfordelt prior for parameteren :
Når modellen er kjørt, kan vi sjekke resultatene av tilpasningen ved å se på de posteriori fordelingssummene og vurdere om de er i samsvar med de virkelige verdiene.
En viktig del av prosessen er å verifisere at implementeringen vår er korrekt. Dette kan gjøres ved å sammenligne den estimerte parameteren med dens sanne verdi, samt ved å bruke simuleringsbasert kalibrering for å validere resultatene. En rang-histogramanalyse kan også være nyttig for å sjekke om modellens prediksjoner er realistiske.
Å bygge egne sannsynlighetsfordelinger og tilhørende funksjoner er et kraftig verktøy i statistikk og bayesiansk modellering. Det gir oss fleksibilitet til å jobbe med distribusjoner som ikke nødvendigvis er tilgjengelige i standardbiblioteker, samtidig som vi får bedre kontroll over tilpasning og validitet i modellene våre.
Hvordan kan Bayes-faktorer brukes for modelltesting og hypotesetesting i kognitiv vitenskap?
Modell M0b, som også er innebygd i den fullstendige modellen, kan benyttes for å teste en annen nullhypotese enn M0a: er variasjonen mellom individer i det sentrerte cloze-effektet lik null? En annen tilnærming er å fjerne både populasjonsnivå- og gruppenivåeffekter (tilfeldige effekter) av det sentrerte cloze, noe som gir modellen n400 ~ 1 + (1 | subj) (modell M0c). Formelt kan dette uttrykkes som 𝑠𝑖𝑔𝑛𝑎𝑙𝑛 ∼ Normal(𝛼 + 𝑢𝑠𝑢𝑏𝑗[𝑛],1, 𝜎). Modell M0c er også nestet i den fullstendige modellen, men har nå to manglende parametere i stedet for én: 𝛽 og 𝑢𝑠𝑢𝑏𝑗[𝑛],1. Det anbefales vanligvis å sammenligne modeller ved å fjerne én parameter om gangen for å kunne identifisere hvilken parameter som påvirker avvisning eller aksept av nullhypotesen.
Bayesiansk dataanalyse gir viktige verktøy i kognitiv vitenskap ved å kvantifisere evidens for en modell fremfor en annen på en probabilistisk måte. Modeller representerer vitenskapelige hypoteser, og modell-sammenligning er derfor nært knyttet til hypotesetesting. Bayes-faktorer er sentrale i denne sammenhengen; de måler styrken på evidensen til fordel for én statistisk modell sammenlignet med en annen. Bruken av Bayes-faktorer innebærer noen nyanser som ofte overses: resultatene er svært sensitive til valg av priorfordelinger for modellparametrene. Disse priorene kan variere med eksperimentet eller forskerens subjektive vurderinger. Mange benytter standardpriorer som er uavhengige av den vitenskapelige problemstillingen, men dette kan føre til forenklede og misvisende tolkninger.
Det understrekes derfor at prinsipiell inferens krever en reflektert tilnærming som ikke blindt følger forhåndsinnstilte standarder. Likevel er bruken av slike standardpriorer utbredt i blant annet psykologi og psykolingvistikk, til tross for advarsler fra ledende eksperter. Priorfordelingene er avgjørende for hvilke modeller som sammenlignes, og må derfor defineres med stor omhu.
I hypotesetesting med Bayes-faktorer er marginal sannsynlighet (likelihood) sentral. Marginal sannsynlighet av dataene gitt modellen, 𝑝(𝑦 ∣ ℳ), beregnes ved å integrere over alle mulige parameterverdier, vektet med prior sannsynligheten til disse parameterne. Dette skiller seg fra tradisjonell frekventistisk statistikk som ofte kun vurderer maksimum likelihood uten å ta usikkerhet i parameterestimater med i betraktningen. Bayesiansk inferens modellerer derimot usikkerheten i parameterverdier eksplisitt og benytter dette i marginal sannsynlighet.
Imidlertid er beregning av marginal sannsynlighet ofte utfordrende da den innebærer integrasjon over ofte komplekse og høy-dimensjonale parameterrom. Dette gjør Bayes-faktorer sensitive for priorvalg og numeriske metoder brukt i beregningene.
Et viktig aspekt ved denne tilnærmingen er sammenhengen mellom marginal sannsynlighet og prior prediktiv distribusjon: mens prior prediktiv distribusjon handler om modellens forventninger før data er observert, evaluerer marginal sannsynlighet dataene som faktisk er observert. Dette muliggjør en mer realistisk vurdering av modellens forklaringskraft.
Bruk av Bayes-faktorer krever derfor både teknisk kompetanse i modellering og en grundig forståelse av hvordan valg av priorer og modeller påvirker resultatene. Det er også viktig å anvende robuste metoder for modellvalidering og kryssvalidering for å sikre at funn er generaliserbare og ikke bare tilpasset spesifikke datasett. Kritiske vurderinger rundt modellens prediktive evne på nye data er avgjørende for å unngå overtilpasning og sikre pålitelighet i vitenskapelige konklusjoner.
Hvordan velge den beste kommunikasjonskanalen for effektiv formidling
Hvordan tilpasse SHELL-modellen til moderne luftfartsutfordringer i den digitale tidsalderen?
Hvordan algoritmer for sosial distansering med termiske bilder kan beskytte folkehelsen
Hvordan kjemikere gir navn til molekylære strukturer: Eksempler på fuglebur og fenestrane
Hvordan Representere et Lineært System i Matriseform

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский