R kode som illustrerer konfidensintervall (avsnitt 8.1)
# INNLEDENDE
EKSEMPEL
#
Anta at en kjemiker gj?r 5 m?linger av konsentrasjonen av et stoff i en kjemisk
blanding.
#
Det gir konsentrasjonene 4.85, 4.88, 5.13, 4.97 og 5.12 (m?leenheten kan v?re mmol/l).
#
Vi vil anta at konsentrasjonsm?lingene er normalfordelte med forventningsverdi m og
standardavvik s.
#
Her er m den faktiske konsentrasjonen (forutsatt
at det ikke er noen systematiske m?lefeil), mens s angir
presisjonen av m?lemetoden.
#
Vi vil (noe urealistisk) anta at det er kjent at standardavviket er 0.10.
#
Vi vil bestemme et 95% konfidensintervall for m.
#
Vi leser inn konsentrasjonsm?lingene:
x=c(4.85, 4.88, 5.13, 4.97, 5.12)
#
Vi betemmer nedre og ?vre grense for konfidensintervallet:
n=length(x)
s=0.10
l=mean(x)-1.96*s/sqrt(n)
u=mean(x)+1.96*s/sqrt(n)
c(l,u)
# SIMULERING AV KONFIDENSINTERVALL
# For ? illustrere fortolkningen av konfidensintervall (jf. sidene 378-9 i l?reboka), vil vi simulere 50 konfidensintervall og se hvor mange av dem som inneholder den sanne verdien av i m (som er kjent n?r vi simulerer, men ikke ellers)
#
Vi simulerer situasjonen med den kjemiske analysen B=50 ganger og regner ut et
konfidensintervall for hver av de 50 gangene. (Pr?v selv med andre verdier for
B.)
B=50
s=0.10
m=5
low=up=rep(0,B)
for (i in 1:B)
{
?? x=rnorm(n,m,s)
?? low[i]=mean(x)-1.96*s/sqrt(n)
?? up[i]=mean(x)+1.96*s/sqrt(n)
}
#
Vi skriver ut det 50 konfidensintervallene
cbind(low,up)
#
Vi teller opp hvor mange av konfidensintervallene som inneholder den sanne verdien m=5
sum((low<5)&(up>5))
#
Vi lager en figur som svarer til figuren p? side 379 i l?reboka (R koden
nedenfor er mer "avansert" og det er ikke n?dvendig at detaljene i
den er forst?tt):
plot(c(low[1],up[1]),c(1,1), xlim=c(4.7,5.3), ylim=c(0,B+1),
type='l',xlab="konfidensintervall",ylab="interval nummer")
lines(c(5,5),c(0,B+1),lty=3)
for (i in 2:B+1)
lines(c(low[i],up[i]),c(i,i))