Osäkerhet och Konfidensintervall

Rasmus Bååth
31/03/2014

Två frågor om ett sample

  • Vad betyder det värde/skillnad vi uppmätt?
  • Hur säker är den summeringsstatistik vi räknat ut?
    • Bara för att vi ser en stor skillnad mellan två grupper i vårt sample behöver det inte betyda att det är en stor skillnad i populationen.

Osäkerhet

  • Vi har inte mätt hela populationen. Om vi hade gjort det hade vi inte haft någon osäkerhet.
  • Vi vill ha ett mått på hur fel vår summeringsstatistik skulle kunna vara.

Sampling-distributioner

Om vi upprepade gånger hade gjort om ett experiment hur annorlunda hade vår summeringsstatistik varit gång till gång?

Alternativt, vad är distributionen av vår summeringsstatistik om vi hade upprepat experimentet?

Sampling-distribution online

  1. Vad är skillnaden vid olika stickprovsstorlek (N). Varför?
  2. Testa några kombinationer av egenutritade populationsdistributioner och olika mått. Ser du nån likhet mellan samplingdistributionerna? (tips: testa att klicka i “fit normal”)
  • Rita ut en hypotetisk populationsdistribution för antalet ord man kan komma ihåg i en ordminnesuppgift. Kolla på samplingdistributionen för mean och SD i ett experiment med 10 deltagare. Känns de vettiga? Om populationsdistributionen hade stämt, ge en skattning för hur fel ett enskilt samplemedelvärde hade varit.

Mått på sampling error

  • Standard error, SD av sampling distributionen
  • Konfidensintervall, covarage interval av samplingdistributionen.

Standard error

Konfidensintervall

Konfidensintervall

plot of chunk unnamed-chunk-2

Problemet

  • Vi vet inte poulationen.
  • Vi vet inte samplingdistributionen.

Lösningen

  1. Estimera populationen utifrån den data vi har.
  2. Använd den estimerade populationen för att skapa en samplingdistribution av någon summeringsstatistik.
  3. Använd samplingsdistributionen för att räkna ut ett konfidensintervall.

Att estimera en population

  • Anta att populationen har en viss form (t.ex. normalfördelad).
  • Anta att samplet är representativt för populationen.

Bootstrap

  • Antar att samplet är representativt för populationen.
  • En “ny” metod (1979) som kräver en “kraftfull dator” (d.v.s. en dator).
  • Brett applicerbar, extremt användbar metod.

Tre uttryck för samma sak

  • Sample with replacement
  • Resample
  • Konceptuell kopiera vårt sample oändligt antal gånger och sampla från det

Bootstrap online

Bootstrap i R

  • Tre ingredieser:
    • En summeringsstatistik som undersöker det vi är intresserade av. T.ex. mean, median eller sd.
    • resample för att skapa ett resample av vår datatabell.
    • do(...) för att upprepa detta många gånger.

En Summeringsstatistik

Säg jag är intresserad av proportionen röda bilar i Ahlgrens bilar. Jag kodar röda som 1 och gröna och vita som 0.

candy <- rep(c(1, 0), c(48, 81))
mean(candy)
[1] 0.3721

Resampling

resample(candy) drar ett stickprov från ett dataset med samma storlek men med “replacement”, samma datapunkt kan förekomma många gånger.

library(mosaic)
resample(candy)
  [1] 0 0 1 0 0 1 1 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 1 0 0
 [36] 1 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0
 [71] 0 1 1 1 1 0 1 0 1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1
[106] 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0
resample(candy)
  [1] 0 0 0 1 1 1 0 0 1 1 0 0 0 1 0 1 1 0 1 1 1 0 0 0 1 0 0 1 0 1 0 0 1 1 1
 [36] 0 1 0 0 1 1 1 1 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 1 0 1 1 1 0 0 1 0 1 0 0
 [71] 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 1 1 0
[106] 0 0 0 0 1 0 0 1 1 1 1 1 0 1 1 1 0 1 0 1 0 0 0 1

Resampling + summeringsstatistik

Om vi tar ett resample och räknar ut vår summeringsstatistik upprepade gånger. Spridningen reflekterar osäkerheten.

mean(resample(candy))
[1] 0.4186
mean(resample(candy))
[1] 0.3876
mean(resample(candy))
[1] 0.3411

Fler upprepninger med do(...)

do(3) * mean(resample(candy))
  result
1 0.4264
2 0.3488
3 0.3566

För ett bootstrap CI bör du ha minst 1000 upprepningar och helst så många som möjligt.

boot <- do(1000) * mean(resample(candy))
head(boot)
  result
