Chapter 2 Module II
2.1 Variables categóricas
La función tally se puede usar para explorar variables categóricas. Para explorar su potencial primero simularemos una base de datos.
# creamos una base de datos de ganadores de presidentes municipales en un estado de 20 municipios
<-c("PRI","PAN","MORENA")
partidos<-c("SI","NO") #si es de mayoría indígena
mun_indigena
<-sample(partidos, 20, replace = T) # le indicamos que elija aleatoriamente un ganador del vector partidos para cada distrito
ganador<-sample(mun_indigena, 20, replace = T) # de igual manera le indicamos que nos diga aleatoriamente si el municipio es de mayoría indígena
mayoria_indigena
<-seq(1:20) # indicamos un numero para cada distrito
distrito
#creamos base de datos
<-data.frame(ganador,distrito,mayoria_indigena) elecciones
Ahora usaremos el comando tally del paquete mosaic. Recordemos que cada comando tiene parametros opcionales y obligatorios (y ademas su propia sintaxis dentro de dichos parametros). Para saber con certeza estos detalles siempre es bueno googlear la documentación de cada paquete. Por el momendo, tally necesita al menos que le indiquemos una variable a analizar y la base de datos donde se encuentra.
library(mosaic)
# en este caso se pone la variable despues de ~ y los datos como respuesta al parámetro data.
tally(~ ganador, data=elecciones)
## ganador
## MORENA PAN PRI
## 10 7 3
# en este caso, hay un parámetro booleano, es decir que necesita una respuesta TRUE o FALSE.
# este parámetro agrega la cantidad de observaciones
tally(~ ganador, data=elecciones,margins=TRUE)
## ganador
## MORENA PAN PRI Total
## 10 7 3 20
# en estos dos casos vemos que el parámetro format acepta caracteres, esto quiere decir que hay una lista predeterminada de palabras que acepta. Es aquí donde valdría la pena googlear que más parámetros acepta.
tally(~ ganador, data=elecciones, format="percent")
## ganador
## MORENA PAN PRI
## 50 35 15
tally(~ ganador, data=elecciones, format="proportion")
## ganador
## MORENA PAN PRI
## 0.50 0.35 0.15
2.2 Tablas de contingencia
Las tablas de contingencia son muy importantes en estadística porque nos permiten ver relaciones entre las distintas variables de manera muy intuitiva. En ellas se muestra la coocurrencia entre las variables.
# basta con agregar otra variable con un + o un |
tally(~ ganador + mayoria_indigena , data=elecciones)
## mayoria_indigena
## ganador NO SI
## MORENA 5 5
## PAN 1 6
## PRI 2 1
tally(~ ganador | mayoria_indigena, data=elecciones,margins=TRUE)
## mayoria_indigena
## ganador NO SI
## MORENA 5 5
## PAN 1 6
## PRI 2 1
## Total 8 12
tally(~ ganador + mayoria_indigena, data=elecciones, format="percent")
## mayoria_indigena
## ganador NO SI
## MORENA 25 25
## PAN 5 30
## PRI 10 5
tally(~ ganador + mayoria_indigena, data=elecciones, format="proportion")
## mayoria_indigena
## ganador NO SI
## MORENA 0.25 0.25
## PAN 0.05 0.30
## PRI 0.10 0.05
Además podemos calcular el momio. Recordemos que el momio es la frecuencia de una alternavia sobre la frecuencia de la otra. Es decir, el momio de A sobre B es \(\frac{P(A)}{P(B)}\).
Ahora, en el código esto no se ve tan inmediato. Hay que usar el comando oddsRatio y de parametro le indicamos toda el comando tally que hemos estado usando pero ahora en lugar de poner que queremos una tabla de contingencia de ganador + mayoria_indigena indicamos que solo queremos el output de la tabla de contingencia con ganador fijado en “MORENA.”
# Ade
oddsRatio(tally(~ (ganador=="MORENA") + mayoria_indigena, data=elecciones))
## [1] 0.4285714
Ahora de tarea intente hacer lo mismo para los demás partidos.
Finalmente usaremos otro paquete sugerido en el SG: g models. El comando crosstable nos arroja los momios y las tablas de contingencia de manera directa.
require(gmodels) #require es un install.packages y un library al mismo tiempo
## Loading required package: gmodels
# analicemos la sintaxis: indicamos como primer parámetro la base de datos, después la instrucción de que para cada combinación de ganador y mayoría indigena nos arroje información
with(elecciones, CrossTable(ganador, mayoria_indigena,
prop.r=FALSE, prop.chisq=FALSE, prop.t=FALSE))
##
##
## Cell Contents
## |-------------------------|
## | N |
## | N / Col Total |
## |-------------------------|
##
##
## Total Observations in Table: 20
##
##
## | mayoria_indigena
## ganador | NO | SI | Row Total |
## -------------|-----------|-----------|-----------|
## MORENA | 5 | 5 | 10 |
## | 0.625 | 0.417 | |
## -------------|-----------|-----------|-----------|
## PAN | 1 | 6 | 7 |
## | 0.125 | 0.500 | |
## -------------|-----------|-----------|-----------|
## PRI | 2 | 1 | 3 |
## | 0.250 | 0.083 | |
## -------------|-----------|-----------|-----------|
## Column Total | 8 | 12 | 20 |
## | 0.400 | 0.600 | |
## -------------|-----------|-----------|-----------|
##
##
Finalmente aprovechamos el paquete mosaic para hacer una reprecentación gráfica. Primero guardamos en una variable los datos que nos arroja tally. Después aplicamos el comando mosaicplot con el parametro de nuestra variable recién creada.
<- tally(~ ganador + mayoria_indigena, data=elecciones)
mi_contingencia mosaicplot(mi_contingencia)