Hvad er empirisk kumulative fordeling af funktioner, og hvad kan vi så gøre med dem? For at besvare det første spørgsmål, lad os først gå tilbage og sørge for, at vi forstår “distributioner” eller mere specifikt “sandsynlighedsfordelinger”.

en grundlæggende sandsynlighedsfordeling

Forestil dig en simpel begivenhed, siger at vende en mønt 3 gange., Her er alle de mulige udfald, hvor H = hoved og T = haler:

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

forestil dig Nu, at H = “succes”., Vores resultater kan være ændret som følger:

  • HHH (3 succeser)
  • HHT (2 succeser)
  • HTH (2 succeser)
  • THH (2 succeser)
  • HTT (1 succes)
  • TTT (1 succes)
  • THT (1 succes)
  • TTT (0 succeser)

Da der er 8 mulige udfald, sandsynligheden for 0, 1, 2, og 3 succeser

  • 0 succeser: 1/8
  • 1 succeser: 3/8
  • 2-successer: 3/8
  • 3-successer: 1/8

Hvis vi summen af disse sandsynligheder, får vi 1. Og dette repræsenterer “sandsynlighedsfordelingen” for vores begivenhed., Formelt følger denne begivenhed en Binomial distribution, fordi begivenhederne er uafhængige, der er et fast antal forsøg (3), sandsynligheden er den samme for hver flip (0.5), og vores resultat er antallet af “succeser” i antallet af forsøg. Faktisk, hvad vi netop demonstreret er en binomial fordeling med 3 forsøg og sandsynlighed svarende til 0,5. Dette er undertiden forkortet som b (3,0, 5)., Vi kan hurtigt generere sandsynligheder i R ved brug af dbinom funktion:

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

Vi kan hurtigt visualisere denne sandsynlighedsfordeling med barplot funktion:

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

Den funktion, der anvendes til at generere disse sandsynligheder er ofte omtalt som “tæthed” funktion, derfor “d” foran binom., Distributioner, der genererer sandsynligheder for diskrete værdier, såsom binomial i dette eksempel, kaldes undertiden “sandsynlighedsmassefunktioner” eller pmfs. Distributioner, der genererer sandsynligheder for kontinuerlige værdier, såsom den normale, kaldes undertiden” sandsynlighedsdensitetsfunktioner ” eller PDF-filer. Men i R, uanset PMF eller PDF, er funktionen, der genererer sandsynlighederne, kendt som” density ” – funktionen.

kumulativ Distributionsfunktion

lad os nu tale om “kumulative” sandsynligheder., Dette er sandsynligheder, der akkumuleres, når vi bevæger os fra venstre mod højre langs x-aksen i vores sandsynlighedsfordeling., Ser man på fordelingen plot over, at der ville være

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

Vi hurtigt kan beregne 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 af disse sandsynligheder er kendt som den kumulative fordeling., Igen er der en funktion i R, der genererer disse sandsynligheder for os. I stedet for en” d “foran” binom “sætter vi en”p”.

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

Denne funktion er ofte bare omtales som “distribution function”, som kan være forvirrende, når du forsøger at få hovedet rundt sandsynlighedsfordelinger i almindelighed. Plotte denne funktion tager lidt mere arbejde. Vi demonstrerer en lettere måde at lave dette plot på kort tid, så vi præsenterer følgende kode uden kommentar.,

dette plot kaldes undertiden et trinplot. Så snart du rammer et punkt på axis-aksen, “træder du” op til den næste Sandsynlighed. Sandsynligheden for 0 eller mindre er 0,125. Derfor er den lige linje fra 0 til 1. Ved 1 træder vi op til 0,5, fordi sandsynligheden for 1 eller mindre hvis 0,5. Og så videre. På 3, Vi har en prik på 1. Sandsynligheden for 3 eller færre er sikkerhed. Vi er garanteret at få 3 eller færre succeser i vores binomial distribution.

lad os nu demonstrere, hvad vi gjorde ovenfor med en kontinuerlig distribution., For at holde det relativt enkelt bruger vi standard normalfordelingen, som har et gennemsnit på 0 og en standardafvigelse på 1. I modsætning til vores møntflipeksempel ovenfor, som kunne forstås præcist med en binomial distribution, er der ikke noget “off-the-shelf” – eksempel fra det virkelige liv, der kortlægger perfekt til en standard normal distribution. Derfor bliver vi nødt til at bruge vores fantasi.

lad os først tegne distributionen ved hjælp af funktionen curve. Det første argument, dnorm(x), er dybest set den matematiske formel, der trækker linjen., Bemærk “d “foran” norm”; dette er” density ” – funktionen. Standardindstillingerne for dnorm funktionen er middel = 0 og standardafvigelse = 1. from ogto argumenter siger tegn denne kurve ved hjælp af værdier af., der spænder fra -3 til 3.

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

Den kurve, der er en jævn linje, som betyder, at det er en sandsynlighedsfordeling for alle reelle tal. Området under kurven er 1, fordi det er en sandsynlighedsfordeling.,

Forestil dig at nå ind i denne distribution og tegne et tal. Hvad er sandsynligheden for at få 1.134523768923? Det er hovedsagelig 0. Hvorfor? Fordi der er \(\frac{1}{\infty}\) chance for at vælge det. Hvorfor er \(\infty\) i nævneren? Fordi der er et uendeligt antal muligheder. Hvis det virker forvirrende, kan du bare forestille dig at zoome ind i axis-aksen med finere og finere opløsning, med decimaler, der strækker sig til horisonten. Dette betyder, at Y-aksens værdier ikke repræsenterer sandsynlighed, men snarere “densitet”., Tætheden er i det væsentlige sandsynligheden for et lille interval af værdier divideret med dette interval. Hvis det også virker forvirrende, er det OK. Bare husk, at vi ikke bruger normale distributioner (eller nogen kontinuerlig distribution) for at få nøjagtige sandsynligheder. Vi bruger dem til at få sandsynligheder for en række værdier.

For eksempel, Hvad er sandsynligheden for, at?er mindre end eller lig med -1? Til dette kan vi bruge funktionen pnorm, som er den kumulative distributionsfunktion til den normale distribution.,

pnorm(-1)## 0.1586553

mosaik pakke indeholder praktisk plotDist funktion til hurtigt at visualisere denne sandsynlighed. Ved at placere mosaic:: før funktionen kan vi kalde funktionen uden at indlæse mosaik-pakke. Argumentet groups siger Opret to regioner: en for mindre end -1 og en anden for større end -1. Argumentet type='h' siger tegne et “histogram-lignende” plot. De to farver er til de respektive regioner. Naturligvis” norm ” betyder tegne en normal fordeling., Igen er standarden middelværdi 0 og standardafvigelse 1.

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

Dette plot faktisk viser kumulerede sandsynlighed. Den blå region er lig med 0.1586553, sandsynligheden vi tegner en værdi på -1 eller mindre fra denne fordeling. Recall vi brugte den kumulative distribution funktion til at få denne værdi. For at visualisere alle de kumulerede sandsynligheder for standard normalfordelingen, kan vi igen bruge curve funktion, men denne gang med pnorm.,

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

Hvis vi ser på -1 på x-aksen, og gå direkte op til den linje, og derefter gå direkte tilbage til x-aksen, det skulle lande på 0.1586553. Vi kan tilføje dette til plot ved hjælp af 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') 

dette er Igen en glat line, fordi vi har at gøre med et uendeligt antal af reelle værdier.,

empiriske kumulative distributionsfunktioner

nu hvor vi er klar over kumulative distributioner, lad os undersøge empiriske kumulative distributioner. “Empirisk” betyder, at vi er bekymrede over observationer snarere end teori. De kumulative distributioner, vi udforskede ovenfor, var baseret på teori. Vi brugte henholdsvis binomiale og normale kumulative distributioner til at beregne sandsynligheder og visualisere distributionen. I det virkelige liv kommer de data, vi indsamler eller observerer, imidlertid ikke fra en teoretisk distribution. Vi skal bruge selve dataene til at skabe en kumulativ distribution.,

