Teste Chi-Quadrado (X2 )

Utilizamos o teste X2 para comparar as frequências observadas de eventos distintos, ou seja, compara-se um conjunto de frequências observadas contra um conjunto de frequências esperadas derivadas de dados de contagem. As frequências esperadas não são independentes do observados por isso há uma perda no grau de liberdade (o número de dados independentes utilizados menos 1)

O resultado do teste determina a probabilidade de obter uma diferença entres as observações encontradas e esperadas nos modelos, já que todos os eventos poderiam acontecer.

Podemos representar estes dados em uma tabela de frequência ou tabela de contingência mostrando quantas vezes dada característica aparece em um conjunto de dados específicos.

Obs.: Os dados utilizados no exercício foram retirados de: Zar, J. H. (1999). Biostatistical analysis. Pearson Education.

Exemplo 1. Em dada população de animais que hibernam, Queremos saber se existe diferenças nas frequencias de hibernação entre machos e femeas

data<- matrix(0, ncol = 2)
data[1,]<-c(44,54)
colnames(data)<- c("macho", "femea")
chi1<-function(x){#x como um dataframe com duas populacoes
  hnula<-sum(x)/2 #frequencia da hipotese nula
  pop<-ncol(x)
  y<- numeric(pop)
  for(i in 1:pop){
    y[i]<-((x[1,i]-hnula)^2)/hnula
  }
  chir<-sum(y)
  return(chir)
}

dat2<-chi1(data)
dat2 
## [1] 1.020408

utilizar tabela dos valores criticos da distribuicao chi-quadrado para compara-lo com nosso resultado

chisq.test(data)
## 
##  Chi-squared test for given probabilities
## 
## data:  data
## X-squared = 1.0204, df = 1, p-value = 0.3124
##nao rejeitamos a hipotese nula

EXEMPLO 2 Em dada população de animais que hibernam, Queremos saber se existe diferenças nas frequencias de entre machos e femeas que hibernam em diferentes localidades.

Localidade <- c("A", "B", "C", "D")
Macho <- c(44,31,12,15)
Femea <- c(54,40,18,16)
data2 <- data.frame(Macho, Femea)
data=as.table(as.matrix(data2))
data
##   Macho Femea
## A    44    54
## B    31    40
## C    12    18
## D    15    16
library(gplots)
## 
## Attaching package: 'gplots'
## The following object is masked from 'package:stats':
## 
##     lowess
balloonplot(t(data),xlab ="", ylab="", label = FALSE, show.margins = FALSE)#plotando resultado da tabela de contengencia

chi2<-function(x){#x dataframe com conjunto de dados pareados com a mesma hipotese nula
  hnulatotal<-sum(x)/2 #frequencia da hipotese nula total
  componente1<-(((sum(x[,1]))-hnulatotal)^2)/hnulatotal
  componente2<-(((sum(x[,1]))-hnulatotal)^2)/hnulatotal
  chitotal<-componente1+componente2 #chi-quadrado total
  pop<-nrow(x)
  hnula<-numeric(pop)
  y<- numeric(pop)
  for(i in 1:pop){
    hnula[i]<-(sum(x[i,]))/2
    y[i]<-(((x[i,1]-hnula[i])^2)/hnula[i])+(((x[i,2]-hnula[i])^2)/hnula[i])
  }
  chir<-sum(y)
  chihetero<- chir-chitotal
  return(chihetero)
}
rexemplo2<-chi2(data2)
rexemplo2
## [1] 0.4543809
chisq.test(data2)
## 
##  Pearson's Chi-squared test
## 
## data:  data2
## X-squared = 0.46026, df = 3, p-value = 0.9275
##nao rejeitamos a hipotese nula