Laboration 3: Fördelningsanpassning och CGS

Lunds univrsitet
Matematikcentrum
Matematisk statistik
Biostatistisk grundkurs, MASB11
Laboration 3 VT-2015, 150217
Fördelningsanpassning och Centrala Gränsvärdes Satsen
Introduktion
Syftet med laborationen är dels att vi skall bekanta oss med normalfördelningen, s.v. X ∈ N (µ, σ 2 ),
vad som sker med sannolikhetsfördelning när man bildar summor av slumpvariabler (Centrala
gränsvärdessatsen) och dels med några metoder och funktioner som finns i R för att kunna skatta,
studera och jämföra fördelningen hos ett eller flera stickprov, empirisk fördelningsfunktion, F ∗ (x)
och olika typer av fördelningsplottar. Datamaterialen och script finns på kursens hemsida under
namnet www.maths.lth.se/matstat/kurser/masb11/vtlp3/
• Laborationen redovisas med en skriftlig rapport som ska vara inlämnad senast 150303. Rapporten baseras på korta svar från respektive Uppgift 1-9, vid behov kan också lämplig figur
bifogas. Förberedelseuppgifterna ska vara handskrivna och kan lämnas in tillsammans med
rapporten.
Förberedelseuppgifter
1. Serum kolesterol hos amerikanska kvinnor i åldrarna 20 år och uppåt är (enligt National
Health and Nutrition Examination Survey) normalfördelad med väntevärde 206 mg/dl och
standardavvikelse 44.7 mg/dl.
(a) Hur stor andel av de amerikanska kvinnor som är 20 år eller äldre har en serum kolesterol
som understiger 230 mg/dl?
(b) Hur stor andel av de amerikanska kvinnor som är 20 är eller äldre har en serum kolesterol
mellan 150 och 250 mg/dl?
2. Vid läkemedelstillverkning är det viktigt att mängden aktiv substans hålls så konstant som
möjligt. En viss variation är emellertid omöjlig att undvika, oftast kan den beskrivas med hjälp
av en normalfördelning. För ett visst läkemedel gäller att mängden aktiv substans (mg) i en
tablett antas vara N 2, 0.12 . Mängden aktiv substans i en tablett påverkas inte av de andra
tabletternas tillverkning. Tabletterna ordineras patienterna i förpackningar som innehåller
20 tabletter.
(a) Vad är sannolikheten av mängden aktiv substans i en tablett i förpackningen understiger
1.975 mg?
(b) Låt Xi vara mängden aktiv substans i tablett nr i. Hur kan då Y = ”mängden aktiv
substans i hela förpackningen” tecknas?
(c) Vad är fördelningen för Y ?
(d) Vad är sannolikheten av mängden aktiv substans i hela förpackningen understiger 39.5 mg?
Simulering av slumpvariabler i R
Simulering i R görs genom färdiga funktioner unika för respektive fördelning. Exempel på några av
dessa funktioner finns i efterföljande tabell.
Fördelning
Binomial
Poisson
Normal
Likformig (Rektangel)
Exponential
Funktion i R
rbinom(antal,n,p)
rpois(antal,mean)
rnorm(antal,mean,stddev)
runif(antal,min,max)
rexp(antal,scale) (yr)
Exempel i R
rbinom(100,10,0.5)
rpois(100,2)
rnorm(100,10,15)
runif(100,10,20)
rexp(100,1)
mean = väntevärdet, µ, i fördelningen
stddev = standardavvikelsen, σ, i fördelningen
scale = 1/väntevärdet i exponentialfördelningen
1
Normalfördelningen
Om man till exempel vill ha ett antal slumptal (50 stycken) från en normalfördelning med väntevärdet
(populationsmedelvärdet) 100 och standardavvikelsen 15 skriver man följande kommando:
a1 <- rnorm(50,100,15)
I variabeln a1 lagras då de genererade värdena. Vill man kolla på värdena skriver man bara a1 så
får man en lista på värdena. Vill man beräkna basstatistiken för datamaterialet kan man skriva:
a1sum <- summary(a1)
En boxplot får man genoma att skriva boxplot(a1) och ett histogram genom att skriva hist(a1).
Prova dessa kommandon så du ser vad som händer. Vill du veta mer om ett kommando kan du
skriva kommandot med ett frågetecken framför t.ex: ?hist, ?boxplot, etz.
Uppgift 1
Skapa nu ett stickprov normal om 10 slumptal från en normalfördelning med väntevärdet 10 och
standardavvikelsen 2. Bilda sedan ett andra stickprov som heter uni och innehåller 10 slumptal från
en likformig fördelning mellan 10 och 20. Ledning: rnorm(10,10,2) och runif(10,10,20).
Observera att slumptalen kan ses som stickprov om 10 observationer från två kända populationer. Kontrollera nu med hjälp av kommandot hist(normal) och hist(uni) hur väl stickproven
överensstämmer med populationerna. För ett stort stickprov bör de se ut som den teoretiska
fördelningen tex så här:
Hur väl stämmer stickproven överens med populationerna? Upprepa nu förfarandet för stickprovsstorlek n=50 observationer samt n=500. Bör överensstämmelsen bli bättre eller sämre?
Uppgift 2
Skapa nu tre stickprov om n=1000 observationer från följande fördelningar (kalla dem t.ex. norm1,
uni1 resp. exp1):
• Normal(10, 2).
• Rektangelfördelning – Uniform(10, 20).
• Exponential med väntevärdet 1 (rexp(1000,1)).
Kontrollera med histogrammet hur fördelningarna ser ut.
2
1500
600
500
1000
400
300
500
200
100
0
0
5
10
15
0
10
20
12
14
16
18
20
Figur 1: Normal(10,4) samt Uniform(10,20).
2
QQ-plot och qqnorm
Om man vill kontrollera hur pass nära ett stickprov är en viss teoretisk fördelning kan man använda
olika grafiska metoder. En sådan metod är en s.k. Q-Q plot (Q=Quantile). I en Q-Q plot jämför man
de verkliga värdena i stickprovet med det man kunde förvänta sig från en viss teoretisk fördelning.
Om de observerade värdena överensstämmer med de förväntade så kommer punkterna i en Q-Q
plot att följa en rät linje.
Jämför nu de tre stickproven ovan med vad vi kunde förvänta oss från en normalfördelning. I R finns
det en standardfunktion qqnorm(stickprovsnamn) där man jämför kvantilerna i ett stickprov
med normalfördelningen. I kommandofönstret:
qqnorm(norm1)
qqnorm(uni1)
qqnorm(exp1)
Dina figurer bör se ut ungefär som i Figur 2 nedan. Notera att olika avvikelser från normalfördelning
resulterar i olika former på kurvan.
Uppgift 3
I de tidigare uppgifterna har vi simulerat vad som händer om vi tar stickprov av olika storlekar
från olika kända fördelningar. Vi skall nu gå vidare och undersöka vad som händer om vi bildar
olika storheter i stickprovet. Vilka egenskaper får då dessa storheter? Det är framförallt väntevärdet
E[X], variansen V [X] och fördelningen FX (x) som vi intresserar oss för.
Vi börjar med att undersöka vilken fördelningen summan av två observationer från en normalfördelning
med väntevärde 10 och standardavvikelse 2 har. Börja med generera två nya stickprov om 1000
observationer norm1 och norm2:
norm1 <- rnorm(1000,10,2)
norm2 <- rnorm(1000,10,2)
När vi kör dessa kommandon kommer det att bildas två nya variabler som heter norm1 och norm2
och som innehåller 1000 slumptal var.
Bilda nu summan (sum12) av de två kolumnerna norm1 och norm2. Undersök vilken fördelning
summan har genom att göra ett histogram och en Q-Q plot.
sum12 <- norm1+norm2
Vilken
fördelning har summan? Vad bör väntevärdet bli? Standardavvikelsen? (Använd gärna R,
√
x beräknas med sqrt(x)) Beräkna också medelvärdet av sum12 med mean(sum12) och stickprovsstandardavvikelsen sd(sum12). Hur passar de med de teoretiska värdena?
3
Normal Q−Q Plot − uni1
18
16
14
12
Sample Quantiles
12
10
8
10
6
Sample Quantiles
14
20
Normal Q−Q Plot − norm1
−2
−1
0
1
2
−2
Theoretical Quantiles
−1
0
1
2
Theoretical Quantiles
5
4
3
2
0
1
Sample Quantiles
6
7
Normal Q−Q Plot − exp1
−2
−1
0
1
2
Theoretical Quantiles
Figur 2: QQ-plot för Normal-, Likformig- samt Exp-fördelning.
Centrala gränsvärdessatsen
Lägger man ihop, adderar, (eller beräknar medelvärdet) av flera oberoende normalfördelade slumpvariabler är summan också normalfördelad. Men vad händer om man lägger ihop flera variabler som
alla är rektangelfördelade? Vilken fördelning fås om man adderar exponentialfördelade variabler?
Centrala gränsvärdessatsen säger att om man adderar ett stort antal oberoende variabler från en
godtycklig fördelning blir summan (eller medelvärdet) normalfördelad. Detta märkliga faktum ska
du i denna uppgift undersöka med hjälp av den interaktiva rutinen cgs().
Konkret kan vi tänka oss att du gör ett antal mätningar av en intressant (bio)variabel, du bildar
summan av mätningarna (eller medelvärdet). Det du ska undersöka är hur summan kommer att
variera från mätserie till mätserie? Beror det på ursprungsfördelningen hos den uppmätta variabeln?
Så här använder du rutinen cgs i RStudio
• När du skriver cgs() får du möjlighet att välja mellan ett antal fördelningar med givna parametrar eller kan du konstruera en egen diskret sannolikhetsfördelning. Välj ett av alternativen
4
genom att mata in tillhörande siffra.
• Du får en figur med täthetsfunktion eller sannolikhetsfunktion för din valda fördelning. Välj
nu hur många mätningar du ska göra från denna fördelning och mata in detta antal.
• I kommandofönstret visas resultatet av din mätningar (de 10 första om du valt ett stort antal),
d.v.s. R har hämtat slumptal från din valda fördelning. Summan av alla mätningarna skrivs
ut. I din figur markeras mätningarna med kryss.
• Antag nu att du gör upprepade serier med det antal mätningar, n, som du valt. För varje serie
beräknas summan av dina mätningar. Hur varierar då summan? Mera matematiskt beskrivet:
Om X1 , X2 , . . . , Xn är oberoende med den fördelning du valt, vad är då fördelningen för
summan X1 + X2 + . . . + Xn ?
• Undersök detta genom att simulera N serier med det antal mätningar (n) du valt. Rutinen
ritar sedan upp ett histogram för summan. Ange alltså ett värde på N, tänk på att välja N
tillräckligt stort så att du kan få en uppfattning av fördelningen i histogrammet.
• Centrala gränsvärdessatsen säger att om du valt ett tillräckligt stort antal mätningar kommer
fördelningen för summan att bli ungefär normalfördelning. Rutinen ger dig möjlighet att
anpassa en normalfördelning till data. Du kan låta R sköta om det och din uppgift blir då att
undersöka grafiskt om du tycker att approximationen verkar bra. Till din hjälp har du också
en Q-Q plot där du kan se om summan verkar passa till en normalfördelning.
• Du kan också anpassa normalfördelningen själv och måste då fundera på vilka värden på
väntevärde och standardavvikelse som gäller (prova gärna detta själv som en utmärkt övning!).
• Om du vill köra rutinen igen kan du undvika den interaktiva fasen genom att direkt skriva in
dina val i anropet. Exempelvis ger cgs(2,10,1000,1) att 1000 serier med vardera 10 mätningar
slumpas från en likformig fördelning, R(0, 4). Histogramet för de 1000 summorna plottas,
normalfördelning anpassas och en Q-Q plot ritas.
Uppgift 4
1. Välj rektangelfördelning, antal=2 i R-funktionen cgs(). Vilka värden kan summan av två
mätningar ligga mellan? Verkar histogrammet rimligt?
2. Öka antalet mätningar i rektangelfördelningen. Vad händer om du tar antalet mätningar till
5? Eller ökar till 10?
3. Försök anpassa ”rätt” normalfördelning till histogrammet, d.v.s. tänk ut värdena på väntevärde
och standardavvikelse.
(b−a)2
Ledning: Om s.v. X är uniform(a,b): ⇒ E[X] = a+b
2 och att V [X] =
12 .
4. Exponentialfördelning: Gör nu motsvarande för exponentialfördelningen. Hur många mätningar
behöver ni ta innan ni tycker att summan är ungefär normalfördelat? Verkar fördelningen
gå snabbare eller långsammare mot en normalfördelning än det gjorde för den likformiga
fördelningen. Vad beror detta på?
5. Normalfördelning: Vad händer om ni tar antal=2? Kan du förklara detta?
6. Undersök gärna på motsvarande sätt vad som händer då man bildar summor från binomialeller poissonfördelningen.
7. Testa gärna med en egen diskret fördelning, tex binomialfördelningen.
8. Du har tittat på vad som händer med summor av variabler. Vad händer om man i stället tar
medelvärdet av variablerna (mätningarna)?
5
3
Fördelningsanpassning
3.1
Empiriska fördelningsfunktionen F ∗ (x) – normalfördelningspapper
Grafiska metoder används främst för tre ändamäl: skattning av parametrar, validering av fördelning
samt skattning av kvantiler. Den grafiska tekniken bygger kort på att, vid givet slumpmässigt
stickprov x1 , x2 ,...,xn :
1. Först ordnas stickprovet, betecknas x(1) , x(2) ,...,x(n) .
2. Man skattar fördelningsfunktionen F (x) med det vi kallar för den empiriska fördelningsfunktionen F ∗ (x). Den definieras som:

