Teste qui-quadrado

O teste é utilizado para:

Verificar se a frequência com que um determinado acontecimento observado em uma amostra se desvia significativamente ou não da frequência com que ele é esperado.

Comparar a distribuição de diversos acontecimentos em diferentes amostras, a fim de avaliar se as proporções observadas destes eventos mostram ou não diferenças significativas ou se as amostras diferem significativamente quanto às proporções desses acontecimentos.

Como calcular

Para avaliar as possíveis discrepâncias entre proporções observadas e esperadas:

\[\chi^2=\sum \frac{(o-e)^2}{e}\]

em que \(o=\) frequência observada e \(e=\) frequência esperada.

Exemplo 1

Iremos construir o vetor de probabilidades esperado

fo=c(0,6,8,11,7,4,3,1,0) #correspondentes a 0,1,2,3,4,5,6,7 e +7 falhas
fe1 =c(0,1,2,3,4,5,6,7)
fe=dpois(fe1, 3.2) #calculo da frequência esperada de 0 a 7 falhas
x=1-sum(fe) #calculo da frequência esperada de ‘mais de 7 falhas’
fe=c(fe,x) #adição de ‘mais de 7 falhas’ ao numero esperado de falhas
chisq.test(fo,p=fe)
## Warning in chisq.test(fo, p = fe): Chi-squared approximation may be incorrect
## 
##  Chi-squared test for given probabilities
## 
## data:  fo
## X-squared = 3.1434, df = 8, p-value = 0.925

Exemplo 2

Construímos uma tabela 2x3 com o nível de liderança nas colunas (líder, moderado ou não classificado) e a altura da pessoa (baixo ou alto) nas linhas

baixo=c(12,22,9)
alto=c(32,14,6)
lider=cbind(baixo,alto)
lider
##      baixo alto
## [1,]    12   32
## [2,]    22   14
## [3,]     9    6
chisq.test(lider)
## 
##  Pearson's Chi-squared test
## 
## data:  lider
## X-squared = 10.712, df = 2, p-value = 0.004719

Pacote

library(gmodels)
set.seed(56)
cor=sample(c("azul","rosa"),100,replace = T)
regiao=sample(c("sul","norte"),100,replace = T)

CrossTable(cor,regiao,
           prop.r = F,
           prop.c = F,
           prop.t = F,
           prop.chisq = F)
## 
##  
##    Cell Contents
## |-------------------------|
## |                       N |
## |-------------------------|
## 
##  
## Total Observations in Table:  100 
## 
##  
##              | regiao 
##          cor |     norte |       sul | Row Total | 
## -------------|-----------|-----------|-----------|
##         azul |        25 |        23 |        48 | 
## -------------|-----------|-----------|-----------|
##         rosa |        25 |        27 |        52 | 
## -------------|-----------|-----------|-----------|
## Column Total |        50 |        50 |       100 | 
## -------------|-----------|-----------|-----------|
## 
## 
CrossTable(cor,regiao,
           prop.r = F,
           prop.c = F,
           prop.t = F,
           prop.chisq = T)
## 
##  
##    Cell Contents
## |-------------------------|
## |                       N |
## | Chi-square contribution |
## |-------------------------|
## 
##  
## Total Observations in Table:  100 
## 
##  
##              | regiao 
##          cor |     norte |       sul | Row Total | 
## -------------|-----------|-----------|-----------|
##         azul |        25 |        23 |        48 | 
##              |     0.042 |     0.042 |           | 
## -------------|-----------|-----------|-----------|
##         rosa |        25 |        27 |        52 | 
##              |     0.038 |     0.038 |           | 
## -------------|-----------|-----------|-----------|
## Column Total |        50 |        50 |       100 | 
## -------------|-----------|-----------|-----------|
## 
## 

Exemplo 3

c_hum<-c(15,20,30,20,15)
c_bio<-c( 8,23,18,34,17)
tab14_2<-rbind(c_hum,c_bio)
test_tab14_2=chisq.test(tab14_2)
test_tab14_2
## 
##  Pearson's Chi-squared test
## 
## data:  tab14_2
## X-squared = 9.0944, df = 4, p-value = 0.05878

Exemplo 4

M<-data.frame(uso_hospital=c("usaram_hospital", "nao_usaram_hospital"),homens=c(100,900),mulheres=c(150,850), row.names = 1)
M
##                     homens mulheres
## usaram_hospital        100      150
## nao_usaram_hospital    900      850
chisq.test(M)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  M
## X-squared = 10.976, df = 1, p-value = 0.000923

Exemplo 5

acidentes<-c(32,40,20,25,33)
test_tab14_5<-chisq.test(acidentes)
q_i<-(acidentes-test_tab14_5$expected)^2/test_tab14_5$expected
tab14_5<- rbind(acidentes, e_i=test_tab14_5$expected, q_i)
tab14_5<-cbind(tab14_5,c(sum(tab14_5[1,]),sum(tab14_5[2,]),sum(tab14_5[3,])))
test_tab14_2
## 
##  Pearson's Chi-squared test
## 
## data:  tab14_2
## X-squared = 9.0944, df = 4, p-value = 0.05878

