Menu
CoddyTech

Większe próby, mniej szumu

Część sekcji Statystyka w uczeniu maszynowym ścieżki Machine Learning w Coddy. Lekcja 22 z 64.

Większe próby dają lepsze oszacowania, ale o ile lepsze? Oto 1000 średnich z 25 koszyków zakupowych oraz 1000 średnich ze 100 koszyków:

Dwa rozkłady dzwonowe średnich liczby produktów w koszyku, oba wyśrodkowane w pobliżu 30. Średnie z 25 koszyków w kolorze szarym rozciągają się od około 20 do 40; średnie ze 100 koszyków w kolorze niebieskim tworzą rozkład dzwonowy o połowę węższy

sample_means mierzy każde rozproszenie. Błąd standardowy, std / np.sqrt(n), przewiduje je bez symulacji:

for n in [25, 100]:
    spread = sample_means(baskets, n, 1000).std()
    print(n, np.round(spread, 2), np.round(baskets.std() / np.sqrt(n), 2))

To wyświetla:

25 3.43 3.45
100 1.72 1.72

Cztery razy więcej danych, o połowę mniej szumu: tak działa pierwiastek kwadratowy. Model przetestowany na 400 przykładach ma wynik dwa razy dokładniejszy niż model przetestowany na 100.

challenge icon

Wyzwanie

Średni

bags zawiera wagi 5000 worków mąki z młyna, wyrażone w gramach. Kontrola jakości waży próbkę co godzinę; program odczytuje akceptowany przez nią błąd standardowy.

  1. Znajdź najmniejsze n, dla którego błąd standardowy, bags.std() / np.sqrt(n), jest nie większy od podanej wartości: zacznij od 1 i zwiększaj o 1, dopóki wartość jest za duża.
  2. Sprawdź wynik: odchylenie standardowe 300 średnich z próbek uzyskanych za pomocą sample_means.
  3. Wypisz wynik jak poniżej, z dokładnością do 2 miejsc po przecinku.

Dla innego młyna i wartości 2.5:

Bags to weigh: 24
Standard error: 2.46 g
Simulated spread: 2.37 g

Spróbuj swoich sił

import numpy as np

target = float(input())

# Nie zmieniaj poniższych wierszy: masa każdej torebki mąki w gramach
rng = np.random.default_rng(22)
bags = np.round(rng.normal(500, 8, size=5000), 1)


# Twoja funkcja z Sample Means Vary: średnie z count próbek
def sample_means(data, size, count):
    means = []
    for i in range(count):
        sample = rng.choice(data, size=size, replace=False)
        means.append(sample.mean())
    return np.array(means)


# Napisz swój kod poniżej
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Statystyka w uczeniu maszynowym

Poćwicz samodzielnie: Kompilator Python online