Aviso em R - a aproximação do qui-quadrado pode estar incorreta

40

Tenho dados que mostram os resultados dos exames de admissão de bombeiros. Estou testando a hipótese de que os resultados dos exames e a etnia não são mutuamente independentes. Para testar isso, fiz um teste do qui-quadrado de Pearson em R. Os resultados mostram o que eu esperava, mas deu um aviso de que " In chisq.test(a) : Chi-squared approximation may be incorrect."

> a
       white black asian hispanic
pass       5     2     2        0
noShow     0     1     0        0
fail       0     2     3        4
> chisq.test(a)

    Pearson's Chi-squared test

data:  a
X-squared = 12.6667, df = 6, p-value = 0.04865

Warning message:
In chisq.test(a) : Chi-squared approximation may be incorrect

Alguém sabe por que deu um aviso? É porque estou usando um método errado?

user1883491
fonte
2
Nunca confie em um resultado com tão poucas medições. Quando você tem centenas de pessoas em cada coluna, pode ter alguma confiança nos seus resultados. Ainda assim, o resultado pode ser mais devido à vizinhança ou à riqueza do que à própria raça.
Rodrigo

Respostas:

41

Ele emitiu o aviso porque muitos dos valores esperados serão muito pequenos e, portanto, as aproximações de p podem não estar corretas.

Em Rvocê pode usar chisq.test(a, simulate.p.value = TRUE)para simular valores de p.

No entanto, com tamanhos de células tão pequenos, todas as estimativas serão ruins. Pode ser bom apenas testar aprovação versus reprovação (excluindo "não comparência") com qui-quadrado ou regressão logística. De fato, como é bem claro que a nota de aprovação / reprovação é uma variável dependente, a regressão logística pode ser melhor.

Peter Flom - Restabelece Monica
fonte
O que realmente simulate.p.value = TRUEfaz quando adicionado a chisq.test?
AL14
11
Ele usa simulações para encontrar o valor de p
Peter Flom - Restabelece Monica
11
Note que simulate.p.value = TRUEusa simulação condicional nos marginais , então é realmente uma versão do teste exato de Fisher.
kjetil b halvorsen 16/04
23

O problema é que a aproximação do qui-quadrado à distribuição da estatística de teste se baseia na contagem normalmente distribuída. Se muitas das contagens esperadas forem muito pequenas, a aproximação pode ser ruim.

Observe que a distribuição real da estatística qui-quadrado para independência nas tabelas de contingência é discreta, não contínua.

A categoria noshow será um grande contribuinte para o problema; Uma coisa a considerar é mesclar noshow e falhar. Você ainda receberá o aviso, mas ele não afetará tanto os resultados e a distribuição deve ser bastante razoável (a regra que está sendo aplicada antes do aviso é muito rigorosa).

Mas, em qualquer caso, se você estiver disposto a condicionar nas margens (como faz ao executar o teste exato de Fisher), poderá lidar com o problema com muita facilidade em R; defina o simulate.p.valueargumento como TRUE; então você não depende da aproximação do qui-quadrado à distribuição da estatística de teste.

