statistics.NormalDist în Python

Statistică Python 3.8+ (zscore: 3.9+)

Distribuția normală ca obiect: probabilități, percentile, scoruri z și eșantioane.

Sintaxă
d = statistics.NormalDist(mu=0.0, sigma=1.0)
d.cdf(x), d.pdf(x), d.inv_cdf(p), d.zscore(x), d.quantiles(n=4)
d.overlap(alta), d.samples(n), NormalDist.from_samples(date)

Ce face statistics.NormalDist

NormalDist(mu, sigma) descrie o distribuție normală cu media mu și abaterea standard sigma. cdf(x) dă probabilitatea ca o valoare să fie cel mult x; inv_cdf(p) face invers (valoarea sub care se află proporția p); pdf(x) este densitatea; zscore(x) spune la câte abateri standard de medie este x.

quantiles(n) împarte distribuția în n părți egale, overlap(alta) dă suprapunerea dintre două distribuții (între 0 și 1), samples(n, seed=...) generează valori aleatoare, iar NormalDist.from_samples(date) estimează distribuția din date. Atributele mean, median, mode, stdev, variance descriu distribuția.

Parametri

Parametru Descriere
mu Media.
sigma Abaterea standard.

Ce returnează

Un obiect NormalDist.

Exemple

Exemplul 1: Rezultate la un test

from statistics import NormalDist
test = NormalDist(mu=70, sigma=10)
print(round(test.cdf(85), 4))
print(round(1 - test.cdf(90), 4))
print(round(test.inv_cdf(0.95), 1))
print(test.zscore(85), round(test.pdf(70), 4))
print([round(q, 1) for q in test.quantiles(4)])

Rezultat

0.9332
0.0228
86.4
1.5 0.0399
[63.3, 70.0, 76.7]

Exemplul 2: Estimare din date, suprapunere și eșantioane

from statistics import NormalDist
d = NormalDist.from_samples([168, 172, 175, 169, 181, 177, 170])
print(round(d.mean, 2), round(d.stdev, 2))
barbati, femei = NormalDist(176, 7), NormalDist(164, 6)
print(round(barbati.overlap(femei), 3))
print([round(x, 1) for x in NormalDist(0, 1).samples(3, seed=42)])

Rezultat

173.14 4.74
0.354
[0.4, -2.0, -0.6]

Greșeli frecvente

  • Dai lui inv_cdf o valoare de 0 sau 1: rezultatul ar fi infinit, așa că primești StatisticsError.

Comenzi înrudite