Testes Qui-quadrado


26 de novembro de 2007

1 Teste Qui-quadrado para Independência

O teste Qui-quadrado é comumente aplicado para verificar a significância estatística da associação entre duas variáveis qualitativas.

Em muitas ocasiões estes testes são aplicados à Tabelas de Contingência

Os dados abaixos são referente ao exemplo 8.11 em Magalhães e Lima (2004) e são referentes ao cruzamento dos resultados obtidos por 528 alunos do ensino médio em um questões nas disciplinas de física e matemática.

Nas linhas estão as frequências das notas na prova de física e nas colunas da matriz estão as frequências das notas na prova de matemática.

  > # Entrando matriz com notas de fisica e matematica
  > m<-matrix(c(56,47,14,71,163,42,14,38,85),ncol=3)
  > m

       [,1] [,2] [,3]
  [1,]   56   71   14
  [2,]   47  163   38
  [3,]   14   42   85

  > # Atribuindo nomes as colunas e linhas
  > rownames(m)<-c('alta','media','baixa')
  > colnames(m)<-rownames(m)
  > #Verificando o conteúdo da  matriz
  > m

        alta media baixa
  alta    56    71    14
  media   47   163    38
  baixa   14    42    85

O interesse neste conjunto de dados é testar as hipóteses de independência ou associação entre os desempenhos em física e matemática.

Lembramos que o desempenhho neste caso é mensurado como uma variável qualitativa com os níveis: alto, médio e baixo.

H0 : Os desempenhos em física e matemática são independentes

H1 : Há associação entre os desempenhos

A verificação das hipóteses será feita mediante a aplicação do teste Qui-quadrado.

  > #Aplicando o teste qui-quadrado
  > Q<-chisq.test(m)
  > Q

   Pearson's Chi-squared test
  
  data:  m
  X-squared = 141.9359, df = 4, p-value < 2.2e-16

O objeto Q armazena uma série de informações importante para entender o funcionamento do teste.

  > # Informações armazenadas em Q
  > names(Q)

  [1] "statistic" "parameter" "p.value"   "method"    "data.name" "observed"
  [7] "expected"  "residuals"

  > # Frequências Observadas
  > Q$observed

        alta media baixa
  alta    56    71    14
  media   47   163    38
  baixa   14    42    85

  > # Frequências Esperadas
  > Q$expected

            alta     media    baixa
  alta  31.12642  73.42642 36.44717
  media 54.74717 129.14717 64.10566
  baixa 31.12642  73.42642 36.44717

  > # Residuos (subtracao das observadas em relacao as esperadas)
  > Q$residuals

             alta      media     baixa
  alta   4.458347 -0.2831646 -3.718174
  media -1.047038  2.9788768 -3.260517
  baixa -3.069742 -3.6674878  8.042344

Uma importante informação na última das matrizes exibidas é a de que os elementos na diagonal apresentam valores observados acima dos esperados sob a hipótese de não existir associação H0.

2 Teste Qui-quadrado para Aderência

Teste de Aderência à Distribuição Uniforme Discreta

A sequência de comandos apresentada abaixo verifica, para um conjunto de dados, o par de hipóteses :

H0 : a amostra veio de X ~ Uniforme  Discreta

H1 : a amostra veio de uma distribuição diferente

  > # Ajustando a semente
  > set.seed(1234)
  > # Gerando 500 números da uniforme discreta entre 0 e 10
  > numeros<-sample(1:10,500,replace=T)
  > # Tabela de frequencias observadas
  > tab<-table(numeros)
  > tab

  numeros
   1  2  3  4  5  6  7  8  9 10
  38 53 48 57 47 60 49 56 36 56

  > # Armazenando as frequencias observadas em um vetor
  > obs<-c(tab)
  > # Testando aderencia a distribuicao uniforme
  > ad<-chisq.test(obs)
  > ad

   Chi-squared test for given probabilities
  
  data:  obs
  X-squared = 11.68, df = 9, p-value = 0.2320

  > # Nomes dos elementos armazenados no objeto ad
  > names(ad)

  [1] "statistic" "parameter" "p.value"   "method"    "data.name" "observed"
  [7] "expected"  "residuals"

  > # Frequencias esperadas sob a hipotese de distribuicao uniforme
  > esp<-ad$expected
  > esp

   1  2  3  4  5  6  7  8  9 10
  50 50 50 50 50 50 50 50 50 50

O cálculo do valor da estatística qui-quadrado é obtido através da fórmula:

       K∑  (obs- esp )2
χ2K-1 =    ---i-----i--
       i=1     espi

