Jak wyznaczyć przedział ufności dla wartości oczekiwanej?

dla wartości z rozkładu normalnego o znanej wariancji

Jeżeli dysponujemy \(N\) wartościami \(x_1, x_2 \ldots x_N\) zmiennej o rozkładzie normalnym o znanej wariancji \(\sigma^2\), wtedy wartość średnia z pomiarów, czyli $$\frac{1}{N} \sum_{i=1}^{N} x_i$$ jest również zmienną o rozkładzie normalnym i wariancji równej \(\frac{\sigma^2}{N}\). Wartość oczekiwana średniej jest równa wartości oczekiwanej rozkładu (nieznane \(\mu\)).

Jako miarę pewności oszacowania, ustalamy poziom istotności \(\alpha\) jako maksymalne prawdopodobieństwo, że nasz przedział nie obejmie wartości oczekiwanej. Zazwyczaj przyjmujemy w tym celu wartość \(\alpha = 0.05\) lub mniejszą.

Przedział ufności dla wartości oczekiwanej możemy obliczyć jako $$\left[ \bar{x} + z_{\alpha/2} \frac{\sigma}{\sqrt{N}} ; \bar{x} + z_{(1-\alpha/2)} \frac{\sigma}{\sqrt{N}} \right],$$ gdzie \(z_p\) jest kwantylem rozkładu normalnego \(N(0,1)\), który obliczymy z odwrotnej dystrybuanty. Możemy przy tym zauważyć, że z uwagi na symetrię rozkładu normalnego \(z_{\alpha/2} = -z_{(1-\alpha/2)}\), więc wystarczy obliczyć tylko jeden z nich.

import scipy.stats
import numpy
import math

# poziom istotności
alpha = 0.01

# znana wariancja rozkładu
sigma = 0.667

# dane wejściowe
N = 5
X = [1.2, 2.3, 3.1, 1.7, 2.5]

# obliczamy średnią
mean = numpy.mean(X)

# obliczamy odchylenie standardowe średniej
std_mean = sigma / math.sqrt(N)

# --- WERSJA 1 ---
# obliczamy prawy (dodatni) kwantyl z rozkładu normalnego
# moglibyśmy też wziąć ppf(alpha/2) ale wtedy z wyjdzie ujemne
z = scipy.stats.norm.ppf(1-alpha/2)
# znajdujemy przedział ufności
print [ mean - z * std_mean, mean + z * std_mean ]

# --- WERSJA 2 ---
# obliczamy kwantyle z rozkładu normalnego N(mean, std_mean)
# czyli de facto od razu przedział ufności
print scipy.stats.norm(mean, std_mean).ppf([alpha/2, 1-alpha/2])
autor: Piotr Różański, ostatnia modyfikacja: 10.04.2016