Skip to article frontmatterSkip to article content

11 - Estymacja parametrów

Estymacja punktowa i przedziałowa

Estymacja średniej

exec(open('est_p.py').read())
<Figure size 1600x800 with 2 Axes><Figure size 1400x800 with 1 Axes>
============================================================
PODSTAWOWE KONCEPCJE ESTYMACJI
============================================================

1. ESTYMACJA PUNKTOWA:
   • Jeden punkt jako oszacowanie parametru populacji
   • Przykład: x̄ = 48.12 jako estymator μ = 50

2. ESTYMACJA PRZEDZIAŁOWA:
   • Zakres wartości z określonym poziomem ufności
   • Przykład: 95% P.U. = [44.76, 51.48]

3. INTERPRETACJA PRZEDZIAŁU UFNOŚCI:
   • Jeśli powtórzymy procedurę 100 razy,
   • około 95 przedziałów będzie zawierało prawdziwą μ
   • W naszej symulacji: 100% przedziałów zawierało μ
============================================================

Zadanie 1.

Twoim zadaniem jest przeanalizowanie danych ankietowych dostępnych pod poniższym linkiem: surveydata3.csv. Analiza obejmuje oszacowanie średniej z przedziałami ufności, błędem standardowym, minimalną wielkością próby dla określonej dokładności oraz oszacowanie proporcji.

  • Dane są ładowane z pliku CSV dostępnego pod następującym linkiem: surveydata3.csv.

  • Zbiór danych zawiera 753 wiersze i 55 kolumn, w tym różne zmienne demograficzne i odpowiedzi ankietowe.

  • Szczegółowy opis zbioru danych można znaleźć tutaj.

Instrukcje

Załaduj dane:

  • Załaduj dane z pliku CSV.

  • Oblicz średnią liczbę godzin snu na dobę.

  • Oblicz odsetek osób, które chcą kupić gadżety Udacity.

Oszacowanie średniej:

  • Oblicz średnią liczby godzin snu na dobę studentów Udemy.

  • Oblicz przedział ufności dla średniej.

  • Oblicz błąd standardowy.

  • Oblicz minimalną wielkość próby wymaganą do osiągnięcia określonej dokładności (np. 3%).

  • Wizualizuj wyniki za pomocą wykresu pudełkowego (średnia, błędy standardowe, przedział ufności).

import pandas as pd
import matplotlib.pyplot as plt

url = 'https://raw.githubusercontent.com/juanspinzon/survey-data/refs/heads/main/clean_surveydata3.xlsx?raw=true'
df = pd.read_excel(url, engine='openpyxl')
dane = df["sleep hours per night"]
dane = dane.dropna()
print(dane.head())

plt.hist(dane,bins=10);
2    7.0
3    7.0
4    8.0
5    6.0
6    8.0
Name: sleep hours per night, dtype: float64
<Figure size 640x480 with 1 Axes>
# twoje rozwiązanie tutaj
# Odkomentuj następującą linię, aby zobaczyć rozwiązanie:
# %load ./solutions/solution11.py

Estymacja wariancji

Dlaczego stosujemy rozkład chi-kwadrat (χ²) w estymacji wariancji?

Podstawowe wyjaśnienie

Rozkład chi-kwadrat pojawia się naturalnie przy estymacji wariancji z bardzo konkretnego powodu matematycznego. Oto proste wyjaśnienie:

1. Punkt wyjścia - rozkład normalny

Jeśli mamy próbkę z rozkładu normalnego:

X1,X2,,XnN(μ,σ2)X_1, X_2, \ldots, X_n \sim N(\mu, \sigma^2)

2. Standaryzacja obserwacji

Każdą obserwację możemy wystandaryzować:

Zi=XiμσN(0,1)Z_i = \frac{X_i - \mu}{\sigma} \sim N(0,1)

3. Suma kwadratów zmiennych standardowych

Gdy podnosimy do kwadratu i sumujemy standardowe zmienne normalne:

i=1nZi2=i=1n(Xiμσ)2χ2(n)\sum_{i=1}^{n} Z_i^2 = \sum_{i=1}^{n} \left(\frac{X_i - \mu}{\sigma}\right)^2 \sim \chi^2(n)

