Come eseguire un test di brown-forsythe in python
Un’ANOVA unidirezionale viene utilizzata per determinare se esiste o meno una differenza significativa tra le medie di tre o più gruppi indipendenti.
Uno dei presupposti di un’ANOVA unidirezionale è che le varianze delle popolazioni da cui vengono estratti i campioni siano uguali.
Uno dei modi più comuni per verificarlo è utilizzare un test di Brown-Forsythe , che è un test statistico che utilizza le seguenti ipotesi :
- H 0 : le varianze tra le popolazioni sono uguali.
- H A : Le differenze tra le popolazioni non sono uguali.
Se il valore p del test è inferiore a un certo livello di significatività (ad esempio α = 0,05), allora rifiutiamo l’ipotesi nulla e concludiamo che le varianze non sono uguali tra popolazioni diverse.
Questo tutorial fornisce un esempio passo passo di come eseguire un test Brown-Forsythe in Python.
Passaggio 1: inserisci i dati
Supponiamo che i ricercatori vogliano sapere se tre diversi fertilizzanti portano a diversi livelli di crescita delle piante.
Selezionano casualmente 30 piante diverse e le dividono in tre gruppi da 10, applicando un fertilizzante diverso a ciascun gruppo. Dopo un mese si misura l’altezza di ogni pianta.
Le tabelle seguenti mostrano l’altezza delle piante in ciascuno dei tre gruppi:
group1 = [7, 14, 14, 13, 12, 9, 6, 14, 12, 8] group2 = [15, 17, 13, 15, 15, 13, 9, 12, 10, 8] group3 = [6, 8, 8, 9, 5, 14, 13, 8, 10, 9]
Passaggio 2: riepilogare i dati
Prima di eseguire un test di Brown-Forsythe, possiamo calcolare la varianza delle misurazioni delle piante in ciascun gruppo:
#import numpy import numpy as np #calculate variance of plant measurements in each group print (np. var (group1), np. var (group2), np. var (group3)) 8.69 7.81 7.0
Possiamo vedere che le varianze tra i gruppi differiscono, ma per determinare se queste differenze sono statisticamente significative , possiamo eseguire il test di Brown-Forsythe.
Passaggio 3: eseguire il test di Brown-Forsythe
Per eseguire un test Brown-Forsythe in Python, possiamo utilizzare la funzione scipy.stats.levene() e specificare che il centro è mediano :
import scipy.stats as stats
stats. levene (group1, group2, group3, center=' median ')
LeveneResult(statistic=0.17981072555205047, pvalue=0.8364205218185946)
Dal risultato possiamo osservare quanto segue:
- Statistica del test: 0,1798
- Valore p: 0,8364
Il valore p del test risulta essere maggiore di 0,05, quindi non riusciamo a rifiutare l’ipotesi nulla del test.
Le differenze nelle varianze tra i gruppi non sono statisticamente significative.
Prossimi passi
Se non riusciamo a rifiutare l’ipotesi nulla del test di Brown-Forsythe, allora possiamo eseguire un’ANOVA unidirezionale sui dati.
Tuttavia, se rifiutiamo l’ipotesi nulla, ciò indica che l’ipotesi di uguaglianza delle varianze non è soddisfatta. In questo caso abbiamo due opzioni:
1. Eseguire comunque un’ANOVA unidirezionale.
Si scopre che un’ANOVA unidirezionale è in realtà robusta rispetto a varianze disuguali purché la varianza maggiore non sia maggiore di 4 volte la varianza minima.
Nel passaggio 2 dell’esempio precedente, abbiamo riscontrato che la varianza più piccola era 7,0 e la varianza più grande era 8,69. Quindi il rapporto tra la varianza più grande e quella più piccola è 8,69 / 7,0 = 1,24 .
Poiché questo valore è inferiore a 4, potremmo semplicemente procedere con l’ANOVA unidirezionale anche se il test di Brown-Forsythe indicasse che le varianze non erano uguali.
2. Eseguire un test Kruskal-Wallis
Se il rapporto tra la varianza più grande e la varianza più piccola è maggiore di 4, si può scegliere invece di eseguire un test di Kruskal-Wallis . Questo è considerato l’equivalente non parametrico dell’ANOVA unidirezionale.
Puoi trovare un esempio passo passo di un test Kruskal-Wallis in Python qui .