Hva er empirisk kumulativ fordeling fungerer, og hva kan vi gjøre med dem? For å svare på det første spørsmålet, la oss først ta et skritt tilbake og sørge for at vi forstår «distribusjoner», eller mer spesifikt, «sannsynlighetsfordelinger».

En Grunnleggende sannsynlighetsfordeling

Tenk deg en enkel hendelse, sier flipping en mynt, 3 ganger., Her er alle mulige utfall, der H = hode og T = haler:

  • HHH
  • HHT
  • HTH
  • THH
  • HTT
  • TTH
  • THT
  • TTT

Nå forestille H = «suksess»., Våre resultater kan bli endret som følger:

  • HHH (3 suksesser)
  • HHT (2 suksesser)
  • HTH (2 suksesser)
  • THH (2 suksesser)
  • HTT (1 suksess)
  • TTH (1 suksess)
  • THT (1 suksess)
  • TTT (0 suksesser)

Siden det er 8 mulige utfall, sannsynligheten for 0, 1, 2, og 3 suksesser er

  • 0 suksesser: 1/8
  • 1 suksesser: 3/8
  • 2 suksesser: 3/8
  • 3 suksesser: 1/8

Hvis vi summen disse sannsynlighetene får vi 1. Og dette representerer den «sannsynlighetsfordeling» for vårt arrangement., Formelt dette arrangementet følger en Binominal distribusjon fordi hendelsene er uavhengige, det er et fast antall forsøk (3), sannsynligheten er den samme for hver flip (0.5), og våre resultat er antall «suksesser» i antall forsøk. Faktisk er det vi nettopp har demonstrert er en binomial fordeling med 3 forsøk og sannsynlighet lik 0,5. Dette er noen ganger forkortet til b(3,0.5)., Vi kan raskt generere sannsynlighetene i R med dbinom funksjoner:

dbinom(0:3, size = 3, prob = 0.5)## 0.125 0.375 0.375 0.125

Vi kan raskt visualisere dette sannsynlighetsfordeling med barplot funksjon:

barplot(dbinom(x = 0:3, size = 3, prob = 0.5), names.arg = 0:3)

funksjonen brukes til å generere disse sannsynlighetene er ofte referert til som «tetthet» – funksjon, derav «d» foran binom., Utdelinger som genererer sannsynligheter for diskrete verdier, slik som den binomiske i dette eksemplet, er noen ganger kalt «sannsynlighet masse funksjoner» eller PMFs. Utdelinger som genererer sannsynligheter for kontinuerlige verdier, slik som det Normale, blir noen ganger kalt «probability density funksjoner», eller Pdf-filer. Men i R, uavhengig av PMF-eller PDF-funksjonen som genererer sannsynligheter er kjent som «tetthet» – funksjonen.

Kumulativ Fordeling Funksjon

la oss Nå snakke om «kumulative» sannsynligheter., Dette er sannsynligheter som hoper seg opp som vi beveger oss fra venstre mot høyre langs x-aksen i vår sannsynlighetsfordeling., Ser vi på fordelingen over tomten som ville være

  • \(P(X\le0)\)
  • \(P(X\le1)\)
  • \(P(X\le2)\)
  • \(P(X\le3)\)

Vi kan raskt regne ut disse:

  • \(P(X\le0) = \frac{1}{8}\)
  • \(P(X\le1) = \frac{1}{8} + \frac{3}{8} = \frac{1}{2}\)
  • \(P(X\le2) = \frac{1}{8} + \frac{3}{8} + \frac{3}{8} = \frac{7}{8}\)
  • \(P(X\le3) = \frac{1}{8} + \frac{3}{8} + \frac{3}{8} + \frac{1}{8} = 1\)

fordelingen av disse sannsynlighetene er kjent som den kumulative fordelingen., Igjen er det en funksjon i R som genererer disse sannsynlighetene for oss. I stedet for en «d» foran «binom» vi legge til en «p».

pbinom(0:3, size = 3, prob = 0.5)## 0.125 0.500 0.875 1.000

Denne funksjonen er ofte bare referert til som «distribusjon funksjon», som kan være forvirrende når du prøver å få hodet rundt sannsynlighetsfordelinger generelt. Plotting denne funksjonen tar litt mer arbeid. Vi vil demonstrere en enklere måte å gjøre dette plottet kort tid, så vi presentere følgende kode uten kommentar.,

Denne tomten er noen ganger kalt en trinn tomten. Så snart du treffer et punkt på x-aksen, du «trinn» opp til neste sannsynlighet. Sannsynligheten for 0 eller mindre er 0.125. Derav rett linje fra 0 til 1. 1 vi går opp til 0,5, fordi sannsynligheten for 1 eller mindre hvis 0.5. Og så videre. På 3, vi har en prikk på 1. Sannsynligheten av 3 eller færre er sikkerhet. Vi er garantert å få 3 eller færre suksesser i vår binominal distribusjon.