To już jest rozkład chi-kwadrat z nn stopniami swobody.

4. Problem w praktyce - nieznana średnia

W praktyce nie znamy μ\mu, więc używamy Xˉ\bar{X}:

i=1n(XiXˉσ)2\sum_{i=1}^{n} \left(\frac{X_i - \bar{X}}{\sigma}\right)^2

5. Kluczowe twierdzenie Fishera

Twierdzenie Fishera mówi, że:

i=1n(XiXˉ)2σ2=(n1)s2σ2χ2(n1)\frac{\sum_{i=1}^{n}(X_i - \bar{X})^2}{\sigma^2} = \frac{(n-1)s^2}{\sigma^2} \sim \chi^2(n-1)

gdzie:

  • s2=i=1n(XiXˉ)2n1s^2 = \frac{\sum_{i=1}^{n}(X_i - \bar{X})^2}{n-1} - wariancja próbkowa

  • Tracimy jeden stopień swobody przez szacowanie średniej

6. Dlaczego chi-kwadrat?

Chi-kwadrat powstaje, ponieważ:

  1. Suma kwadratów: Wariancja to średnia z kwadratów odchyleń

  2. Zmienne normalne: Zakładamy normalność populacji

  3. Strata stopni swobody: Szacowanie średniej “kosztuje” jeden stopień swobody

Matematyczne uzasadnienie

Rozkład wariancji próbkowej:
(n1)s2σ2χ2(n1)\frac{(n-1)s^2}{\sigma^2} \sim \chi^2(n-1)
Gęstość chi-kwadrat:
f(x)=12k/2Γ(k/2)xk/21ex/2,x0f(x) = \frac{1}{2^{k/2}\Gamma(k/2)} x^{k/2-1} e^{-x/2}, \quad x \geq 0

gdzie k=n1k = n-1 to stopnie swobody.

Praktyczne konsekwencje

Przedział ufności dla wariancji:
P(χα/2,n12(n1)s2σ2χ1α/2,n12)=1αP\left(\chi^2_{\alpha/2, n-1} \leq \frac{(n-1)s^2}{\sigma^2} \leq \chi^2_{1-\alpha/2, n-1}\right) = 1-\alpha
Przekształcając na σ2\sigma^2:
P((n1)s2χ1α/2,n12σ2(n1)s2χα/2,n12)=1αP\left(\frac{(n-1)s^2}{\chi^2_{1-\alpha/2, n-1}} \leq \sigma^2 \leq \frac{(n-1)s^2}{\chi^2_{\alpha/2, n-1}}\right) = 1-\alpha

Właściwości rozkładu chi-kwadrat

  1. Wartości nieujemne: χ20\chi^2 \geq 0 (wariancja nie może być ujemna)

  2. Asymetria: Rozkład jest prawostronnie skośny

  3. Wartość oczekiwana: E[χk2]=kE[\chi^2_k] = k

  4. Wariancja: Var[χk2]=2k\text{Var}[\chi^2_k] = 2k

Warunki stosowania

Rozkład chi-kwadrat dla wariancji jest poprawny tylko gdy:

  • Populacja ma rozkład normalny

  • Obserwacje są niezależne

  • Próbka jest losowa

Intuicyjne wyjaśnienie

Wyobraź sobie, że:

  1. Mierzysz odchylenia od średniej: (XiXˉ)(X_i - \bar{X})

  2. Podnosisz je do kwadratu: (XiXˉ)2(X_i - \bar{X})^2

  3. Sumujesz wszystkie: (XiXˉ)2\sum(X_i - \bar{X})^2

Ta suma kwadratów odchyleń, przeskalowana przez prawdziwą wariancję, ma rozkład chi-kwadrat. To naturalna konsekwencja matematyki rozkładu normalnego.

Porównanie z rozkładem t-Studenta