Glen_b
fonte
você pode, por favor, me explicar por que "..a aproximação do qui-quadrado à distribuição da estatística de teste depende da contagem normalmente distribuída"? Eu não entendo como isso pode ser verdade se um, por exemplo, tiver uma tabela de contingência 2x2. Como as contagens podem ser (aproximadamente) normalmente distribuídas? Como é possível distribuir normalmente as contagens de brancos, negros, hispânicos e asiáticos? Você quer dizer apenas um pouco igual? E como isso se relaciona com essa pergunta? : stats.stackexchange.com/questions/141407/…
Erosennin 18/15
A distribuição multivariada das variáveis ​​aleatórias de contagem precisa ser aproximadamente normal (embora degenerada). O conjunto de contagens observadas é apenas uma única observação vetorial dessa normal multivariada - você não pode julgar a distribuição a partir de uma observação. Para fazer a avaliação de que estou falando, você precisa confiar nas suposições; é razoavelmente fácil fazer isso para as células individuais (ou seja, a distribuição marginal de uma determinada célula, sob o nulo). Você parece estar combinando as contagens através das células, mas que não faz sentido, porque todos eles vêm de diferentes distribuições
Glen_b
Primeiro, obrigado por reservar um tempo! Então você está dizendo que a contagem "descendente" da tabela de contingência deve ser (degeneradamente) multivariada normal, se observarmos muitas observações? Isso não significa que as contagens de cada célula individual também devem ser normais e também contam "de lado" a tabela de contingência (suponho que é isso que você quer dizer com 'entre')? F.ex uma célula com valor esperado 5, deve ser normalmente distribuída em torno de 5, certo? Portanto, se uma célula do outro lado tiver o valor esperado 40, essa célula deve ser normalmente distribuída em torno de 40 e, juntas, um normal multivariado com média de 5 e 40, não?
Erosennin
11
No caso geral com margens fixas (que é o que eu tinha em mente), estaríamos empilhando todas as variáveis ​​dentro da tabela em um vetor de comprimento , mas elas estão em um hiperplano de dimensão - essa é a degeneração. No caso 2x2, isso representa 1 grau de liberdade, e as 4 contagens de células estão ao longo de uma linha no espaço 4D. Mas não há realmente espaço para dar detalhes adequados. Você ainda não conseguiu (embora pareça estar mais perto). Você pode repassar algo como sua primeira pergunta (sobre o sentido em que os valores são aproximadamente normais) como uma pergunta. r c ( r - 1 ) ( c - 1 )r×crc(r1)(c1)
21915 Glenbrook
Isso é pesado e muito interessante. Se você tiver tempo, reposicionei minha primeira pergunta aqui: stats.stackexchange.com/questions/142429/… .
Erosennin
12

Para contagens tão pequenas, você pode usar o teste exato de Fisher:

> fisher.test(a)

        Fisher's Exact Test for Count Data

data:  a 
p-value = 0.02618
alternative hypothesis: two.sided 
Henry
fonte
3

Consulte a seção "Pressupostos" do artigo de teste qui-quadrado de Pearson .

Em poucas palavras, quando a contagem em qualquer uma das células da sua tabela for menor que 5, uma das suposições será quebrada. Eu acho que é a isso que a mensagem de erro está se referindo. No artigo vinculado, você também pode encontrar informações sobre a correção que pode ser aplicada.


fonte
6
Existem dois problemas com sua regra geral com menos de cinco contagens. A primeira é que a declaração correta se refere às contagens esperadas e não às contagens reais. A segunda é que é muito grave. A aproximação geralmente funciona bem mesmo quando uma pequena proporção da contagem esperada é menor que cinco. Nesse caso, onde todos os marginais da coluna são cinco ou menos, é óbvio que toda contagem esperada é pequena e, portanto, somos aconselhados a ser cautelosos. Além disso, a correção mencionada no artigo da Wikipedia se aplica apenas no caso de um DF; neste caso tem 6 DF. χ2
whuber
0

Sua pergunta principal fala sobre o tamanho da amostra, mas vejo que mais de dois grupos são comparados. Se o valor p do teste for 0,05 ou menos, seria difícil interpretar os resultados. Portanto, estou compartilhando um breve script que uso nessas situações:

# Load the required packages:
library(MASS) # for chisq
library(descr) # for crosstable

CrossTable(a$exam_result, a$ethnicity
       fisher = T, chisq = T, expected = T,
       prop.c = F, prop.t = F, prop.chisq = F, 
       sresid = T, format = 'SPSS')

Esse código gerará o qui-quadrado de Pearson e o qui-quadrado de Fisher. Produz contagens e proporções de cada uma das entradas da tabela. Com base nos resíduos padronizados ou nos valores de z, ou seja,

sresid

Se estiver fora do intervalo | 1,96 | ou seja, menor que -1,96 ou maior que 1,96, é significativo p <0,05. O sinal indica então se está relacionado positivamente ou negativamente.

Sadiaz
fonte