Como realizar um teste brown-forsythe em python


Uma ANOVA unidirecional é usada para determinar se há ou não uma diferença significativa entre as médias de três ou mais grupos independentes.

Uma das suposições de uma ANOVA unidirecional é que as variâncias das populações das quais as amostras são extraídas são iguais.

Uma das maneiras mais comuns de testar isso é usar um teste de Brown-Forsythe , que é um teste estatístico que usa as seguintes suposições :

  • H 0 : As variâncias entre as populações são iguais.
  • HA : As diferenças entre as populações não são iguais.

Se o valor p do teste estiver abaixo de um certo nível de significância (por exemplo, α = 0,05), então rejeitamos a hipótese nula e concluímos que as variâncias não são iguais entre diferentes populações.

Este tutorial fornece um exemplo passo a passo de como realizar um teste Brown-Forsythe em Python.

Passo 1: Insira os dados

Suponha que os pesquisadores queiram saber se três fertilizantes diferentes levam a diferentes níveis de crescimento das plantas.

Eles selecionam aleatoriamente 30 plantas diferentes e as dividem em três grupos de 10, aplicando um fertilizante diferente em cada grupo. Depois de um mês, medem a altura de cada planta.

As tabelas a seguir mostram a altura das plantas em cada um dos três grupos:

 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]

Etapa 2: resumir os dados

Antes de realizar um teste de Brown-Forsythe, podemos calcular a variância das medidas das plantas em cada grupo:

 #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

Podemos ver que as variâncias entre os grupos diferem, mas para determinar se essas diferenças são estatisticamente significativas , podemos realizar o teste de Brown-Forsythe.

Etapa 3: execute o teste Brown-Forsythe

Para realizar um teste Brown-Forsythe em Python, podemos usar a função scipy.stats.levene() e especificar que o centro é mediano :

 import scipy.stats as stats

stats. levene (group1, group2, group3, center=' median ')

LeveneResult(statistic=0.17981072555205047, pvalue=0.8364205218185946)

Pelo resultado podemos observar o seguinte:

  • Estatística de teste: 0,1798
  • Valor p: 0,8364

O valor p do teste acaba sendo maior que 0,05, portanto, não rejeitamos a hipótese nula do teste.

As diferenças nas variâncias entre os grupos não são estatisticamente significativas.

Próximos passos

Se não conseguirmos rejeitar a hipótese nula do teste de Brown-Forsythe, então poderemos realizar uma ANOVA unidirecional nos dados.

No entanto, se rejeitarmos a hipótese nula, isso indica que a suposição de igualdade de variâncias não é atendida. Neste caso temos duas opções:

1. Faça uma ANOVA unidirecional de qualquer maneira.

Acontece que uma ANOVA unidirecional é realmente robusta para variâncias desiguais, desde que a maior variância não seja maior que 4 vezes a menor variância.

Na etapa 2 do exemplo acima, descobrimos que a menor variância foi 7,0 e a maior variância foi 8,69. Portanto, a razão entre a maior e a menor variação é 8,69 / 7,0 = 1,24 .

Como este valor é inferior a 4, poderíamos simplesmente prosseguir com a ANOVA unidirecional, mesmo que o teste de Brown-Forsythe indicasse que as variâncias não eram iguais.

2. Faça um teste de Kruskal-Wallis

Se a razão entre a maior variância e a menor variância for maior que 4, pode-se optar por realizar um teste de Kruskal-Wallis . Isto é considerado o equivalente não paramétrico da ANOVA unidirecional.

Você pode encontrar um exemplo passo a passo de um teste Kruskal-Wallis em Python aqui .

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *