vad är empiriska kumulativa distributionsfunktioner och vad kan vi göra med dem? För att svara på den första frågan, låt oss först gå tillbaka och se till att vi förstår ”distributioner”, eller mer specifikt ”sannolikhetsfördelningar”.
en grundläggande sannolikhetsfördelning
Föreställ dig en enkel händelse, säg vända ett mynt 3 gånger., Här är alla möjliga resultat, där h = huvud och t = svansar:
- HHH
- HHT
- HTH
- THH
- HTT
- TTH
- THT
- TTT
föreställ dig nu H = ”framgång”., Våra resultat kan ändras på följande sätt:
- HHH (3 framgångar)
- HHT (2 framgångar)
- HTH (2 framgångar)
- THH (2 framgångar)
- HTT (1 framgång)
- tth (1 framgång)
- THT (1 framgång)
- TTT (0 framgångar)
eftersom det finns 8 möjliga resultat är sannolikheterna för 0, 1, 2 och 3 framgångar
- 0 framgångar: 1/8
- 1 framgångar: 3/8
- 2 framgångar: 3/8
- 3 framgångar: 1/8
om vi summerar dessa sannolikheter får vi 1. Och detta representerar ”sannolikhetsfördelningen” för vår händelse., Formellt följer denna händelse en binomialfördelning eftersom händelserna är oberoende, det finns ett fast antal försök (3), sannolikheten är densamma för varje flip (0.5), och vårt resultat är antalet ”framgångar” i antalet försök. Faktum är att det vi just visade är en binomialfördelning med 3 försök och sannolikhet lika med 0.5. Detta förkortas ibland som b (3,0.5)., Vi kan snabbt generera sannolikheterna i R med hjälp av dbinom
funktion:
dbinom(0:3, size = 3, prob = 0.5)## 0.125 0.375 0.375 0.125
Vi kan snabbt visualisera denna sannolikhetsfördelning med funktionen barplot
:
barplot(dbinom(x = 0:3, size = 3, prob = 0.5), names.arg = 0:3)
funktionen som används för att generera dessa sannolikheter kallas ofta ”density” – funktionen, därav ”d” framför binom., Distributioner som genererar sannolikheter för diskreta värden, såsom binomial i detta exempel, kallas ibland ”sannolikhetsmassfunktioner” eller PMFs. Distributioner som genererar sannolikheter för kontinuerliga värden, som det normala, kallas ibland ”sannolikhetsdensitetsfunktioner” eller PDF-filer. Men i R, oavsett PMF eller PDF, är funktionen som genererar sannolikheterna känd som” density ” – funktionen.
kumulativ fördelningsfunktion
låt oss nu prata om ”kumulativa” sannolikheter., Det här är sannolikheter som ackumuleras när vi flyttar från vänster till höger längs x-axeln i vår sannolikhetsfördelning., Om man tittar på distributionsplanen ovan som skulle vara
- \(p(X\le0)\)
- \(p(X\le1)\)
- \(p(X\le2)\)
- \(p(X\le3)\)
Vi kan snabbt beräkna dessa:
- \(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\)
fördelningen av dessa sannolikheter kallas den kumulativa fördelningen., Återigen finns det en funktion i R som genererar dessa sannolikheter för oss. Istället för ett ” d ”framför” binom ”sätter vi ett”p”.
pbinom(0:3, size = 3, prob = 0.5)## 0.125 0.500 0.875 1.000
den här funktionen kallas ofta bara” distributionsfunktionen”, vilket kan vara förvirrande när du försöker få huvudet runt sannolikhetsfördelningar i allmänhet. Att rita den här funktionen tar lite mer arbete. Vi kommer att visa ett enklare sätt att göra denna tomt inom kort, Så vi presenterar följande kod utan kommentar.,
denna plot kallas ibland för ett stegplot. Så fort du träffar en punkt på X-axeln, du ”steg” upp till nästa Sannolikhet. Sannolikheten för 0 eller mindre är 0,125. Därför den raka linjen från 0 till 1. Vid 1 steg vi upp till 0,5, eftersom sannolikheten för 1 eller mindre om 0,5. Och så vidare. Klockan tre har vi en prick klockan ett. Sannolikheten för 3 eller färre är säkerhet. Vi är garanterade att få 3 eller färre framgångar i vår binomial distribution.
låt oss nu visa vad vi gjorde ovan med en kontinuerlig distribution., För att hålla det relativt enkelt använder vi standard normalfördelningen, som har ett medelvärde på 0 och en standardavvikelse på 1. Till skillnad från vårt mynt vända exempel ovan som kan förstås exakt med en binomialfördelning, det finns ingen ”Off-the-shelf” exempel från verkliga livet som kartor perfekt till en standard normalfördelning. Därför måste vi använda vår fantasi.
låt oss först rita distributionen med funktionencurve
. Det första argumentet, dnorm(x)
, är i grunden den matematiska formel som drar linjen., Lägg märke till” d ”framför ” norm”; detta är funktionen” densitet”. Standardinställningarna för funktionendnorm
är mean = 0 och standardavvikelse = 1. Argumentenfrom
ochto
säger att rita denna kurva med värden på x som sträcker sig från -3 till 3.
curve(dnorm(x), from = -3, to = 3)
kurvan är en jämn linje, vilket innebär att det är en sannolikhetsfördelning för alla reella tal. Området under kurvan är 1 eftersom det är en sannolikhetsfördelning.,
Tänk dig att nå in i denna distribution och rita ett nummer. Vad är sannolikheten för att få 1.134523768923? Det är i princip 0. Varför? Eftersom det finns en chans att välja den. Varför är\ (\infty\) i nämnaren? Eftersom det finns ett oändligt antal möjligheter. Om det verkar förvirrande, Tänk dig att zooma in i X-axeln med finare och finare upplösning, med decimaler som sträcker sig till horisonten. Det betyder att Y-axelvärdena inte representerar Sannolikhet utan snarare ”densitet”., Densiteten är i huvudsak sannolikheten för ett litet antal värden dividerat med det intervallet. Om det också verkar förvirrande, är det okej. Kom bara ihåg att vi inte använder normala distributioner (eller någon kontinuerlig distribution) för att få exakta sannolikheter. Vi använder dem för att få sannolikheter för en rad värden.
till exempel, Vad är sannolikheten att x är mindre än eller lika med -1? För detta kan vi använda funktionenpnorm
, vilket är den kumulativa fördelningsfunktionen för den normala fördelningen.,
pnorm(-1)## 0.1586553
mosaikpaketet ger den praktiskaplotDist
– funktionen för att snabbt visualisera denna sannolikhet. Genom att placeramosaic::
före funktionen kan vi ringa funktionen utan att ladda mosaikpaketet. Argumentetgroups
säger att skapa två regioner: en för mindre än -1 och en för större än -1. Argumentettype='h'
säger att rita en ”histogrammiknande”-plot. De två färgerna är för respektive regioner. Självklart betyder” norm ” rita en normal fördelning., Återigen är standardvärdet 0 och standardavvikelse 1.
# install.packages('mosaic')mosaic::plotDist('norm', groups = x < -1, type='h', col = c('grey', 'lightblue'))
denna plot visar faktiskt kumulativ Sannolikhet. Den blå regionen är lika med 0.1586553, sannolikheten vi drar ett värde på -1 eller mindre från denna fördelning. Minns vi använde den kumulativa fördelningsfunktionen för att få detta värde. För att visualisera alla kumulativa sannolikheter för standard normalfördelningen kan vi återigen använda funktionencurve
men den här gången medpnorm
.,
curve(pnorm(x), from = -3, to = 3)
om vi tittar på -1 på X-axeln och går rakt upp till linjen, och sedan går direkt till X-axeln, bör den landa på 0.1586553. Vi kan lägga till detta i diagrammet med 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')
igen är detta en jämn linje eftersom vi har att göra med ett oändligt antal verkliga värden.,
empiriska kumulativa fördelningsfunktioner
nu när vi är klara med kumulativa fördelningar, låt oss undersöka empiriska kumulativa fördelningar. ”Empirisk” betyder att vi är oroade över observationer snarare än teori. De kumulativa fördelningarna vi utforskade ovan baserades på teori. Vi använde binomial och normala kumulativa fördelningar, respektive, för att beräkna sannolikheter och visualisera fördelningen. I verkliga livet kommer dock inte de data vi samlar in eller observerar från en teoretisk fördelning. Vi måste använda själva uppgifterna för att skapa en kumulativ fördelning.,
Vi kan göra detta i R med funktionenecdf
. ECDF står för”empirisk kumulativ fördelningsfunktion”. Notera det sista ordet:”funktion”. Funktionenecdf
returnerar en funktion. Precis som pbinom
och pnorm
var de kumulativa fördelningsfunktionerna för våra teoretiska data, skapar ecdf
en kumulativ fördelningsfunktion för våra observerade data. Låt oss prova detta med rock data set som kommer med R.,
bergdatauppsättningen innehåller mätningar på 48 bergprover från en petroleumbehållare. Den innehåller 4 variabler: område, peri, form och perm. Vi kommer att arbeta med områdesvariabeln, vilket är den totala ytan av porer i varje prov.
funktionernaecdf
fungerar på numeriska vektorer, som ofta är kolumner med siffror i en dataram. Nedan ger vi den områdeskolumnen i bergdataramen.
ecdf(rock$area)## Empirical CDF ## Call: ecdf(rock$area)## x = 1016, 1468, 1651, ..., 11878, 12212
Lägg märke till att utmatningen inte är så användbar. Det beror på att funktionenecdf
returnerar en funktion., Vi måste tilldela resultatet till ett namn så att vi kan skapa vår ECDF-funktion. Låt oss använda Fn
Fn <- ecdf(rock$area)
nu har du en anpassad kumulativ distributionsfunktion som du kan använda med dina data. Till exempel kan vi skapa en stegplot för att visualisera den kumulativa fördelningen.
plot(Fn)
Om vi tittar på diagrammet kan vi se den beräknade sannolikheten att området för ett prov är mindre än eller lika med 8000 är ca 0,6., Men vi behöver inte förlita oss på ögat-balling grafen. Vi har en funktion! Vi kan använda den för att få en mer exakt uppskattning. Bara ge det ett nummer inom intervallet x-axeln och det kommer att returnera den kumulativa sannolikheten.
# Prob area less than or equal to 8000Fn(8000)## 0.625
Vi kan använda funktionen med mer än ett värde. Till exempel kan vi få beräknade sannolikheter att området är mindre än eller lika med 4000, 6000 och 8000.
Fn(c(4000, 6000, 8000))## 0.1250000 0.3333333 0.6250000
det finns också en summary
metod för ECDF-funktioner., Den returnerar en sammanfattning av de unika värdena för de observerade data. Lägg märke till att det liknar den traditionella sammanfattningsmetoden för numeriska vektorer, men resultatet är något annorlunda eftersom det sammanfattar de unika värdena istället för alla värden.
slutligen, om vi vill, kan vi överlappa en teoretisk kumulativ fördelning över ECDF. Detta kan hjälpa oss att bedöma om vi kan anta att våra data kan modelleras med en viss teoretisk fördelning. Kan exempelvis våra data anses ha samplats från en Normal distribution?, Nedan plottar vi stegfunktionen och lägger sedan över en kumulativ normalfördelning med hjälp av medel-och standardavvikelsen för våra observerade data.
plot(ecdf(rock$area))curve(pnorm(x, mean(rock$area), sd(rock$area)), from = 0, to = 12000, add = TRUE, col='blue', lwd = 2)
linjerna verkar överlappa en hel del, vilket tyder på att data kan approximeras med en Normal distribution. Vi kan också jämföra uppskattningar från vår ECDF med en teoretisk CDF. Vi såg att sannolikheten att området är mindre än eller lika med 8000 är ca 0.625., Hur jämför det med en Normal kumulativ fördelning med en genomsnittlig och standardavvikelse för rock$area
?
pnorm(8000, mean = mean(rock$area), sd = sd(rock$area))## 0.6189223
det är ganska nära!
en annan grafisk bedömning är Q-Q-plottet, som också enkelt kan göras i R med funktionerna qqnorm
och qqline
. Tanken är att om punkterna faller längs diagonallinjen så har vi bra bevis på att uppgifterna är rimliga normala., Återigen avslöjar denna plot att data ser ut som de kan vara väl approximerade med en Normal fördelning. (För mer information om Q-Q tomter, se vår artikel, förstå Q-Q tomter).
qqnorm(rock$area)qqline(rock$area)
För frågor eller förtydliganden angående denna artikel, kontakta Uva Library StatLab: [email protected]
visa hela samlingen av UVA Library StatLab artiklar.
Clay Ford
statistisk forskning konsult
University of Virginia Library
9 juli 2020
Lämna ett svar