Oletagem, et füüsikalise suuruse korduva mõõtmise teel oleme saanud rea mõõteväärtuseid $x_1,x_2,\ldots,x_n$. Kuna kõik mõõdised on võrdse kaaluga, siis füüsikalise suuruse tõelise väärtuse hinnanguks võtame nende aritmeetilise keskmise $$\bar x=\frac{\sum x_i}{n}.$$ Selle annab numpy.mean või NumPy massiivi samanimeline meetod:

mõõdised = np.array((34.43, 34.30, 34.55, 33.23, 34.53, 34.33, 34.69, 33.90, 35.02))
keskmine = mõõdised.mean()

Üksikmõõtmiste hajuvust iseloomustab eksperimentaalne standardhälve $$s_x=\sqrt{\frac{\sum (x_i-\bar x)^2}{n-1}}.$$ Siin jagatakse $(n-1)$-ga, sest üks vabadusaste sai juba ära kasutatud $x$ keskväärtuse hindamiseks.

Aritmeetiline keskmine $\bar x$ on samuti juhuslik suurus. Selgub, et selle standardhälve on $\sqrt n$ korda väiksem üksikmõõtmise standardhälbest: $$s_{\bar x}=\frac{s_x}{\sqrt n}=\sqrt{\frac{\sum (x_i-\bar x)^2}{n(n-1)}}.$$ See kvantiteet võetaksegi statistilise ehk A-tüüpi määramatuse hinnanguks.

Standardhälvet arvutav numpy funktsioon std kasutab vaikimisi nimetajas tegurit $n$, mitte $n−1$, kuid seda saab muuta andes funktsioonile nimelise argumendi ddof=1 (delta degrees of freedom). Seega aritmeetilise keskmise standardhälbe saame nii:

standardhälve = mõõdised.std(ddof=1)/sqrt(len(mõõdised))

Standardmääramatus tuleb omakorda läbi korrutada eeldatavale jaotusfunktsioonile ja soovitavale usaldusnivoole vastava katteteguriga, andes tulemuseks laiendmääramatuse. Kui eeldada, et juhuslik muutuja $\bar x$ on normaaljaotusega, siis kattetegurid on järgmised:

Usaldusnivoo68,27%90%95%99%99,73%
Kattetegur1,001,651,962,583,00

Vähese arvu mõõdiste korral on normaaljaotuse eeldusest saadav usaldusnivoo ülehinnatud, st määramatus on tegelikult suurem. Sel juhul on $\bar x$ tõepärasemalt kirjeldatav Student'i $t$-jaotusega, mille jaoks kattetegurid (sõltuvana vabadusastmete arvust $\nu$) on järgmised:

$\nu$90%95%99%
16,3112,7163,66
22,924,309,92
32,353,185,84
42,132,784,60
52,022,574,03
101,812,233,17
201,722,092,85
1,651,962,58

Pythonis Student'i $t$-jaotust esindab objekt scipy.stats.t. Selle koosseisus on olemas ka kvantiilfunktsioon ppf (percent point function), mille kaudu saame leida katteteguri meelevaldse vabadusastmete arvu jaoks:

import scipy.stats

usaldusnivoo = 0.95
vabadusastmeid = len(mõõdised) - 1
kattetegur = scipy.stats.t.ppf(0.5 + usaldusnivoo/2, vabadusastmeid)
määramatus = kattetegur * standardhälve

Viimaks trükime ekraanile mõõteväärtuse koos määramatusega. Määramatuse puhul säilitatakse tüüpiliselt kaks tüvenumbrit ja mõõteväärtus esitatakse määramatuse viimase komakoha täpsusega:

print("x = %.2f ± %.2f (usaldusnivool 95%%, kattetegur %.2f)" % (keskmine, määramatus, kattetegur))

# x = 73.042 ± 0.019 (usaldusnivool 95%, kattetegur 2.31)

Vaata lisaks

Sisukord