Capítulo 5 Análisis exploratorio de datos | Data Política: Manual de R para estadística aplicada al análisis político (2023)

Como sabemos, los estadísticos de tendencia central van a depender deltipo de variable que estemos analizando.

Para practicar este apartado vamos a utilizar la base de datos de Lapopdel año 2017. Lapop es elProyecto de Opinión Pública de América Latina implementado por laUniversidad de Vanderbilt, el cual es un proyecto de investigaciónmultinacional especializado en el desarrollo, implementación y análisisde encuestas de opinión pública.

Abrimos la base de datos desde nuestro repositorio:

library(rio)link="https://github.com/DataPolitica/salidas/raw/master/Data/sub_lapop.sav"lapop=import(link)

Esta base de datos ha sido editada con fines didácticos (idioma,recodificación, etc).

5.1 Para nominales

5.1.1 Preparación

Selecciones la variable urbanorural y procedemos a configurarlaadecuadamente.

Primero identifiquemos cómo el R está leyendo la variable.

str(lapop$urbanorural)## num [1:2153] 2 2 2 2 2 2 2 2 2 2 ...## - attr(*, "label")= chr "Urbano / Rural"## - attr(*, "format.spss")= chr "F8.2"## - attr(*, "display_width")= int 9## - attr(*, "labels")= Named num [1:2] 1 2## ..- attr(*, "names")= chr [1:2] "Urbano" "Rural"class(lapop$urbanorural)## [1] "numeric"

Luego, al ver que aún se encuentra como numérico, entonces loconvertimos en factor:

lapop$urbanorural=as.factor(lapop$urbanorural)class(lapop$urbanorural)## [1] "factor"

Verificamos los niveles y, de acuerdo con la metadata, le asignamos lasetiquetas a cada uno de los mismos.

levels(lapop$urbanorural)## [1] "1" "2"levels(lapop$urbanorural)<-c("Urbano","Rural")levels(lapop$urbanorural)## [1] "Urbano" "Rural"

Asimismo, podemos solicitar una tabla que nos muestre las proporcionespor cada categoría. Para ello, utilizamos la función prop.table().Cuando escribimos esta función hay que tener en cuenta que la tenemosque aplicar sobre la tabla de frecuencias normal (que aplicamosanteriormente):

prop.table(table(lapop$urbanorural))## ## Urbano Rural ## 0.6149559 0.3850441

Si queremos los porcentaje hacemos lo mismo pero al final le decimos quelo multiple por 100 (*100):

prop.table(table(lapop$urbanorural))*100## ## Urbano Rural ## 61.49559 38.50441

Ya tenemos la variable lista para aplicar técnicas de análisisdescriptivo.

5.1.2 Estadísticos descriptivos

Lo primero que podemos hacer es solicitar la función summary. Estafunción nos va a dar una mirada rápida al contenido de nuestra variable.En el caso de ser factor, nos va a mostrar las frecuencias (incluye losNA si los hubiera):

summary(lapop$urbanorural)## Urbano Rural ## 1324 829

Como sabemos el estadístico más idóneo para variables nominales es lamoda. Por ello, hacemos uso del paquete DescTools y de la funciónMode():

library(DescTools)Mode(lapop$urbanorural)## [1] Urbano## attr(,"freq")## [1] 1324## Levels: Urbano Rural

Lo que nos dice el resultado es que la moda es la categoría Urbano ynos indica la frecuencia.

Otra opción también es solicitar una tabla simple para ver la frecuenciade cada categoría.

table (lapop$urbanorural)## ## Urbano Rural ## 1324 829

5.1.3 Gráficos

Lo primero que podemos solicitar es un diagrama de pie o de sectores.Nótese que primero debemos crear un objeto que sea la tabla de lavariable que deseamos graficar, en este caso, de urbano rural. De esamanera, el programa podrá utilizar los datos y plasmarlos en un gráfico.

mi_tabla <- table(lapop$urbanorural)pie(mi_tabla)

Capítulo 5 Análisis exploratorio de datos | Data Política: Manual de R para estadística aplicada al análisis político (1)

(Video) Curso: Análisis de Datos con R para la Agricultura (6)

Image

Es recomendable graficar un máximo de 7 sectores. Si colocamos una varaible con más sector puede resultar confusa la interpretación.

También podemos solicitar un diagrama de barras.

barplot(mi_tabla)

Agregando más detalles a nuestros gráficos

