Jak wyznaczyć przedział ufności dla wariancji?

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

Jeżeli dysponujemy \(N\) wartościami \(x_1, x_2 \ldots x_N\) zmiennej o rozkładzie normalnym, znanej wartości oczekiwanej \(\mu\) i wariancji (nieznanej) \(\sigma^2\), wtedy wartość $$\frac{N s^2}{\sigma^2} = \frac{1}{\sigma^2} \sum_{i=1}^{N} (x_i - \mu)$$ (gdzie \(s^2\) jest estymatorem wariancji przy znanej wartości oczekiwanej) podlega rozkładowi \(\chi^2\) o \(N\) 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^2}{\chi^2_{(1-\alpha/2)}} ; \frac{N s^2}{\chi^2_{\alpha/2}} \right],$$ gdzie \(\chi^2_p\) jest kwantylem rozkładu „chi kwadrat” o \(N\) 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 = numpy.array([1.2, 2.3, 3.1, 1.7, 2.5])
mu = 2.222  # znana wartość oczekiwana

# estymujemy wariancję próby
s2 = numpy.sum( (X - mu)**2 ) / N

# obliczamy kwantyle z odwrotnej dystrybuanty rozkładu chi-kwadrat
chiL = scipy.stats.chi2(N).ppf(alpha/2)
chiP = scipy.stats.chi2(N).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