Jak wyznaczyć przedział ufności dla wariancji?

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

Jeżeli dysponujemy \(N\) wartościami \(x_1, x_2 \ldots x_N\) zmiennej o rozkładzie normalnym i wariancji (nieznanej) \(\sigma^2\), wtedy wartość $$\frac{N s_0^2}{\sigma^2} = \frac{1}{\sigma^2} \sum_{i=1}^{N} (x_i - \bar{x})$$ (gdzie \(s_0^2\) jest obciążonym estymatorem wariancji) podlega rozkładowi \(\chi^2\) o \(N-1\) stopniach swobody.

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 wariancji możemy obliczyć jako $$\left[ \frac{N s_0^2}{\chi^2_{(1-\alpha/2)}} ; \frac{N s_0^2}{\chi^2_{\alpha/2}} \right],$$ gdzie \(\chi^2_p\) jest kwantylem rozkładu „chi kwadrat” o \(N-1\) stopniach swobody, który obliczymy z odwrotnej dystrybuanty. Warto zwrócić uwagę, że rozkład nie jest symetryczny, więc w przeciwieństwie do rozkładu normalnego musimy obliczyć osobno oba kwantyle.

import scipy.stats
import numpy

# poziom istotności
alpha = 0.01

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

# estymujemy wariancję próby
s2 = numpy.var(X)  # to samo co numpy.std(X) ** 2

# obliczamy kwantyle z odwrotnej dystrybuanty rozkładu chi-kwadrat
chiL = scipy.stats.chi2(N-1).ppf(alpha/2)
chiP = scipy.stats.chi2(N-1).ppf(1-alpha/2)

# znajdujemy przedział ufności
print [ s2 * N / chiP, s2 * N / chiL ]
# warto pamiętać, że kwantyl „mniejszy” wyznacza prawy koniec przedziału
# (bo jest w mianowniku) i vice versa
autor: Piotr Różański, ostatnia modyfikacja: 10.04.2016