Hasta este momento hemos visto que podemos solicitar gráficos de unaforma muy práctica. Sin embargo, nosotros podemos solicitar un productomás elaborado en la medida en que agreguemos más características alcódigo.

Por ejemplo, si deseamos un diagrama de barras azul escribimos:

barplot(mi_tabla, col="blue")

Capítulo 5 Análisis exploratorio de datos | Data Política: Manual de R para estadística aplicada al análisis político (3)

Image

Si deseamos un diagrama de barras azul y con título escribimos:

barplot(mi_tabla,col="blue", main="Casos según su lugar de procedencia")

Capítulo 5 Análisis exploratorio de datos | Data Política: Manual de R para estadística aplicada al análisis político (4)

Image

Como nos damos cuenta, nosotros podemos ir agregando más característicasa nuestro código. Es posible que recuerdes ejemplos de códigos deprogramación que son líneas interminables. Eso es así porque losprogramadores elaboran productos muy específicos y que, en su mayoría deveces, requieren la especificación de muchas características.

Nuestro objetivo será avanzar en el uso de estos códigos de programaciónpara poder, al igual que los programadores, elaborar análisisestadísticas cada vez más complejos y específicos.

5.2 Para ordinales

Abrimos la base de datos LAPOP desde nuestro repositorio:

library(rio)link="https://github.com/DataPolitica/salidas/raw/master/Data/sub_lapop.sav"lapop=import(link)

5.2.1 Preparación

Esta vez vamos a utilizar la variable Interés en la política.Procedemos a configurarla adecuadamente.

Primero identifiquemos cómo el R está leyendo la variable.

str(lapop$interes)## num [1:2153] 2 2 1 1 1 2 2 2 2 3 ...## - attr(*, "label")= chr "Interés en la política"## - attr(*, "format.spss")= chr "F8.2"## - attr(*, "display_width")= int 11## - attr(*, "labels")= Named num [1:4] 1 2 3 4## ..- attr(*, "names")= chr [1:4] "Nada" "Un poco" "Algo" "Mucho"class(lapop$interes)## [1] "numeric"

Luego, al ver que aún se encuentra como numérico, entonces loconvertimos en factor ordenado:

(Video) Audiobooks.com-YouTube : Pensando Rápido y Lento

lapop$interes=ordered(lapop$interes)class(lapop$interes)## [1] "ordered" "factor"

Verificamos los niveles y, de acuerdo con la metadata, le asignamos lasetiquetas a cada uno de los mismos. En este caso los significados son:1, “Nada”; 2, “Poco”; 3, “Algo”; y 4, “Mucho”.

levels(lapop$interes)## [1] "1" "2" "3" "4"levels(lapop$interes)<-c("Nada","Poco", "Algo", "Mucho")levels(lapop$interes)## [1] "Nada" "Poco" "Algo" "Mucho"

Ya tenemos la variable lista para aplicar técnicas de análisisdescriptivo para ordinales.

5.2.2 Estadísticos descriptivos

Al igual que la sección anterior, podemos solicitar la funciónsummary() para que nos muestre las frecuencias por cada categoría (eneste caso tampoco tenemos NA´´s):

summary(lapop$interes)## Nada Poco Algo Mucho ## 632 787 532 202

Utilizando el paquete DescTools podemos solicitar la moda, con lafunción Mode(); y la mediana, con la función Median():

library(DescTools)Mode(lapop$interes)## [1] Poco## attr(,"freq")## [1] 787## Levels: Nada < Poco < Algo < MuchoMedian(lapop$interes)## [1] Poco## Levels: Nada < Poco < Algo < Mucho

Lo que nos dice el resultado es que la moda es la categoría Poco. Lamediana nos dice que, si ordenamos los resultados de menor a mayor, elvalor central es Poco. También podemos interpretarlo como que “almenos el 50% de los casos tienen poco interés en la política”.

Otra opción, al igual que las nominales, es solicitar una tabla simplepara ver la frecuencia de cada categoría.

table (lapop$interes)## ## Nada Poco Algo Mucho ## 632 787 532 202

5.2.3 Gráficos

Primero creamos un objeto que sea la tabla de la variable que deseamosgraficar, en este caso, interés por la política.

mi_tabla <- table(lapop$interes)mi_tabla## ## Nada Poco Algo Mucho ## 632 787 532 202

Solicitamos un diagrama de pie o sector con la función pie():

pie(mi_tabla)