; x < x(1)
 0
F ∗ (x) =
i/n ; x(i) ≤ x < x(i+1)

1
; x(n) ≤ x
3. Därefter plottas de n stycken talparen (x(i) , ( ni )). Plottningspositionen ni som vi använder för
den empiriska fördelningsfunktionen har en del fördelar men också vissa nackdelar, tex. att
x(n) kommer att vara den position som svarar mot 1 hos fördelningsfunktionen. Andra val av
i
) eller (x(i) , ( i−1/2
plottningspositioner förekommer: exempelvis, (x(i) , ( n+1
n ), se Holmquist B.
Matematisk statistik för M och V, Kompletteringar och tillämpningar, 1996.
I R kan F ∗ (x) ritas med hjälp av funktionen plot(...,type="s",...). Nedansåtende kommandorader exemplifierar teckniken med hjälp av 100 observationer från en s.v. X ∈ N (2, 1).
>
>
>
>
>
X<-rnorm(100,2,1)
sortX<-sort(X)
Fn<-seq(1,length(sortX),1)/(length(sortX)+1) # plotposition foer
plot(sortX,Fn,type="s",col="blue")
grid()
F_n
• På y-axeln har vi F ∗ (x). Använd denna för att skatta medelvärdet, kvartilerna samt medianen
i fördelningen.
• Eftersom vi känner µ och σ i det här fallet kan vi komplettera figuren med den riktiga fördelningsfunktionen, FX (x). Gör det, glöm inte att använda points(...) istället för
plot(...) innan du plottar ovanpå F ∗ (x).
3.2
Normplot i R-package nsRFA
Om vi vet eller misstänker att stickprovet kommer från en normalfördelning kan vi istället plotta det
ordnade stickprovet i ett normalfördelningspapper. Skalan på y-axeln i ett normalfördelningspapper
är anpassad så att observationerna kommer att följa en rät linje om de är normalfördelade. Jämför
teknken med qqnorm. Om vi får någon kurvatur indikerar detta alltså att observationerna inte är normalfördelade. Om man har installerat ett packages som heter nsRFA i R kan man direkt plotta ett
eller flera stickprov i ett normalfördelningspapper med kommandot normplot() och normpoints().
Använd ?normplot för att komma underfund med funktionen. Plotta därefter stickprovet X i ett
normalfördelningspapper.
> ?normplot
> normplot(X)
Uppgift 5
Skatta nu medelvärdet µ och standardavvikelsen σ i normalfördelningsplotten, skattningstekniken
är en direkt tillämpning av moment 2 i Lektionsblad 4. Stämmer skattningarna med det använda
6
stickprovet?
Om R-packages nsRFA inte redan finns installerat i din dator kan man enkelt göra det i RStudio
genom att välja flicken packages i nedre högra fönstret och därefter kryssa för de packages man
vill installera. Det finns en hel del olika fördelnnigspapper man kan ha nytta av i nsRFA.
3.3
Jordbävningar
Vi ska nu studera ett datamaterial där data insamlats under perioden den 16 december 1902 t.o.m.
den 4 mars 1977. Det rör sig om tidsintervall, mätt i dagar, mellan kraftiga jordbävningar världen
runt. Jordbävningar med en magnitud på åtminstone 7,5 på Richterskalan finns representerade,
alternativt jordbävningar med över 1000 dödsoffer.
Datamaterialet finns på kursens material-hemsida under namnet Quakes.RData. Läs in filen genom
kommandot load("Quakes.RData"). De numeriska värdena finns lagrade i en vektor med namn
quakeper. Använd length för att finna antalet tidsperioder. Som tidigare ritar vi histogram och
beräknar diverse läges- och spridningsmått:
>
>
>
>
>
>
hist(quakeper,freq=FALSE) # histogrammets totala area blir 1, taethetsfuktion#
m<-mean(quakeper)
med<- median(quakeper)
s<-sd(quakeper)
s2<- var(quakeper)
myrange<-range(quakeper)
Uppgift 6
Använd data och fundera: verkar det troligt att det kan gå längre period än 5 år mellan kraftiga
jordbävningar? Hur ofta inträffar de?
I R finns en del användbara villkorssatser som gör det enkelt att skapa nya vektorer och matriser
med hjälp av lämpliga bivillkor, Man kan alltså på så sätt i en given vektor eller matris finna
element som uppfyller ett aller annat intressant villkor. För att exmpelvis finna de perioder mellan
jordbävningar med längd kortare än 1000 dagar (c:a 3 år) kan man skriva:
> less1000 <- quakeper[quakeper < 1000];
> length(less1000)
Första kommandot skapar en vektor som vi kan kalla vad som helst, tex. less1000. Den innehåller
de element i ursprungsvektorn quakeper vilka uppfyller villkoret. För att få reda på hur många
element som uppfyller villkoret använder vi helt enkelt length(less1000).
Uppgift 7
Vi vill uppskatta sannolikheten för att en period mellan jordbävningar är kortare än 1000 dagar
genom att beräkna motsvarande andel i datamaterialet Vi har i själva verket beräknat täljaren
fall i kommandoserien ovan, och nämnaren ges helt enkelt av length(quakeper). Beräkna nu den
intressanta kvoten och notera ditt svar. Hur stor är sannolikheten att det dröer mer än 200 dagar
mellan två stora jordbäningar?
Anmärkning. Den storhet som beräknades som mean(quakeper) benämnes ibland återkomst-tid
(engelska: return period), beteckna den tex. med Tr , detta är egentligen en skattning av vänteärdet.
Intensiteten av de händelser som studeras kan beräknas som 1/T och studeras ofta i statistisk
riskanalys, brukar betecknas med λ.
7
3.4
Anpassning till standardfördelning
Enligt gängse statistisk teori är tidsavståndet för två händelser som uppträder slumpmässigt i tiden
efter varandra exponentialfördelade, s.v. T ∈ Exp(λ). (Se sid 98 i kurboken). Dess Fördelningsfunktion
kan då skrivas som FT (t) = 1 − e−λ·t , t > 0.
Uppgift 8
Avgör nu om tidsavståndet mellan två efterföljande jordbävningar är exponentialfördelad genom
att jämföra den empiriska fördelningsfunktionen, F ∗ (t) , med den teoretiska, FT (t) R-tips:
>
>
>
>
>
>
>
sortX<-sort(quakeper)
Fn<-seq(1,length(sortX),1)/(length(sortX)+1) # plotposition foer
plot(sortX,Fn,type="s",col="blue")
grid()
taxis<-seg(0.01,max(quakeper,1))
FT<- 1-exp(-\lambda*taxis)
points(taxis,FT,type="l",col="red")
F_n
Uppgift 9
Centrala gränsvärdessatsen i praktiken: På 35 patienter med Hodgkins sjukdom mätte man antalet
T4 celler i blodet (antal/mm3 ). Samtidigt mätte man motsvarande antal hos 35 patienter som
hade andra sjukdomar (Non-Hodgkins). Data ligger i filen Hodgkindata.RData som du hittar på
kursens hemsida. Läs in data via Workspace-fönstrets öppna-ikon. Du har nu fått två nya variabler
Hodgkin och NonHodgkin. Undersök om antalet celler i blodet är normalfördelat för de båda
grupperna.
För att avgöra om två datamaterial, stickprov, är lika ska de ha samma fördelning de ska ju vara
stickprov från samma population. Avgör nu om de två stickproven i datamaterialet Hodgkindata.RData
har samma fördelning med hjälp av dess empiriska fördelningsfunktioner och normalfördelningspapperet,
normplot(). Tips små storheters.v., X, som är positiva men med värden nära noll kan ofta modelleras med√hjälp av en lognormalfördelning, s.v. log X ∈ N (µ, σ 2 ). Ett annat alternativ är att
använda en X transformation. Stämmer detta?
Det är också möjligt jämföra grupperna genom att bilda differensen mellan de två gruppmedelvärdena. Kan du använda dig av centrala gränsvärdessatsen i detta fall? Kan du säga något
om vilken fördelning differensen i medelvärden har? är det ett stort problem att variabeln inte
är normalfördelad i de båda grupperna från början? Kan man åtgärda detta på något sätt? Vad
händer med fördelningen
√ för stickprovsmedelvärdet om man istället använder en transformation av
värdena, till exempel X eller log X.
8