Statistik
eksempler i R

Neurologi Neuroanatomi Statistik Home

Deskriptiv


Kvantitative data
Kategoriske data
Intervaller

Analytisk


Sandsynligheder

Kategoriske udfald

Kategoriske eksponeringer
Logistisk regression

Kvantitative udfald

Kvantitative udfald
Linær regression
Korrelationer
Overlevelse
Poisson regression

Tilfældighed


Randomisering

Forskning


PhD thesis



Jacob Liljehult
Klinisk sygeplejespecialist
cand.scient.san, Ph.d.

Neurologisk afdeling
Nordsjællands Hospital

Intervaller

I mange tilfælde kan konfidensintervaller udregnes ved hjælp af andre funktioner og kan derefter hentes fra deres output:

KONFIDENSINTERVALLER

Kontinuerte data

Konfidensintervallet for en kontinuert variabel kan udregnes fra en t-test, hvor funktionen t.test() bruges til at lave en one-sample t-test imod variables eget gennemsnit. Selve konfidensintervallet ekstraheres fra funktionen ved at sætte post-fixet $conf.int[1:2] efter funktionen - således at syntaksen bliver t.test(x, mu = mean(x))$conf.int[1:2]

mean(strokedata$age)
t.test(strokedata$age, mu = mean(strokedata$age))$conf.int[1:2]

[1] 10.03
[1] 9.682921 10.377079

Proportion

For at udregne konfidensintervallet for en proportion kan man både bruge funktionerne binom.test() og prop.test(). Resultaterne vil ikke være helt ens, men vil oftest være meget til på hinanden, så det gør ikke den store forskel hvilken funktion man bruger. Til forskel fra Wald konfidensintervaller risikerer man ikke med nogle af metoderne at intervallet strækker sig under 0 eller over 1.

Hvis 75 ud af 100 personer (75%) er mænd kan proportion og konfidensinterval udregnes således:

Exact konfidensinterval

  binom.test(x, n, conf.level = 0.95)$estimat
  binom.test(x, n, conf.level = 0.95)$conf.int[1:2]

binom.test(75, 100, conf.level = 0.95)$estimat
binom.test(75, 100, conf.level = 0.95)$conf.int[1:2]

probability of success
          0.75
[1] 0.6534475 0.8312203

Wilson konfidensinterval

  prop.test(x, n, conf.level = 0.95)$estimat
  prop.test(x, n, conf.level = 0.95)$conf.int[1:2]

prop.test(75, 100, conf.level = 0.95)$estimat
prop.test(75, 100, conf.level = 0.95)$conf.int[1:2]

p
0.75
[1] 0.6516159 0.8288245

Intervaller for variable med flere niveauer

Hvis en variable har flere niveauer kan det blive lidt omstændigt at udregne konfidensintervaller for hver proportion for sig selv. En måde at lette arbejdet lidt er at bruge pakken {dplyr} til først at udregne antal og procenter for hvert niveau og derefter til at udregne konfidensgrænserne for hver linje. Med {dplyr} kan man lave sekvenser af funktioner, der forbindes fremadrettet med en pipe (%>%); i udregningen nedenunder defineres først datasættet strokedata, hvorefter funktionen group_by bruges til at definere at alle udregninger fremadrettet skal stratificeres med variablen smoking; dernæst bruges funktionen summarise() til at udregne antallet i hvert strate og funktionen mutate() til at lave to nye udregner af totalen for alle strata og procent for hvert strata. Outputtet er en tabel i formattet tibble, som man via dplyr kan tilføje flere udregninger. Hvis man vil lave udregninger for hver linje i tabellen kan man indsætte funktionen rowwise() og derefter funktionen mutate() hvor der kan indsættes funktioner eller formler til at lave nye udregninger - i dette tilfælde binom.test()$conf.int[].

library(dplyr)
d.smoke = strokedata %>% # filter(!is.na(smoking)) %>%
  group_by(smoking) %>%
    summarise(n = n()) %>%
    mutate(total = sum(n), percent = n/total*100)
d.smoke = d.smoke %>%
  rowwise() %>%
  mutate(ci.lwr = binom.test(n,total,conf.level = 0.95)$conf.int[1]*100,
   ci.upr = binom.test(n,total,conf.level = 0.95)$conf.int[2]*100)
d.smoke

smoking n totalpercent ci.lwr ci.upr
<fctr> <int><int> <dbl> <dbl><dbl>
Current 299 1031 29.000970 26.245890 31.876494
Never 384 1031 37.24539334.285835 40.278008
Previous316 1031 30.649855 27.845747 33.564910
NA 32 1031 3.103783 2.132472 4.353531

Forskel på Exact og Wilson konfidensintervaller

Konfidensgrænser for henholdsvis Exact og Wilson konfidensintervaller for proportioner ved populationsstørrelserne 10, 20 og 40. Konfidensgrænserne ved begge metoder ligger tæt på hinanden og ved n=40 er de næsten ens.

REFERENCE INTERVAL

Referenceintervaller for normalværdier kan udregnes på baggrund af en variabel med funktionen qnorm(c( 0.5±( (1-αz)/2) ), mean(x), sd(x)), hvor x er variablen

Eksempel med 95% (α = 0.05) referenceinterval for alder i strokedata (0.5±( (1-0.05)/2) ) = 0.025; 0.975 )

qnorm(c(0.025, 0.975), mean(strokedata$age), sd(strokedata$age))

[1] 47.50168 96.19958