En muchas ocasiones encontrarás datos resumidos en una tabla de contingencia y será preciso llevar esa información a la memoria de R para poder manejarlo.
Se presentan dos herramientas diferentes:
Vamos a ilustrarlo a través del siguiente ejemplo:
A partir de la siguiente tabla de contingencia, determina si hay relación entre las variables “estra expuestos a un contaminante” y “padecer cierta enfermedad”
Enfermos | Sanos | |
---|---|---|
Expuesto | 192 | 158 |
No expuesto | 4 | 9646 |
Una opción es transcribir la tabla de contingencia mediante una matriz:
matrix()
.nrow
(eso, junto con el nº de elementos que hay en el vector, determina el nº de columnas).byrow = TRUE
como escribimos, de izquierda a derecha y de arriba a abajo) o por columnas (byrow = FALSE
de arriba a abajo y de izquierda a derecha).Observa los siguientes ejemplos
(tablaObservada = matrix( c(192, 4, 158, 9646),
nrow= 2,
byrow = FALSE))
## [,1] [,2]
## [1,] 192 158
## [2,] 4 9646
(tablaObservada = matrix( c(192, 4, 158, 9646),
nrow= 4,
byrow = FALSE))
## [,1]
## [1,] 192
## [2,] 4
## [3,] 158
## [4,] 9646
(tablaObservada = matrix( c(192, 4, 158, 9646),
nrow= 2,
byrow = TRUE))
## [,1] [,2]
## [1,] 192 4
## [2,] 158 9646
A continuación (siempre que la ´matriz represente fielmente la tabla de contingencia) puedes hacer el contraste chi cuadrado
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
para rechazar H0: las variables son independientes.
El resultado es el mismo si intercambias filas y columnas, porque el valor del estadístico \[\sum \sum \frac{(o_{ij}-e_{ij})^2}{e_{ij}} \] es el mismo.
Otra opción consiste en seleccionar la tabla sobre el fichero html con el ratón, copiarla e, inmediatamente, ejecutar en R la siguiente orden
tablaObservada = read.table(file = "clipboard", header = T, sep = "\t")
## Warning in read.table(file = "clipboard", header = T, sep = "\t"): incomplete
## final line found by readTableHeader on 'clipboard'
Así, R accede al contenido de Portapapeles, que en este momento contiene la tabla que acabas de copiar. Aparece un aviso (Warning), al que no hay que hacer caso :)
SI USAS MAC el código que debes emplear es
tablaObservada = read.table(pipe("pbpaste"), sep="\t", header=TRUE)
SI USAS LINUX
tablaObservada = read.clipboard(sep="\t",header = T)
Fíjate en que, independientemente del sistema operativo, tendrás que ajustar header
y dec
en función del aspecto que presente tu tabla y sus datos.
Finalmente, hacer el contraste Chi cuadrado sobre la tabla/matriz construida
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
para rechazar H0: las variables son independientes.