Test d'ipotesi - Differenza tra medie
Vogliamo testare l'ipotesi che esista una differenza nelle donazioni medie ricevute da A e B. In precedenza hai imparato a generare una singola permutazione dei dati. Ora genereremo una distribuzione nulla della differenza tra le medie e poi calcoleremo il p-value.
Per la distribuzione nulla, per prima cosa generiamo più insiemi di dati permutati e registriamo la differenza tra le medie per ciascun caso. Quindi calcoliamo la statistica di test come la differenza tra le medie nel dataset originale. Infine, approssimiamo il p-value calcolando il doppio della frazione di casi in cui la differenza è maggiore o uguale al valore assoluto della statistica di test (ipotesi a 2 code). Un p-value inferiore, ad esempio, a 0,05 può indicare significatività statistica.
Questo esercizio fa parte del corso
Simulazione statistica in Python
Istruzioni dell'esercizio
- Genera più permutazioni di
donations_Aedonations_Be assegnale aperm. - Imposta
samplesuguale alla differenza tra le medie dipermuted_A_datasetsepermuted_B_datasets. Impostiamoaxis=1per avere una media per ciascun dataset invece di una media complessiva. - Imposta
test_statuguale alla differenza tra le medie didonations_Aedonations_B. - Calcola il p-value
p_valcome il doppio della frazione disamplesmaggiore o uguale al valore assoluto ditest_stat.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Generate permutations equal to the number of repetitions
perm = np.array([np.random.____(len(____) + len(____)) for i in range(reps)])
permuted_A_datasets = data[perm[:, :len(donations_A)]]
permuted_B_datasets = data[perm[:, len(donations_A):]]
# Calculate the difference in means for each of the datasets
samples = np.mean(____, axis=1) - np.mean(____, axis=1)
# Calculate the test statistic and p-value
test_stat = ____
p_val = 2*np.sum(____ >= np.abs(____))/reps
print("p-value = {}".format(p_val))