Exemplo 6

dados=iris
names(dados)=c("comp_sepala","larg_sepala","comp_petala","larg_petala","especie")
head(dados)
##   comp_sepala larg_sepala comp_petala larg_petala especie
## 1         5.1         3.5         1.4         0.2  setosa
## 2         4.9         3.0         1.4         0.2  setosa
## 3         4.7         3.2         1.3         0.2  setosa
## 4         4.6         3.1         1.5         0.2  setosa
## 5         5.0         3.6         1.4         0.2  setosa
## 6         5.4         3.9         1.7         0.4  setosa

o teste de qui-quadrado vai comparar a relação de duas variáveis categóricas

dados$tamanho=ifelse(median(dados$comp_sepala)>dados$comp_sepala,
                     "pequeno","grande")


tabela=table(dados$especie,dados$tamanho)
tabela
##             
##              grande pequeno
##   setosa          1      49
##   versicolor     29      21
##   virginica      47       3
chisq.test(tabela)
## 
##  Pearson's Chi-squared test
## 
## data:  tabela
## X-squared = 86.035, df = 2, p-value < 2.2e-16
summary(tabela)
## Number of cases in table: 150 
## Number of factors: 2 
## Test for independence of all factors:
##  Chisq = 86.03, df = 2, p-value = 2.079e-19
barplot(tabela,col=c(2,3,4))

barplot(t(tabela),col=c(2,3,4))

barplot(t(tabela),col=c(2,3,4),
        legend=rownames(t(tabela)),
        args.legend = list(x=2.8,
                           y=60,
                           ncol=2,
                           bty="n"))

modelo=chisq.test(tabela)

modelo$statistic
## X-squared 
##  86.03451
modelo$parameter
## df 
##  2
modelo$p.value
## [1] 2.078944e-19
options(scipen = 30)
modelo$p.value
## [1] 0.0000000000000000002078944
modelo$residuals
##             
##                  grande    pequeno
##   setosa     -4.8688425  5.0004566
##   versicolor  0.6579517 -0.6757374
##   virginica   4.2108908 -4.3247192

Exemplo 7

x1=rnorm(100,0,1)
hist(x1,freq = F)
lines(density(x1),lwd=3,col="red")

x2=seq(-3,3,0.1)
fd=dnorm(x2)
fa=pnorm(x2)
dfa=data.frame(x2,fd,fa)

plot(x2,fd,type = "l",main = "M",
     col="red",ylim=c(0,0.5))
legend("topright",c("media=0, sd=1"),
       lty=c(1),lwd=2,col="red")
abline(v=0)

Exemplo 8

A administração de um hospital deseja verificar se luvas de três marcas (A, B e C) são homogêneas quanto à permeabilidade a vírus.

Para isto, realizou um experimento, no qual 240 luvas da marca A, 240 luvas da marca B e 300 luvas da marca C foram submetidas à tensão.

Durante os testes, 151 luvas da marca A (62.9%), 134 luvas da marca B (55.8%) e 177 luvas da marca C (59.0%) deixaram passar vírus.

Os dados do experimento apresentam evidências estatísticas suficientes contra a hipótese de que as três marcas possuem a mesma permeabilidade?

\(H0:P_a=P_b=P_c\) \(H1:\) ao menos uma das permeabilidade é diferente das outras

sim não TOTAL
A 151 89 240
B 134 106 240
C 177 123 300
TOTAL 462 318 780
matriz=matrix(c(151,134,177,89,106,123),nrow = 3)
colnames(matriz)=c("sim","nao")
rownames(matriz)=c("A","B","C")
matriz
##   sim nao
## A 151  89
## B 134 106
## C 177 123
chisq.test(matriz)
## 
##  Pearson's Chi-squared test
## 
## data:  matriz
## X-squared = 2.5041, df = 2, p-value = 0.2859

Conclusão

Exemplo 9

Existe associação entre a cor de olhos e a cor dos cabelos de uma pessoa?

verde cinza azul castanho TOTAL
preto 5 15 20 68 108
castanho 29 54 84 119 286
ruivo 14 14 17 26 71
loiro 16 10 94 7 127
TOTAL 64 93 215 220 592
tabela=matrix(c(5,29,14,16,15,54,14,10,20,84,17,94,68,119,26,7),nrow = 4)
colnames(tabela)=c("olho verde","olhos cinza","olho azul","olho castanho")
rownames(tabela)=c("cabelo preto","cabelo castanho","cabelo ruivo","cabelo loiro")
tabela
##                 olho verde olhos cinza olho azul olho castanho
## cabelo preto             5          15        20            68
## cabelo castanho         29          54        84           119
## cabelo ruivo            14          14        17            26
## cabelo loiro            16          10        94             7
chisq.test(tabela)
## 
##  Pearson's Chi-squared test
## 
## data:  tabela
## X-squared = 138.29, df = 9, p-value < 0.00000000000000022

Conclusão