No exemplo acima, o valor da estatística Qui-quadrado pode ser calculado conforme :

  > # Calculo do valor observado da estatística qui-quadrado
  > Qui <- sum(((obs-esp)^2)/esp)
  > Qui

  [1] 11.68

  > # Calculo do p-valor
  > 1-pchisq(Qui,9)

  [1] 0.2319563

Teste de Aderência à Distribuição Poisson

A tabela abaixo contém a frequência observada de gols nas 232 partidas de Copa do Mundo de Futebol realizadas no período de 1990 a 2002.


Tabela 1: Gols nas 232 partidas de futebol entre as copas de 1990 e 2002



gols partidasprobabilidade empírica



0 19 0.08
1 49 0.21
2 60 0.26
3 47 0.2
4 32 0.14
5 18 0.08
6 ou mais 7 0.03



Total 232 1




Nas partidas realizadas foi marcado um total de 575 gols o que gera uma média de gols por partida igual a 2.4784. Esta informação é importante para calcular as probabilidades teóricas sob a hipótese de que o número de gols siga a distribuição de Poisson. Utilizando o teste qui-quadrado para verificar aderência à distribuição de Poisson.

  > # Intensidade de gols
  > lambda<-575/232
  > lambda
  [1] 2.478448
  > # Frequencias observadas
  > obs<-c(19,49,60,47,32,18,7)
  > obs
  [1] 19 49 60 47 32 18  7
  > # Probabilidades Teoricas
  > prob.teo<-c(dpois(0:5,lambda),1-ppois(5,lambda))
  > prob.teo
  [1] 0.08387327 0.20787557 0.25760442 0.21281975 0.13186568 0.06536445 0.04059685
  > # Frequencias esperadas sob as probabilidades teoricas
  > esp<-prob.teo*232
  > esp
  [1] 19.45860 48.22713 59.76423 49.37418 30.59284 15.16455  9.41847

Vamos verificar gráficamente a aderência das frequencias observadas em relação as esperadas.


  > plot(obs,esp)
  > abline(a=0,b=1)

pict

Figura 1: Diagrama de Dispersão entre Valores Observados e Esperados


Conforme a Figura podemos ver que as frequências observadas estão muito próximas das esperadas sob a suposição de distribuição de Poisson.

Aplicando o teste qui-quadrado

  > chisq.test(obs,p=prob.teo)
   Chi-squared test for given probabilities
  
  data:  obs
  X-squared = 1.3542, df = 6, p-value = 0.9686

Outro teste que pode ser aplicado é o de Kolmogorov-Smirnov

  > # Criando o vetor com os gols observados
  > gols<-rep(c(0,1,2,3,4,5,6),c(19,49,60,47,32,18,7))
  > # Criando o vetor com os gols esperados
  > gols.esp<-rep(c(0,1,2,3,4,5,6),round(esp))
  > # Aplicando o teste de Kolmogorov-Smirnov
  > ks.test(gols,gols.esp)
   Two-sample Kolmogorov-Smirnov test
  
  data:  gols and gols.esp
  D = 0.0088, p-value = 1
  alternative hypothesis: two-sided

O p-valor está muito próximo de 1 e, portanto, não rejeita-se H0

repare que algumas suposições foram feitas para poder aplicar o teste acima !

3 Exercícios

  1. Em um experimento para verificar a relação entre crises de asma e incidência de gripe, 150 crianças foram escolhidas, ao acaso, dentre aquelas acompanhadas pelo Posto de Saúde do bairro. Os dados referentes a uma semana são apresentados na tabela abaixo





    Asma/GripeSimNão



    Sim 27 34



    Não 42 47







    Você acha que as ocorrências de asma e gripe são independentes? Use um nível de significância igual a 4%.

  2. Carregue os dados do arquivo aeusp.txt e teste a independência entre as variáveis Comun e Renda. Tome sua decisão calculando o nível descritivo.

      > # Leitura do arquivo aeusp.txt com dados da AEUSP
      > aeusp<-read.csv("http://www.leg.ufpr.br/~joel/dados/aeusp.txt",sep="")
      > # Nomes das variáveis
      > names(aeusp)

       [1] "Num"     "Comun"   "Sexo"    "Idade"   "Ecivil"  "Reproce" "Temposp"
       [8] "Resid"   "Trab"    "Ttrab"   "Itrab"   "Renda"   "Acompu"  "Serief"
  3. Deseja-se verificar se o modelo Uniforme discreto com valores de 0 a 5 pode ser usado para modelar o número de reclamações que chegam por hora em uma Central de Atendimento ao Consumidor. O sorteio de 120 períodos de uma hora forneceu os seguintes dados:









    Reclamações0 1 2 3 4 5







    Frequência 83228241612















Formule as hipóteses testadas e dê a conclusão ao nível de 5% de significância.