Solicitamos un diagrama de barras con la función barplor():

barplot(mi_tabla)

Capítulo 5 Análisis exploratorio de datos | Data Política: Manual de R para estadística aplicada al análisis político (6)

Image

5.3 Para numéricas

5.3.1 Preparación

Abrimos la base de datos LAPOP desde nuestro repositorio:

library(rio)link="https://github.com/DataPolitica/salidas/raw/master/Data/sub_lapop.sav"lapop=import(link)

Seleccionamos la variable ingresos

5.3.2 Estadísticos descriptivos

Solicitar la función summary() y vamos a ver que el resultado variablesignificativamente de los resultados de las variables categóricas:

summary(lapop$ingresos)## Min. 1st Qu. Median Mean 3rd Qu. Max. ## 1316 2661 3010 3012 3341 4667

Como vemos, el summary ahora nos muestra los principales estadísticos deuna variable numérica, es decir: mínimo, 1er cuartil, mediana, media opromedio, 3er cuartil y máximo. Siempre que tengamos una variablenumérica comencemos por solicitar esta función.

(Video) Foro Precision Psychology - Sesión VI

5.3.3 Estadísticos de dispersión

La lógica es la misma, colocamos la función y entre paréntesis el nombrede la variable:

Si deseamos la desviación estándar utilizamos la función sd():

sd(lapop$ingresos)## [1] 498.6063

Si deseamos la varianza utilizamos la función var():

var(lapop$ingresos)## [1] 248608.3

También podemos pedir estadísticos de dispersión.

Para solicitar la asimetría y curtosis primero abrimos el paquetee1071:

library(e1071)

Para la asimetría utilizamos la función skewness():

skewness(lapop$ingresos)## [1] 0.0544436

Para la curtosis utilizamos la función kurtosis():

kurtosis(lapop$ingresos)## [1] -0.0678835

5.3.4 Gráficos

En este caso, como estamos ante una variable numérica, no necesitamoscrear una tabla antes de solicitar los gráficos.

  • Histograma

Solicitemos un histograma con la función hist():

hist(lapop$ingresos)

Capítulo 5 Análisis exploratorio de datos | Data Política: Manual de R para estadística aplicada al análisis político (7)

Image

  • Diagrama de cajas o boxplot

Solicitemos un diagrama de cajas con la función boxplot():

boxplot(lapop$ingresos)

5.4 Análisis bivariado

5.4.1 Tablas de contingencia

Abrimos la base de datos LAPOP desde nuestro repositorio:

library(rio)link="https://github.com/DataPolitica/salidas/raw/master/Data/sub_lapop.sav"lapop=import(link)

Verificamos y configuramos adecuadamente las variables que utilizaremos

lapop$urbanorural=as.factor(lapop$urbanorural)levels(lapop$urbanorural)<-c("Urbano","Rural")lapop$sexo=as.factor(lapop$sexo)levels(lapop$sexo)<-c("Hombre","Mujer")

Una vez que hemos identificamos dos variables categóricas lo primerosque podemos solicitar es una tabla de contingencia.

Ante de seguir te sugiero ver el siguiente tutorial para solicitartablas de contigencias:

(Video) LA INVESTIGACIÓN CUALITATIVA (ENFOQUE CUALITATIVO) | DEFINICIÓN, CARACTERÍSTICAS Y DISEÑOS.

Como vimos en el video, podemos pedir tablas de contingencia con lafunción table(). Hagamos una tabla para las variables urbanorural ysexo:

Primero hallemos una tabla de contingencia simple, con sólo lasfrecuencias. La llamaremos tabla1:

tabla1 <- table(lapop$urbanorural, lapop$sexo)tabla1## ## Hombre Mujer## Urbano 687 637## Rural 434 395

Podemos agregarle los totales marginales escribiendo la siguientefunción addmargins()

addmargins(tabla1)## ## Hombre Mujer Sum## Urbano 687 637 1324## Rural 434 395 829## Sum 1121 1032 2153

Ahora, pidamos una tabla de contingencia con porcentaje Tenemos quehacer referencia a la tabla creada anteriormente y usar el comandoprop.table() y lo multiplicamos por 100. La llamaremos tabla2:

tabla2 <- prop.table(tabla1)*100tabla2## ## Hombre Mujer## Urbano 31.90896 29.58662## Rural 20.15792 18.34649

