Laboration 3 - Matematikcentrum

Lunds univrsitet
Matematikcentrum
Matematisk statistik
Biostatistisk grundkurs, MASB11
Laboration 3 HT-2014, 141219
Fördelningsanpassning och Centrala Gränsvärdes Satsen
Introduktion
Syftet med laborationen är dels att vi skall bekanta oss med 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. Datamaterialet och script finns på kursens material-hemsida under namnet
www.maths.lth.se/matstat/kurser/masb11/htm4/
• Laborationen redovisas med en skriftlig rapport som ska vara inlämnad senast 150109.
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
Fortsättning laboration 2
Uppgift 5
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?
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 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.
2
• 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 6
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
binomial- eller 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)?
Uppgift 7 (Har ni gjort den under labpass 2 behöver ni inte göra om den)
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.
3
Det är 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? Prova
och se vad som händer med
√ fördelningen för data om man istället använder en transformation
av värdena, till exempel X eller log X.
2
Fördelningsanpassning
2.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:
F ∗ (x)


 0
; x < x(1)
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.
i
Andra val av plottningspositioner förekommer: exempelvis, (x(i) , ( n+1
) eller (x(i) , ( i−1/2
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).
4
2.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
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 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.
2.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
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
5
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
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återkomsttid (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 λ.
2.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
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 Hodgkin-NonHodgkin
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 ). Stämmer detta?
6