Contraste de homogeneidad

En el trabajo de G. Mendel con guisantes, hay un vector de frecuencias observadas (semilla lisa, semilla rugosa):

Observados = c(5474, 1850)

y unas proporciones (distribución) teóricas

probEsperados = c(3/4, 1/4)

Se va a contrastar \[H_0:\,\hbox{La distribución de frecuencias observada se corresponde con la teórica}\]

y el contraste es

(ChisqTest = chisq.test(Observados, p = probEsperados))
## 
##  Chi-squared test for given probabilities
## 
## data:  Observados
## X-squared = 0.26288, df = 1, p-value = 0.6081

Observa que ChisqTest es un data.frame que contiene, entre otras cosas, la información necesaria para realizar el contraste, como los valores esperados:

ChisqTest$expected
## [1] 5493 1831

Contraste de independencia

Se aprovecha para tratar el problema de cómo construir la tabla a partir del formato en que se reciben los datos

A partir de un sumario de los datos:

SI los datos tienen este aspecto

Enfermos Sanos
Positivo 192 158
Negativo 4 9646

hay que fabricar una matriz:

(tablaObservada = matrix( c(192, 4, 158, 9646), nrow= 2))
##      [,1] [,2]
## [1,]  192  158
## [2,]    4 9646

fíjate en que se rellena, por defecto, por filas, y hacer el contraste

chisq.test(tablaObservada)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  tablaObservada
## X-squared = 5252.9, df = 1, p-value < 2.2e-16

Dos factores en un fichero

Ahora el problema es el de crear la tabla a partir de datos en bruto.

En este fichero encontrarás los datos de la encuesta nacional de salud relativas a las variables

  • Relación con le tabaco:
    1. Sí fuma, diariamente
    2. Sí fuma, pero no diariamente
    3. No fuma actualmente, pero ha fumado antes
    4. No fuma ni ha fumado nunca de manera habitual
    5. Nunca he fumado nunca nada
  • Frecuencia con la que realiza alguna actividad física en su tiempo libre:
    1. No hago ejercicio. El tiempo libre lo ocupo de forma casi completamente sedentaria (leer, ver la televisión, ir al cine, etc.)
    2. Hago alguna actividad física o deportiva ocasional
    3. Hago actividad física varias veces al mes
    4. Hace entrenamiento deportivo o físico varias veces a la semana
    5. Participo en competiciones habitualmente de forma amateur o (semi)profesional
  • Frecuencia de consumo de aperitivos o comidas saladas de picar (patatas fritas, ganchitos, galletitas saladas):
    1. A diario
    2. Tres o más veces a la semana, pero no a diario
    3. Una o dos veces a la semana
    4. Menos de una vez a la semana
    5. Nunca o casi nunca
  • Frecuencia de consumo de refrescos azucarados:
    1. A diario
    2. Tres o más veces a la semana, pero no a diario
    3. Una o dos veces a la semana
    4. Menos de una vez a la semana
    5. Nunca o casi nunca
df = read.table(file = "ENSE_chi2.csv", sep = ";", header = TRUE)
head(df)
##   Aperitivos Refrescos ActividadFisica Fumar
## 1          1         3               1     1
## 2          4         4               1     4
## 3          1         4               1     1
## 4          3         5               1     4
## 5          4         4               1     1
## 6          2         3               4     4

Analizar, por ejemplo, si hay relación entre la frecuencia con que se toman aperitivos y refrescos:

(datos = table(df$Aperitivos, df$Refrescos))
##    
##        1    2    3    4    5    8    9
##   1  176  244  579  448  692    2    0
##   2   14  301  516  374  482    0    0
##   3   31  157 1106  753  837    0    1
##   4   25   82  382 1408 1113    2    0
##   5   80  216  984 1821 8110    5    0
##   8    0    1    4    3   11   31    0
##   9    0    0    0    0    0    0   16

Los 8 y los 9 corresponden con no sabe y no contesta. Para eliminarlos

nsnc = c(which(df$Aperitivos %in% c(8,9)), 
         which(df$Refrescos %in% c(8,9)))
datos = df[-unique(nsnc), c("Aperitivos", "Refrescos")]

Ahora se construye la tabla sin los no sabe/no contesta

(tabla = table(datos))
##           Refrescos
## Aperitivos    1    2    3    4    5
##          1  176  244  579  448  692
##          2   14  301  516  374  482
##          3   31  157 1106  753  837
##          4   25   82  382 1408 1113
##          5   80  216  984 1821 8110

y se hace el contraste: \[H_0:\,\hbox{Los factores son independientes}\]

chisq.test(tabla)
## 
##  Pearson's Chi-squared test
## 
## data:  tabla
## X-squared = 5832, df = 16, p-value < 2.2e-16

Construir factores a partir de variables numéricas (continuas)

Vamos a seguir parte del tutorial 12 de postdata. Este fichero contiene los datos del Lunar Orbiter Laser Altimeter instrument (LOLA)

Las tres variables que aparecen en ese fichero:

crateres = read.table(file = "Cap09-LolaLargeLunarCraterCatalog.csv", sep = ",", header = TRUE)
colnames(crateres)
## [1] "Lon"     "Lat"     "Diam_km"

se refieren a la latitud, longitud (ambas en grados) y diámetro (en km) de los cráteres lunares y son todas ellas cuantitativas continuas.

La pregunta a responder es si hay diferencia entre los diámetros de los cráteres entre ambos hemisferios de la Luna.

La función cut permite categorizar las variables:

hemisphere = cut(crateres$Lat, breaks=c(-90, 0, 90))
head(hemisphere)
## [1] (-90,0] (-90,0] (0,90]  (0,90]  (0,90]  (-90,0]
## Levels: (-90,0] (0,90]

renombramos los niveles del factor

levels(hemisphere) = c("SUR", "NORTE")
head(hemisphere)
## [1] SUR   SUR   NORTE NORTE NORTE SUR  
## Levels: SUR NORTE

Para los diámetros de los cráteres

bp = boxplot(crateres$Diam_km, col = "navy", horizontal = T)

para decidir cómo agrupar los diámetros, observamos el boxplot si atípicos

se pueden hacer clases de 20 - 40 - 60 - 80, mayor que 80

craterSize = cut(crateres$Diam_km,
breaks=c(seq(20, 80, 20), max(crateres$Diam_km)),
include.lowest=TRUE)

y ya podemos construir la tabla de frecuencias y hacer el contraste

(tabla_crateres = table(hemisphere, craterSize))
##           craterSize
## hemisphere [20,40] (40,60] (60,80] (80,2.05e+03]
##      SUR      1615     585     255           328
##      NORTE    1388     523     227           264
chisq.test(tabla_crateres)
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_crateres
## X-squared = 1.184, df = 3, p-value = 0.7568

por lo que no hay evidencias para rechazar \(H_0\).