Vemos que nos da los valores totales, pero nosotros queremos sólo losporcentaje por columna. Para ello, debemos hacer referencia a lascolumnas dentro del comando agregando el número 2 (si ponemos 1aparecerán los porcentaje por filas)

tabla3 <- prop.table(tabla1, 2)*100tabla3## ## Hombre Mujer## Urbano 61.28457 61.72481## Rural 38.71543 38.27519

Por último, podemos agregarle los totales marginales escribiendo lasiguiente función addmargins()

addmargins(tabla3)## ## Hombre Mujer Sum## Urbano 61.28457 61.72481 123.00937## Rural 38.71543 38.27519 76.99063## Sum 100.00000 100.00000 200.00000

5.4.2 Una numérica y una categórica

Para mostrar los descriptivos de una variable numérica según unavariable categórica tenemos que considerar a esta última como grupos. Deesta manera, lo que hacemos en realidad es la comparación de la numéricaentre 2 o más grupos.

Para ello, utilizamos el paquete psych()

library(psych)

Para describir la varible podemos utilizar la función describeBy().Notemos que primero debemos poner la variable numérica y luego el grupode comparación.

Por ejemplo, obtengamos los estadísticos descriptivos de la variableEdad según si la persona pertenece al ámbito rural o urbano(categórica/grupos):

describeBy(lapop$edad,group=lapop$urbanorural)## ## Descriptive statistics by group ## group: Urbano## vars n mean sd median trimmed mad min max range skew kurtosis se## X1 1 1324 37.79 14.59 35 36.51 14.83 18 86 68 0.67 -0.27 0.4## ------------------------------------------------------------ ## group: Rural## vars n mean sd median trimmed mad min max range skew kurtosis se## X1 1 829 36.96 13.68 35 35.84 14.83 18 80 62 0.63 -0.25 0.48

También podemos solicitar un diagrama de cajas o boxplot según losgrupos:

boxplot(lapop$edad~lapop$urbanorural)

Capítulo 5 Análisis exploratorio de datos | Data Política: Manual de R para estadística aplicada al análisis político (9)

Image

5.4.3 Dos variables numéricas

Utilicemos la base de datos trabajadores:

library(rio)base_trabajadores="https://github.com/DataPolitica/salidas/raw/master/Data/trabajadores.sav"trabajadores=import(base_trabajadores)

Para analizar la relación entre dos variables numéricas es muy comúnreferirse al gráfico de dispersión.

Para ello, solicitamos el gráfico con la función plot(). Entreparéntesis colocar las dos variables numéricas: el salario inicial y elsalario actual de los trabajadores de una empresa.

plot(trabajadores$salario_actual, trabajadores$salario_inicial)

Capítulo 5 Análisis exploratorio de datos | Data Política: Manual de R para estadística aplicada al análisis político (10)

Image

Podemos especificar más elementos de nuestro gráfico de dispersión.Agreguemos título del gráfico y etiquetas de los ejes X e Y:

plot(trabajadores$salario_actual, trabajadores$salario_inicial, main="Relación entre salario inicial y salario final", xlab="Salario actual", ylab="Salario final")

Videos

1. Curso libre introducción a Python grupo 3- primera sesión
(JHONNY OSORIO GALLEGO)
2. TEMA 10 Modelos de regresión espacial D
(Coro Chasco)
3. CLASE ABIERTA #13: Análisis Cualitativo de contenido en Atlas Ti.
(Estación Lastarria)
4. LOS RESULTADOS DE LA INVESTIGACIÓN
(Dr. Rafael Jesus Fernandez Jaime)
5. Aula A
(ALICE VIII Congreso 2020)
6. Análisis de encuestas en R: Las mexicanas frente a la corrupción y la impunidad
(Community of Bioinformatics Software Developers)
Top Articles
Latest Posts
Article information

Author: Dong Thiel

Last Updated: 03/11/2023

Views: 6258

Rating: 4.9 / 5 (59 voted)

Reviews: 90% of readers found this page helpful

Author information

Name: Dong Thiel

Birthday: 2001-07-14

Address: 2865 Kasha Unions, West Corrinne, AK 05708-1071

Phone: +3512198379449

Job: Design Planner

Hobby: Graffiti, Foreign language learning, Gambling, Metalworking, Rowing, Sculling, Sewing

Introduction: My name is Dong Thiel, I am a brainy, happy, tasty, lively, splendid, talented, cooperative person who loves writing and wants to share my knowledge and understanding with you.