la oss Nå vise hva vi gjorde ovenfor med en kontinuerlig fordeling., For å holde det relativt enkelt vil vi bruke standard normalfordeling, som har et gjennomsnitt på 0 og et standardavvik på 1. I motsetning til våre mynt flipping eksemplet ovenfor som kan forstås nettopp med en binominal distribusjon, det er ingen «off-the-hylle» eksempel fra det virkelige liv, som kart perfekt til en standard normalfordeling. Derfor er vi nødt til å bruke vår fantasi.

La oss først trekke distribusjon av curve funksjon. Det første argumentet, dnorm(x), er i utgangspunktet den matematiske formelen som trekker linjen., Legg merke til «d» foran «norm»; dette er «tetthet» – funksjonen. Standardverdiene for dnorm funksjon er middelverdi = 0 og standardavvik = 1. from og to argumenter si trekke denne kurven ved hjelp av verdier av x-alt fra -3 til 3.

curve(dnorm(x), from = -3, to = 3)

kurven er en jevn linje, noe som betyr at det er en sannsynlighetsfordeling for alle reelle tall. Området under kurven er 1 fordi det er en sannsynlighetsfordeling.,

Tenk deg nå i denne fordelingen og tegne et nummer. Hva er sannsynligheten for å få 1.134523768923? Det er i hovedsak 0. Hvorfor? Fordi det er \(\frac{1}{\infty}\) sjanse for å velge det. Hvorfor er \(\infty\) i nevneren? Fordi det er et uendelig antall muligheter. Hvis det virker forvirrende, bare tenk deg zoome inn på x-aksen med finere og finere oppløsning, med desimaler som strekker seg mot horisonten. Dette betyr at y-aksen verdiene ikke representerer sannsynligheten men heller «tetthet»., Tettheten er egentlig sannsynligheten for at et lite utvalg av verdiene dividert på dette området. Hvis det også, synes forvirrende, det er OK. Bare husk at vi ikke bruker normalfordelinger (eller enhver kontinuerlig fordeling) for å få eksakte sannsynligheter. Vi bruker dem til å få sannsynlighetene for en rekke verdier.

For eksempel, hva er sannsynligheten for at x er mindre enn eller lik -1? For dette kan vi bruke pnorm funksjon, som er den kumulative fordelingen funksjon for normal distribusjon.,

pnorm(-1)## 0.1586553

mosaikk-pakken inneholder hendig plotDist funksjon for raskt å visualisere denne sannsynligheten. Ved å plassere mosaic:: før den funksjonen vi kan kalle den funksjonen uten å legge inn i mosaic pakken. groups argumentet sier opprette to områder: en for mindre enn -1, og en annen for større enn -1. type='h' argumentet sier tegne en «histogram-som» tomt. De to fargene er for de respektive regionene. Åpenbart «norm» betyr tegne en normal fordeling., Igjen er standard bety 0 og standardavvik 1.

# install.packages('mosaic')mosaic::plotDist('norm', groups = x < -1, type='h', col = c('grey', 'lightblue')) 

Denne tomten faktisk viser kumulativ sannsynlighet. Den blå regionen er lik 0.1586553, sannsynligheten trekker vi en verdi på -1 eller mindre fra denne fordelingen. Husker vi brukte den kumulative fordelingen funksjon for å få denne verdien. For å synliggjøre alle de kumulative sannsynligheter for standard normalfordeling, kan vi igjen bruke curve funksjon, men denne gangen med pnorm.,

curve(pnorm(x), from = -3, to = 3)

Hvis vi ser på -1 på x-aksen og gå rett opp til linjen, og deretter gå direkte til venstre til x-aksen, det skulle lande på 0.1586553. Vi kan legge dette til tomten ved hjelp av segments:

curve(pnorm(x), from = -3, to = 3)segments(x0 = -1, y0 = 0, x1 = -1, y1 = pnorm(-1), col = 'red')segments(x0 = -1, y0 = pnorm(-1), x1 = -3, y1 = pnorm(-1), col = 'blue') 

Igjen, dette er en jevn linje fordi vi arbeider med et uendelig antall av virkelige verdier.,

Empirisk Kumulativ Fordeling Funksjoner

Nå som vi er tydelig på kumulative distribusjoner, la oss utforske empiriske kumulative distribusjoner. «Empirisk» betyr at vi er opptatt med observasjoner heller enn teorien. Den kumulative distribusjoner vi utforsket ovenfor, var basert på teori. Vi brukte den binomiske og normal kumulative distribusjoner, henholdsvis, å beregne sannsynligheter og visualisere fordelingen. I det virkelige liv, men de data vi samler inn eller observere kommer ikke fra en teoretisk fordeling. Vi trenger å bruke dataene i seg selv til å lage en kumulativ fordeling.,

