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 .

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *