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
Se aprovecha para tratar el problema de cómo construir la tabla a partir del formato en que se reciben 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
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
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
(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
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\).