Test t
Część sekcji Statystyka w uczeniu maszynowym ścieżki Machine Learning w Coddy. Lekcja 45 z 64.
Zanim pojawiły się komputery, statystyka miała skrót: test t. Wzór od razu przekształca średnie, rozrzuty i liczebności grup w wartość p:
from scipy import stats
result = stats.ttest_ind(sans, serif)
print(np.round(result.pvalue, 3))
print(np.round(result.statistic, 2))W badaniu czcionek ten kod wypisuje 0.031 i -2.61. 1000 przetasowań dało 0.039: jak zwykle, całkiem blisko.
Wartość t to różnica wyrażona w błędach standardowych; jej znak wskazuje tylko, która grupa była pierwsza. Wzór zakłada dane o rozkładzie dzwonowym, więc przy małych, skośnych grupach zaufaj tasowaniu.
Sprawdza również, czy jeden model rzeczywiście przewyższa drugi.
Wyzwanie
ŚredniProducent farby zmierzył czas schnięcia trzech wykończeń. Kod początkowy umieszcza czas schnięcia każdego wykończenia w times, wymienia trzy pairs, definiuje permutation_p(a, b) i odczytuje level.
- Wypisz wartość p z testu t dla matowego i satynowego wykończenia obok wartości uzyskanej przez tasowanie.
- Przetestuj każdą parę, zaczynając od wykończenia wymienionego jako pierwsze, i wypisz parę z najmniejszą wartością p.
- Policz pary, dla których wartość p jest mniejsza od
level.
Zaokrąglij wartości p do 3 miejsc po przecinku. Inny producent, poziom 0.05:
matte vs satin: t-test 0.012, simulation 0.023
Clearest difference: satin vs gloss (p = 0.0)
Pairs that differ: 3 of 3Spróbuj swoich sił
import numpy as np
import pandas as pd
from scipy import stats
# Test permutacyjny z dwóch poprzednich lekcji: zwraca wartość p dla porównania a z b
def permutation_p(a, b, shuffles=1000, seed=0):
rng = np.random.default_rng(seed)
pooled = np.concatenate([a, b])
diffs = []
for i in range(shuffles):
shuffled = rng.permutation(pooled)
diffs.append(shuffled[len(a):].mean() - shuffled[:len(a)].mean())
real = b.mean() - a.mean()
return (np.abs(np.array(diffs)) >= np.abs(real)).mean()
paint = pd.read_csv("paint.csv")
times = {
"matte": paint[paint["finish"] == "matte"]["minutes"],
"satin": paint[paint["finish"] == "satin"]["minutes"],
"gloss": paint[paint["finish"] == "gloss"]["minutes"],
}
pairs = [("matte", "satin"), ("matte", "gloss"), ("satin", "gloss")]
level = float(input())
# Napisz swój kod poniżej
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
1Położenie i rozproszenie
Średnia i medianaPercentyle i kwartyleWariancja i odchylenie standardowePróba czy populacja?Najczęściej występująca wartośćPodsumowanie: czasy dostaw4Próby i populacje
Populacja i próbaŚrednie z prób się różniąRozkład próbkowaniaWiększe próby, mniej szumuPodsumowanie: ankietowanie mieszkańców2Rozkłady
Histogramy gęstościKształty danychKrzywa normalnaReguła 68-95-99,7Wyniki standaryzowane (Z-scores)Podsumowanie: czas pracy baterii5Obserwacje odstające
Wykresy pudełkoweReguła IQRReguła Z-scorePostępowanie z obserwacjami odstającymiPodsumowanie: błędy czujników3Prawdopodobieństwo przez symulację
Prawdopodobieństwo jako częstośćPrawo wielkich liczbSumy oczekWartość oczekiwanaPrawdopodobieństwo warunkowePodsumowanie: szanse na stoisku z kośćmi6Relacje
Odczytywanie wykresów punktowychKorelacjaMacierz korelacjiMapy cieplne korelacjiKorelacja nie oznacza przyczynowościPodsumowanie: lody i słońcePoćwicz samodzielnie: Kompilator Python online