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

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

Jeżeli dysponujemy \(N\) wartościami \(x_1, x_2 \ldots x_N\) zmiennej o rozkładzie normalnym o nieznanej wariancji \(\sigma^2\), wtedy wartość średnia z pomiarów, czyli $$\frac{1}{N} \sum_{i=1}^{N} x_i$$ jest zmienną o rozkładzie t-Studenta i wariancji równej \(\frac{s_1^2}{N}\), jeśli przez \(s_1^2\) oznaczymy nieobciążony estymator wariancji taki że $$s_1 = \sqrt{\frac{1}{N-1} \sum_{i=1}^{N} (x_i - \bar{x})^2}.$$ Podobnie jak w przypadku znanej wariancji, 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} + t_{\alpha/2} \frac{s_1}{\sqrt{N}} ; \bar{x} + t_{(1-\alpha/2)} \frac{s_1}{\sqrt{N}} \right],$$ gdzie \(t_p\) jest kwantylem rozkładu t-Studenta o \(N-1\) stopniach swobody, który obliczymy z odwrotnej dystrybuanty. Możemy przy tym zauważyć, że z uwagi na symetrię rozkładu t-Studenta \(t_{\alpha/2} = -t_{(1-\alpha/2)}\), więc wystarczy obliczyć tylko jeden z nich.

import scipy.stats
import numpy
import math

# poziom istotności
alpha = 0.01

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

# estymujemy odchylenie standardowe
std = numpy.std(X, ddof=1)

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

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

# obliczamy prawy (dodatni) kwantyl z rozkładu t-Studenta
# moglibyśmy też wziąć ppf(alpha/2) ale wtedy t wyjdzie ujemne
t = scipy.stats.t(N-1).ppf(1-alpha/2)
# znajdujemy przedział ufności
print [ mean - t * std_mean, mean + t * std_mean ]
autor: Piotr Różański, ostatnia modyfikacja: 10.04.2016