Statystyka

Wariancja

Wariancja opisuje rozrzut danych wokół średniej, wykorzystując kwadraty odchyleń. Duże odchylenia mają przez to silny wpływ na wynik. Porównaj zbiory o tej samej średniej, ale różnym rozproszeniu.

Pierwszy przykład

import msstat

dane = [1, 1, 3, 5, 8]
wynik = msstat.wariancja(dane)
print(round(wynik, 6))

Wynik w konsoli (liczby dziesiętne zaokrąglono w kodzie tam, gdzie użyto round):

7.04

Eksperymentuj

Dla tych samych danych zmień proba=False na proba=True. Wynik wzrośnie z 7.04 do 8.8, bo dzielisz sumę kwadratów przez 4 zamiast przez 5.

import msstat

dane = [1, 1, 3, 5, 8]
wynik = msstat.wariancja(dane, proba=True)
print(round(wynik, 6))

Wynik w konsoli (liczby dziesiętne zaokrąglono w kodzie tam, gdzie użyto round):

8.8

Wariancja opiera się na kwadratach odchyleń od średniej. Wynik ma więc jednostkę danych podniesioną do kwadratu. Dodanie tej samej liczby do każdej obserwacji nie zmienia odchyleń ani wariancji.

Odkrywaj w swoim tempie

AParametry i wartości domyślne

Dane podajesz samodzielnie. Pierwszy przykład używa domyślnych wartości pozostałych parametrów.

msstat.wariancja(dane, proba=False)

dane - argument wymagany
Niepusta kolekcja danych.
proba=False
False oznacza dzielenie przez n; True przez n-1 i wymaga co najmniej dwóch obserwacji.

Dane muszą być skończonymi liczbami rzeczywistymi, bez wartości logicznych.

BZnaczenie wyniku i wzór
V={∑i=1n(xi-μ)2nproba = False∑i=1n(xi-μ)2n-1proba = True, n ≥ 2

Symbol μ oznacza średnią z tych samych danych. Dla proba=False używany jest mianownik n, a dla proba=True mianownik n-1 i wymagane są co najmniej dwie obserwacje. Wynik ma jednostkę danych podniesioną do kwadratu.

Dane są skończonymi liczbami rzeczywistymi, bez wartości logicznych. Parametr proba musi być dokładnie True albo False. Wariancja próby wymaga co najmniej dwóch obserwacji.

CZapis obliczenia w Pythonie

def oblicz(dane, proba=False):
    n = len(dane)
    if proba and n < 2:
        raise ValueError("Próba wymaga dwóch obserwacji")
    srednia = sum(dane)/n
    return sum((x-srednia)**2 for x in dane)/(n-1 if proba else n)

dane = [1, 1, 3, 5, 8]
print(oblicz(dane))

Spróbuj sam

Dodaj 100 do każdej obserwacji i porównaj wariancje. Następnie pomnóż dane przez 2: czy wariancja wzrośnie dwa czy cztery razy?

Dokładność, obszar obliczeń i ograniczenia środowiska