Vi kan gjøre dette i R med ecdf funksjon. ECDF står for «Empirisk Kumulativ Fordeling Funksjon». Merk det siste ordet: «Funksjon». ecdf – funksjonen returnerer en funksjon. Akkurat som pbinom og pnorm var den kumulative fordelingen funksjoner for våre teoretiske data, ecdf oppretter en kumulativ fordeling funksjon for våre observerte data. La oss prøve dette ut med rock datasettet som kommer med R.,

The rock datasettet inneholder målinger på 48 rock prøver fra et petroleum reservoar. Den inneholder 4 variabler: areal, peri, form, og perm. Vi vil arbeide med området variabel, som er det totale arealet av porer i hver prøve.

ecdf funksjoner fungerer på numerisk vektorer, som ofte kolonner av tall i en data-ramme. Nedenfor gir vi det området kolonne av rock data ramme.

ecdf(rock$area)## Empirical CDF ## Call: ecdf(rock$area)## x = 1016, 1468, 1651, ..., 11878, 12212

legg Merke til den utgang er ikke så nyttig. Det er fordi ecdf – funksjonen returnerer en funksjon., Vi må tilordne føre til et navn, slik at vi kan skape vår ECDF funksjon. La oss bruke Fn

Fn <- ecdf(rock$area)

Nå har du en tilpasset kumulativ fordeling funksjon du kan bruke med dine data. For eksempel kan vi lage en trinn-plott for å visualisere den kumulative fordelingen.

plot(Fn)

Ser på tomten kan vi se den estimerte sannsynligheten for at arealet av et eksempel er mindre enn eller lik 8000 er omtrent 0,6., Men vi trenger ikke å stole på øye-balling grafen. Vi har en funksjon! Vi kan bruke det til å få et mer nøyaktig estimat. Bare gi det et nummer i rekken av x-aksen, og den vil returnere kumulativ sannsynlighet.

# Prob area less than or equal to 8000Fn(8000)## 0.625

Vi kan bruke funksjonen med mer enn én verdi. Vi kan For eksempel få estimerte sannsynlighetene for at området er mindre enn eller lik 4000, 6000 og 8000.

Fn(c(4000, 6000, 8000))## 0.1250000 0.3333333 0.6250000

Det er også en summary metode for ECDF funksjoner., Det gir en oppsummering av de unike verdiene i observerte data. Merknad det er lik de tradisjonelle sammendrag metode for numerisk vektorer, men resultatet er litt annerledes, siden det er oppsummerer de unike verdiene i stedet for alle verdier.

til Slutt, hvis vi vil, vi kan legge et teoretisk kumulativ fordeling over ECDF. Dette kan hjelpe oss å vurdere om vi kan anta at våre data kan være modellert med en bestemt teoretisk fordeling. For eksempel, kan våre data være tenkt som har blitt samplet fra en normalfordeling?, Nedenfor har vi plottet step-funksjonen og deretter overlay en kumulativ normalfordeling med middelverdi og standardavvik av våre observerte data.

plot(ecdf(rock$area))curve(pnorm(x, mean(rock$area), sd(rock$area)), from = 0, to = 12000, add = TRUE, col='blue', lwd = 2) 

linjene ser ut til å overlapper hverandre ganske mye, noe som tyder dataene kan tilnærmes med en Normal fordeling. Vi kan også sammenligne estimater fra våre ECDF med en teoretisk CDF. Vi så at sannsynligheten for at området er mindre enn eller lik 8000 er om 0.625., Hvordan fungerer det i forhold til en Normal kumulativ fordeling med et gjennomsnitt og standardavvik av rock$area?

pnorm(8000, mean = mean(rock$area), sd = sd(rock$area))## 0.6189223

Det er ganske nær!

en Annen grafisk vurdering er Q-Q-plott, som kan også gjøres enkelt i R med qqnorm og qqline funksjoner. Tanken er at hvis punktene faller sammen diagonal linje så har vi god dokumentasjon på dataene som er plausibly normal., Igjen dette plottet viser at dataene ser ut som de kunne være godt rundet av med en Normal fordeling. (For mer om Q-Q-plott, se vår artikkel, Forståelse Q-Q-Plott).

qqnorm(rock$area)qqline(rock$area)

hvis du har spørsmål eller avklaringer i forbindelse med denne artikkelen, kan du kontakte UVA-Biblioteket StatLab: [email protected]

Se hele samlingen av UVA-Bibliotek StatLab artikler.

Leire Ford
Statistisk Forskning Konsulent
University of Virginia Bibliotek
9 juli, 2020