Aangezien een predictie-interval een verbeterde versie is van een
referentie-interval bij ongekend populatie gemiddelde en de
standaardafwijking, kunnen we a.d.h.v. de lm(.)
functie
referentie-intervallen beter vervangen door predictie-intervallen. Het
PI zal eveneens de onzekerheid meenemen op de parameterschattingen
(gemiddelde en standard error).
Vergelijk referentie-interval voor cholesterolgehalte met predictie interval.
Referentie-interval
library(NHANES)
fem <- NHANES %>%
filter(Gender=="female"&!is.na(DirectChol))
2^(
fem %>%
pull(DirectChol) %>%
log2 %>%
mean +
c(-1,1) *
qnorm(0.975) *
(fem %>%
pull(DirectChol) %>%
log2 %>%
sd)
)
## [1] 0.8361311 2.4397130
lmChol <- lm(DirectChol %>% log2 ~ 1, data=fem)
predInt <- predict(
lmChol,
interval="prediction",
newdata=data.frame(noPred=1)
)
round(2^predInt,2)
## fit lwr upr
## 1 1.43 0.84 2.44
Merk op dat het voorspellingsinterval bijna gelijk is aan het referentie-interval voor de grote steekproef. We konden de parameters inderdaad heel precies schatten.
We zullen hetzelfde doen voor een kleine steekproef van 10 patiƫnten.
set.seed(1)
fem10 <- NHANES %>%
filter(Gender=="female"&!is.na(DirectChol)) %>%
sample_n(size=10)
2^(
fem10 %>%
pull(DirectChol) %>%
log2 %>%
mean +
c(-1,1) *
qnorm(0.975) *
(fem10 %>%
pull(DirectChol) %>%
log2 %>%
sd)
)
## [1] 0.8976012 2.2571645
Het referentie-interval is veel smaller dan in de grote steekproef.
lmChol10 <- lm(DirectChol %>% log2 ~ 1, data = fem10)
predInt10 <- predict(
lmChol10,
interval = "prediction",
newdata = data.frame(noPred=1)
)
round(2^predInt10, 2)
## fit lwr upr
## 1 1.42 0.81 2.49
Merk op dat het PI nu onzekerheid meeneemt in parameterschatters (gemiddelde en standaard error). En dat het interval veel breder wordt! Dit is hier vooral belangrijk voor de bovengrens omdat we de gegevens terug hebben getransformeerd!
Het interval is bijna net zo breed als dat gebaseerd op de grote steekproef.
Bij kleine steekproeven is het erg belangrijk om met deze extra onzekerheid rekening te houden.