Il test t
Fa parte della sezione Statistica per il machine learning del percorso Machine Learning di Coddy. Lezione 45 di 64.
Prima dei computer, la statistica aveva una scorciatoia: il t-test. Una formula trasforma le medie, le dispersioni e le dimensioni dei gruppi in un p-value in un colpo solo:
from scipy import stats
result = stats.ttest_ind(sans, serif)
print(np.round(result.pvalue, 3))
print(np.round(result.statistic, 2))Per lo studio sui caratteri, stampa 0.031 e -2.61. I 1000 rimescolamenti hanno dato 0.039: vicino, come al solito.
Il valore t è la differenza in errori standard; il suo segno indica solo quale gruppo è venuto prima. La formula presuppone dati con distribuzione a campana, quindi, con gruppi piccoli e asimmetrici, fidati delle permutazioni.
Verifica anche se un modello supera davvero un altro.
Sfida
MedioUn produttore di vernici ha cronometrato l’asciugatura di tre finiture. Il codice iniziale inserisce i minuti di ciascuna finitura in times, elenca tre pairs, definisce permutation_p(a, b) e legge level.
- Stampa il p-value del t-test per matte vs satin accanto a quello degli rimescolamenti.
- Verifica ogni coppia, con la prima finitura per prima, e stampa quella con il p-value più piccolo.
- Conta le coppie con un valore inferiore a
level.
Arrotonda i p-value a 3 decimali. Un altro produttore, livello 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 3Provalo tu
import numpy as np
import pandas as pd
from scipy import stats
# Il test di permutazione delle ultime due lezioni: restituisce il valore p del confronto tra a e 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())
# 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