ParametrRozkład tRozkład χ²
EstymacjaŚrednia μ\muWariancja σ2\sigma^2
Gdy σ² jestNieznanaSzacowana
StatystykaXˉμs/n\frac{\bar{X}-\mu}{s/\sqrt{n}}(n1)s2σ2\frac{(n-1)s^2}{\sigma^2}
SymetrycznyTakNie (prawostronna skośność)
Zakres(,+)(-\infty, +\infty)[0,+)[0, +\infty)

Kluczowe wnioski

  • Chi-kwadrat używamy dla wariancji, bo matematycznie tak wynika z teorii

  • Jedna średnia = jeden stopień swobody mniej

  • Tylko dla rozkładu normalnego!

  • Przedziały ufności są asymetryczne (w przeciwieństwie do średniej)

exec(open('est_war.py').read())
<Figure size 1400x1000 with 1 Axes>

Zadanie 2.

Oszacowanie wariancji:

  • Oblicz wariancję i odchylenie std. liczby godzin snu na dobę studentów Udemy.

  • Oblicz 95% przedział ufności dla wariancji.

# twoje rozwiązanie tutaj

Estymacja proporcji

exec(open('est_prop.py').read())
<Figure size 1400x800 with 1 Axes><Figure size 1500x1200 with 4 Axes><Figure size 1500x600 with 2 Axes><Figure size 1400x1000 with 1 Axes>
======================================================================
PODSUMOWANIE ESTYMACJI PROPORCJI
======================================================================
Prawdziwa proporcja populacji: p = 0.3
Wielkosc probki: n = 100

WYNIKI ESTYMACJI:
Liczba sukcesow: 32
Proporcja probkowa: p^ = 0.320
Blad standardowy: SE(p^) = 0.047
95% Przedzial ufnosci: [0.229, 0.411]
Margines bledu: ±0.091

SPRAWDZENIE REGULY 5:
np^ = 32.0 ≥ 5: TAK
n(1-p^) = 68.0 ≥ 5: TAK

WERYFIKACJA:
Czy przedzial zawiera prawdziwa wartosc? TAK
Szerokosc przedzialu: 0.183

Zadanie 3.

Oszacowanie proporcji:

  • Oblicz proporcję osób, które chcą kupić gadżety Udacity.

  • Oblicz przedział ufności dla tej proporcji.

  • Oblicz błąd standardowy.

  • Oblicz minimalną wielkość próby wymaganą do osiągnięcia określonej dokładności (np. 3%).

  • Wizualizuj wyniki za pomocą wykresu pudełkowego (proporcja, błędy standardowe, przedział ufności).

# twoje rozwiązanie tutaj

Zadanie domowe

Twoim zadaniem jest przeanalizowanie danych ankietowych “Diagnoza społeczna” przeprowadzanych przez wiele lat w Polsce.

Dane są ładowane z pliku CSV dostępnego w kategorii data/ankiety. W pliku “diagnozaDict.csv” znajdują się szczegółowe opisy pytań zadanych respondentom.

Instrukcje

Załaduj dane:

  • Załaduj dane z pliku CSV.

  • Oblicz średnią zmiennej “gp64” - p64 Pana/Pani własny (osobisty) dochod miesieczny netto (na reke).

  • Oblicz odsetek osób, które *** (np. odpowiedziały na pytanie g54_04 “sukces w życiu odzwierciedlają posiadane dobra materialne”: “ZDECYDOWANIE TAK”, wg płci) *** lub inne kategoryczne wg płci.

Oszacowanie średniej i odsetka:

  • Oblicz przedział ufności dla średniej i odsetka.

  • Oblicz ich błędy standardowe.

  • Zwizualizuj wyniki za pomocą wykresu pudełkowego (średnia, błędy standardowe, przedział ufności).

ankieta = pd.read_csv("data/ankiety/diagnoza.csv")
ankieta.head()
Loading...
# twoje rozwiązanie tutaj

Załącznik

Przydatne funkcje Pythona w estymacji

W załączniku do tego rozdziału “funkcje_est.py” znajdziecie zestaw przydatnych funkcji Pythona, które można wykorzystać w estymacji parametrów populacji.

Zwróć uwagę, że w przypadku wizualizowania wyników wraz z estymacją - istnieje wiele rozwiązań graficznych, wedle uznania.

# exec(open('funkcje_est.py').read())