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:
Usaldusnivoo | 68,27% | 90% | 95% | 99% | 99,73% |
Kattetegur | 1,00 | 1,65 | 1,96 | 2,58 | 3,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% |
1 | 6,31 | 12,71 | 63,66 |
2 | 2,92 | 4,30 | 9,92 |
3 | 2,35 | 3,18 | 5,84 |
4 | 2,13 | 2,78 | 4,60 |
5 | 2,02 | 2,57 | 4,03 |
10 | 1,81 | 2,23 | 3,17 |
20 | 1,72 | 2,09 | 2,85 |
∞ | 1,65 | 1,96 | 2,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)