1 0.3953
2 0.3643
3 0.4031
4 0.3411
5 0.3643
6 0.3643

Räkna ut standard error

sd(boot)
[1] 0.04196

Räkna ut 95% bootstrap konfidensintervall

För ett quantile bootstrap intervall, ett covarage intervall för bootstrap distributionen:

qdata(c(0.025, 0.975), boot)
      quantile     p
2.5%    0.2868 0.025
97.5%   0.4496 0.975

Räkna ut 95% bootstrap konfidensintervall

Eller med antagandet att bootstrap distributionen är normalfördelad:

confint(boot)
    name  lower  upper level method estimate margin.of.error
1 result 0.2889 0.4536  0.95 stderr   0.3712         0.08234

Vi kan också titta på bootstrap distributionen:

histogram(~ result, data=boot)

plot of chunk unnamed-chunk-13

Bootstrap CI för en gruppmodell

d <- read.csv("../03_25/rt_experiment.csv")
boot <- do(1000) * median(rt ~ group, data=resample(d) )
qdata(c(0.025, 0.975), boot$A)
      quantile     p
2.5%     0.299 0.025
97.5%    0.560 0.975
qdata(c(0.025, 0.975), boot$B)
      quantile     p
2.5%     0.286 0.025
97.5%    0.375 0.975

Bootstrap CI för en skillnad

head(boot)
       A      B
1 0.3200 0.2910
2 0.3200 0.3200
3 0.3095 0.2910
4 0.3600 0.2910
5 0.4000 0.3200
6 0.3530 0.3456
qdata(c(0.025, 0.975), boot$A - boot$B)
      quantile     p
2.5%   -0.0453 0.025
97.5%   0.2400 0.975

Det bästa med Bootstrap

Det funkar nästan alltid för vilken summeringsstatistik som helst! Nästan…

  • Datans distribution måste vara representativ för populationen. Ju mer data vi har desto större chans att stickprovet är representativt.
  • Hur mycket data behöver vi? En slarvig tumregel är \( > 30 \) datapunkter.
  • All summeringsstatistik fungerar inte, exempelvis min och max.
  • Se till att data resamplas på samma sätt som den samlades in.

Hur rapportera ett bootstrap CI?

The infants looked more at the picture of their mother than the picture of the stranger in 75% of the trials ( 95% CI [65%, 89%])

Compared to the group that drank decaf, the group than drank coffe prior to the test scored on average 10 points higher (95% CI[4.5, 14.8]).

Hur rapportera ett bootstrap CI?

Regarding the time spent on the task there was no significant different between male and the female participants (M = 7.2 s, 95% CI [-6.2, 14.3])

The proportion of red cars was 0.37 (95% CI [0.29, 0.45])

Olika sorters CI

  • Parametriska CI. Kallas av Kaplan “normal theory”. Typexempel: t-test
  • Bayesianska Credibility Intervals.
  • Skriv därför alltid ut vilket sorts CI du rapporterar!

All confidence intervals reported are 95% quantile bootstrap intervals constructed using 10,000 resamples (Efron, 1979).

Efron, B. (1979). Bootstrap methods: another look at the jackknife. The annals of Statistics, 1-26.

Lurigheter med do

do skapar olika sorters tabeller beroende vilken sorts operation du kombinerar do med.

Om do kombineras med en uttryck som resulterar i ett nummer skapar do en data frame med en kollumn som heter result.

s <- do(100) * mean(resample(candy))
head(s)
  result
1 0.4729
2 0.4264
3 0.3411
4 0.3953
5 0.3488
6 0.2868

Lurigheter med do

s <- do(100) * mean(resample(candy))
histogram(~ result, data=s)

plot of chunk unnamed-chunk-17

Lurigheter med do

Om do kombineras med en mer komplext uttryck så får man kolla på resultatet med head eller testa med några få repititioner först.

do(3) * mm(rt ~ group, d)
       A      B   sigma r.squared
1 0.3991 0.3252 0.09122    0.1563
2 0.3991 0.3252 0.09122    0.1563
3 0.3991 0.3252 0.09122    0.1563
head(s)
  result
1 0.3256
2 0.3876
3 0.2868
4 0.3411
5 0.3876
6 0.3876

Dagens aktivitet

  • Övningar kapitel 5
  • Men först
    • Ta ett sample / en påse Ahlgrens bilar.
    • Gör om min analys, d.v.s. räkna antalet röda bilar.
    • Räkna ut ett konfidensinterval.
    • Verkar det rimligt att 1/3 av bilarna är röda i populationen?
    • Obs, jag vill inte ha tillbaka bilarna!