I p-value
Fa parte della sezione Statistica per il machine learning del percorso Machine Learning di Coddy. Lezione 44 di 64.
Il valore p trasforma gli rimescolamenti in un unico numero: la proporzione di differenze fittizie almeno grandi quanto quella reale, in entrambe le direzioni.
Nel codice, per lo studio dei font:
real = sans.mean() - serif.mean()
rng = np.random.default_rng(4)
diffs = shuffled_diffs(serif, sans, 1000, rng) # il ciclo della lezione precedente
p_value = (np.abs(diffs) >= np.abs(real)).mean()
print(p_value)Questo stampa 0.039. np.abs considera uno scarto di -7 grande quanto uno di 7: la domanda è se i caratteri differiscono affatto.
Al di sotto del livello di significatività, spesso 0.05, il caso è una spiegazione poco plausibile, per il guadagno di un carattere tipografico o di un modello. Non è una prova: 4 rimescolamenti su 100 ci sono comunque riusciti.
Sfida
MedioUna fattoria annaffia le fragole al mattino o alla sera. Il codice iniziale divide strawberries.csv in morning e evening, elenca columns, legge level e definisce shuffled_diffs.
- Per ogni colonna, calcola la differenza reale (media serale meno media mattutina), le differenze mescolate (prima il mattino) e il valore p.
- Stampa una riga per colonna come sotto (differenza con 2 decimali, p con 3):
differsquando p è inferiore alevel. - Conta quelle che differiscono.
Un'altra fattoria, livello 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 4Provalo tu
import numpy as np
import pandas as pd
# Restituisce le differenze rimescolate di un test di permutazione (il ciclo della lezione 43): media simulata di b meno media simulata di 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())
# Non modificare le righe qui sotto
rng = np.random.default_rng(21)
shuffles = 1000
# Scrivi il tuo codice qui sotto
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Statistica per il machine learning
1Centro e dispersione
Media e medianaPercentili e quartiliVarianza e deviazione standardCampione o popolazione?Il valore più frequenteRiepilogo: tempi di consegna4Campioni e popolazioni
Popolazione e campioneLe medie campionarie varianoDistribuzione campionariaCampioni più grandi, meno rumoreRiepilogo: sondare una città7Linee di tendenza
ResiduiAdattamento dei minimi quadratiTracciare la retta di adattamentoFare previsioni con una rettaQuanto è buono l’adattamento?Riepilogo: ore di pratica10Codifica delle categorie
Categorie come numeriCodifica one-hotRaggruppamento dei numeri in intervalliRiepilogo: annunci di auto2Distribuzioni
Istogrammi di densitàForme dei datiCurva normaleRegola 68-95-99,7Punteggi ZRiepilogo: durata della batteria5Valori anomali
Diagrammi a scatolaLa regola dell'IQRLa regola dello z-scoreGestire i valori anomaliRiepilogo: anomalie dei sensori8Confrontare gruppi
Diagrammi a scatola per gruppoDifferenza tra le mediePotrebbe essere solo caso?I p-valueIl test tRiepilogo: test A/B3Probabilità tramite simulazione
La probabilità come frequenzaLa legge dei grandi numeriSomme dei dadiValore attesoProbabilità condizionataRiepilogo: probabilità al banco dei dadi6Relazioni
Leggere i grafici a dispersioneCorrelazioneMatrice di correlazioneMappe di calore della correlazioneCorrelazione non significa causalitàRiepilogo: gelato e soleEsercitati da solo: Compilatore Python online