Vi kan gøre dette i R med funktionen ecdf. ECDF står for”empirisk kumulativ Distributionsfunktion”. Bemærk det sidste ord:”funktion”. Funktionen ecdf returnerer en funktion. Lige som pbinom og pnorm var den kumulative fordeling funktioner for vores teoretiske data, ecdf opretter en kumulativ fordelingsfunktion for vores observerede data. Lad os prøve dette med rock datasættet, der følger med R.,klippedatasættet indeholder målinger på 48 stenprøver fra et oliereservoir. Den indeholder 4 variabler: område, peri, form og perm. Vi arbejder med områdevariablen, som er det samlede areal af porer i hver prøve.

ecdf funktioner fungerer på numeriske vektorer, som ofte er kolonner med tal i en dataramme. Nedenfor giver vi det områdekolonnen i rockdatarammen.

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

Bemærk, at output ikke er så nyttigt. Det skyldes, at ecdf – funktionen returnerer en funktion., Vi skal tildele resultatet til et navn, så vi kan oprette vores ECDF-funktion. Lad os bruge Fn

Fn <- ecdf(rock$area)

Nu har du en brugerdefineret kumulative fordelingsfunktion, du kan bruge med dine data. For eksempel kan vi oprette et trinplot for at visualisere den kumulative distribution.

plot(Fn)

Kigger på det plot vi kan se den forventede sandsynlighed for, at arealet af en stikprøve er lig med eller mindre end 8000 er omkring 0,6., Men vi behøver ikke at stole på øje-balling grafen. Vi har en funktion! Vi kan bruge det til at få et mere præcist skøn. Bare giv det et tal inden for range-aksens rækkevidde, og det vil returnere den kumulative sandsynlighed.

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

Vi kan bruge funktionen med mere end en værdi. For eksempel kan vi få estimerede sandsynligheder, at området er mindre end eller lig med 4000, 6000 og 8000.

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

Der er også en summary metode til ECDF funktioner., Den returnerer en oversigt over de unikke værdier af de observerede data. Bemærk, at det ligner den traditionelle resum methodmetode for numeriske vektorer, men resultatet er lidt anderledes, da det opsummerer de unikke værdier i stedet for alle værdier.

endelig, hvis vi vil, kan vi overlejre en teoretisk kumulativ fordeling over ECDF. Dette kan hjælpe os med at vurdere, om vi kan antage, at vores data kunne modelleres med en bestemt teoretisk distribution. Kan vores data for eksempel betragtes som samplet fra en Normal distribution?, Nedenfor afbilder vi trinfunktionen og overlejrer derefter en kumulativ normalfordeling ved hjælp af middel-og standardafvigelsen for vores observerede data.

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

De linjer, der synes at overlappe hinanden ganske lidt, tyder de data, der kunne approksimeres med en normalfordeling. Vi kan også sammenligne estimater fra vores ECDF med en teoretisk CDF. Vi så, at sandsynligheden for, at området er mindre end eller lig med 8000 er omkring 0,625., Hvordan kan det sammenlignes med en Normal kumulativ fordeling med en gennemsnitlig og standardafvigelse på rock$area?

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

det er ret tæt!

en anden grafisk vurdering er plot-plot-plottet, som også let kan udføres i R ved hjælp af qqnormog qqline funktioner. Ideen er, at hvis punkterne falder langs diagonallinjen, har vi gode beviser for, at dataene er plausibelt normale., Igen afslører dette plot, at dataene ser ud som om de kunne tilnærmes med en Normal fordeling. (For mere om plots-plots plots, se vores artikel, forståelse Q -. Plots).

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

hvis du har spørgsmål eller præciseringer vedrørende denne artikel, skal du kontakte UVA Bibliotek StatLab: [email protected]

Se hele samlingen af UVA-Bibliotek StatLab artikler.

Clay Ford
statistisk forskningskonsulent
University of Virginia Library
9. juli 2020