Wartości p
Część sekcji Statystyka w uczeniu maszynowym ścieżki Machine Learning w Coddy. Lekcja 44 z 64.
Wartość p zamienia permutacje w jedną liczbę: odsetek pozornych różnic co najmniej tak dużych jak rzeczywista, w obu kierunkach.
W kodzie, na potrzeby badania czcionek:
real = sans.mean() - serif.mean()
rng = np.random.default_rng(4)
diffs = shuffled_diffs(serif, sans, 1000, rng) # pętla z poprzedniej lekcji
p_value = (np.abs(diffs) >= np.abs(real)).mean()
print(p_value)To wypisuje 0.039. np.abs traktuje różnicę wynoszącą -7 jako tak dużą jak 7: chodzi o to, czy czcionki w ogóle się różnią.
Poniżej poziomu istotności, często wynoszącego 0.05, przypadek słabo tłumaczy poprawę czcionki lub modelu. To nie jest dowód: 4 na 100 przetasowań nadal dały taki efekt.
Wyzwanie
ŚredniGospodarstwo podlewa truskawki rano lub wieczorem. Kod startowy dzieli plik strawberries.csv na morning i evening, wyświetla listę columns, odczytuje level i definiuje shuffled_diffs.
- Dla każdej kolumny oblicz rzeczywistą różnicę (średnia wieczorem minus średnia rano), przetasowane różnice (najpierw rano) i wartość p.
- Wypisz wiersz dla każdej kolumny, jak poniżej (różnica z 2 miejscami po przecinku, p z 3):
differs, gdy p jest mniejsze niżlevel. - Policz te, dla których występuje różnica.
Inne gospodarstwo, poziom 0.05:
berries: difference -5.4, p = 0.009, differs
weight_g: difference 0.2, p = 1.0, could be chance
sweetness_brix: difference 0.46, p = 0.022, differs
leaf_spots: difference 0.6, p = 0.397, could be chance
Columns that differ: 2 of 4Spróbuj swoich sił
import numpy as np
import pandas as pd
# Zwraca różnice po przetasowaniu w teście permutacyjnym (pętla z lekcji 43): średnia dla sztucznej próby b minus średnia dla sztucznej próby a
def shuffled_diffs(a, b, shuffles, rng):
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())
return np.array(diffs)
beds = pd.read_csv("strawberries.csv")
morning = beds[beds["watering"] == "morning"]
evening = beds[beds["watering"] == "evening"]
columns = ["berries", "weight_g", "sweetness_brix", "leaf_spots"]
level = float(input())
# Nie zmieniaj poniższych wierszy
rng = np.random.default_rng(21)
shuffles = 1000
# 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ów8Porównywanie grup
Wykresy pudełkowe według grupRóżnica średnichCzy to może być przypadek?Wartości pTest tPodsumowanie: test A/B3Prawdopodobień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