Analisis de datos para la planificacion estrategica. Usos del paquete likert
Beatriz Valdez
Una de las escala psicométricas más empleadas en el contexto de las ciencias sociales para evaluar las conductas, creencias, valores, opiniones, actitudes y,o, ideales de una persona o una población es la creada por Rensis Likert (1903-1981). A las personas se les pregunda sobre su grado de acuerdo o satisfacción con un contenido que se le presenta. Por ejemplo Por favor, dÃgame si está muy de acuerdo (1), de acuerdo (2), en desacuerdo (3) o muy en desacuerdo (4), con las siguientes afirmaciones. La democracia permite que se solucionen los problemas que tenemos
. R cuenta con numerosos paquetes que nos permiten trabajar y visualizar este tipo de escala. En este post usaré especÃficamente el paquete Likert para analizar data sobre Venezuela obtenida de Latinobarómetro. Es un ejemplo básico
Obtención de los datos
Lo primero que debemos hacer es subir la data. La tenemos en formato .csv y la podemos subir a la consonla de R empleando el asistente de importación de RStudio o, simplemente, empleando cualquiera de las funciones para importar .csv.
# subo la data
mini1995 <- read.csv("~/latinobarometro_1995.csv",
dec= ",", header = TRUE)
Estoy imporantando un marco de datos que se encuentra ubicado en el directorio desde el que estoy operando en R. Si tiene dudas sobre cuál es el directorio de trabajo, escriba en la consola getwd() y presiones enter. De inmediato obtendrá la información sobre el diretorio de trabajo. Si la data que usted desea trabajar no está ubicada en ese directorio, será bueno que le indique a R la ubicación completa. AsÃ, por ejemplo, si tengo la data en una carpeta denominada latinbarometro y esa carpeta está en una unidad extraible D: usted podrÃa indicarle a R el camino hacia la data, o cambiar su directorio de trabajo:
# Opcion 1: indicar el camino completo
mini1995 <- read.csv("d:/latinobarometro/latinbarometro_1995.csv")
# Opcion 2: cambiar directorio de trabajo y obtener la data
setwd("d:/latinobarometro")
mini1995 <- read.csv("~/latinobarometro_1995.csv",
dec= ",", header = TRUE)
Una vez que he obtenido la data, es necesario explorarla, de esta manera sabremos si los datos obtenidos son correctos. Esto es, evaluar si hay datos perdidos, si las categorias de las variables son consistentes, si hay valores extremos, si las categorÃas y lo nombres de las variables no contienen errores de transcripción, etc.
Exploración de la data
Quiero saber qué variables y casos tengo y la información sobre el tipo de data
str(mini1995)
## Classes 'tbl_df', 'tbl' and 'data.frame': 1200 obs. of 25 variables:
## $ enc : int 1 2 3 4 5 6 7 8 9 10 ...
## $ p1 : chr "MUY MALA" "MUY MALA" "REGULAR" "MALA" ...
## $ p4 : chr "REGULAR" "REGULAR" "REGULAR" "REGULAR" ...
## $ p11 : chr "BASTANTE ORGULLOSO" "MUY ORGULLOSO" "MUY ORGULLOSO" "MUY ORGULLOSO" ...
## $ p12 : chr "ESTA EN RETROCESO" "ESTA ESTANCADO" "ESTA ESTANCADO" "ESTA ESTANCADO" ...
## $ p20 : chr "DEMOCRACIA ES PREFERIBLE" "DEMOCRACIA ES PREFERIBLE" "DEMOCRACIA ES PREFERIBLE" "DEMOCRACIA ES PREFERIBLE" ...
## $ p21 : chr "MAS BIEN SATISFECHO" "MAS BIEN SATISFECHO" "NO MUY SATISFECHO" "MUY SATISFECHO" ...
## $ p22 : chr "DEMOCRACIA NO SOLUCIONA PROB." "DEMOCRACIA SOLUCIONA PROB." "DEMOCRACIA SOLUCIONA PROB." "DEMOCRACIA NO SOLUCIONA PROB." ...
## $ p27b : chr "POCA CONFIANZA" "MUCHA CONFIANZA" "MUCHA CONFIANZA" "POCA CONFIANZA" ...
## $ p27d : chr "POCA CONFIANZA" "POCA CONFIANZA" "POCA CONFIANZA" "POCA CONFIANZA" ...
## $ p27i : chr "POCA CONFIANZA" "NINGUNA CONFIANZA" "POCA CONFIANZA" "POCA CONFIANZA" ...
## $ p27j : chr "POCA CONFIANZA" "ALGO DE CONFIANZA" "POCA CONFIANZA" "MUCHA CONFIANZA" ...
## $ p27m : chr "POCA CONFIANZA" "ALGO DE CONFIANZA" "ALGO DE CONFIANZA" "MUCHA CONFIANZA" ...
## $ p31 : int 97 5 98 98 7 10 10 98 5 6 ...
## $ p35 : chr "MANO DURA NO VIENE MAL" "MANO DURA NO ES BUENA" "MANO DURA NO VIENE MAL" "NS" ...
## $ s1 : int 1 1 1 1 1 1 2 2 2 1 ...
## $ s2 : int 32 35 20 74 50 72 18 63 34 32 ...
## $ s3 : int 10 5 5 10 7 3 11 4 7 8 ...
## $ s6 : chr "CASADO/CONVIVIENTE" "CASADO/CONVIVIENTE" "SOLTERO" "CASADO/CONVIVIENTE" ...
## $ s10 : chr "INDEPENDIENTE" "ASALARIADO PRIVADO" "ASALARIADO PRIVADO" "ASALARIADO PRIVADO" ...
## $ s20 : int 3 4 5 1 3 0 6 3 6 4 ...
## $ s24 : chr "REGULAR" "REGULAR" "REGULAR" "REGULAR" ...
## $ edad : chr "25-34" "35-44" "18-24" "65 y mas" ...
## $ educacion: chr "BASICA COMPLETA" "SECUND. INCOMPLETA" "SECUND. COMPLETA" "ANALFABETA" ...
## $ sexo : chr "MASCULINO" "MASCULINO" "MASCULINO" "MASCULINO" ...
## - attr(*, "spec")=List of 2
## ..$ default: list()
## .. ..- attr(*, "class")= chr "collector_guess" "collector"
## ..- attr(*, "class")= chr "col_spec"
La función str() me indica que el marco de daos mini1995 es de tipo tbl_df, tbl y data.frame (marco de datos). Tiene 1200 observaciones y 25 variables. Me indica el nombre de las variables, ejmplo: p1, p4, p11, p20, etc., y me ofrece información sobre el tipo de variables e igualmente me colaca algunas de las categegorÃas de cada variable. La mayoria de las variables son de tipo ch, caracter, o lo que equivale a decir nominales. Otras como la s1, s2, y s3, son de tipo numérico, concretamente son discretas, lo que en R se indica como int.
Luego de la información sobre las variables, la función str nos indica el tipo de atributo asociado con las variables. Si esta última información no se despliega cuando usted emplee str no tiene motivos para preocupars, porque deseamos conocer las caracterÃsticas de las variables.
Este resumen me permitir saber desde ya que no se está trabajando con todo el marco de datos de Latinobarómetro 1995. Por un lado, en ese marco hay aproximadamente 9 mil casos y por el otro, hay más de 200 variables. Observo, además, que debo transformar algunas variables de nominales a ordinales y,o, de intervalo.
Para este ejercicio voy a seleccionar sólo una variable y la voy a explorar y a analizar tomando en cuenta las variables demográficas. Voy a tomar la variable p11. Para saber a qué se refiere esta variable, revise el cuestionario que acompaña a cada marco de datos.
# exploro las categorias de la variable p11
table(mini1995$p11)
##
## BASTANTE ORGULLOSO MUY ORGULLOSO NADA ORGULLOSO
## 174 970 7
## NR NS POCO ORGULLOSO
## 6 4 39
# exploro las categorias de las variables demograficas
sapply(mini1995[, c(20, 22:25)], table)
## $s10
##
## ASALARIADO PRIVADO ASALARIADO PUBLICO ESTUDIANTE
## 173 171 110
## INDEPENDIENTE RESPONSABLE CASA RETIRADO/PENSION
## 325 290 49
## TEMPOR. NO TRABAJA
## 82
##
## $s24
##
## BUENO MALO MUY BUENO MUY MALO REGULAR
## 403 124 88 15 570
##
## $edad
##
## 18-24 25-34 35-44 45-44 55-64 65 y mas
## 285 332 252 161 89 81
##
## $educacion
##
## ANALFABETA BASICA COMPLETA BASICA INCOMPLETA
## 119 220 69
## NA SECUND. COMPLETA SECUND. INCOMPLETA
## 18 277 276
## SUPERIOR COMPLETA SUPERIOR INCOMPLETA
## 113 108
##
## $sexo
##
## FEMENINO MASCULINO
## 604 596
En el primer caso solo deseo explorar una sola variable, la p11. Empleo la funcion table(). En el segundo caso, deseo explorar mas de dos variables. Empleo la funcion sapply. Esta funcion le está diciendo a R: “del marco de datos mini1995, busca la variables 20, y luego de la 22 a la 25 y aplÃcales la función table”.
Me doy cuenta de que debo arreglar las categorÃas de las variables s24 y educacion para que aparezcan en un orden lógico, pues se trata de variables ordinales en las que el orden cuenta.
Limpieza de variables
mini1995$s24 <- factor(mini1995$s24, levels = c("MUY MALO",
"MALO",
"REGULAR",
"BUENO",
"MUY BUENO"))
Le he dicho a R que aplique la función factor() en la variable s24 del marco de datos mini1995. Esta función transformará la variable s24 de nominal a ordinal, y además ordenará las categorÃas siguiendo un orden lógico de muy malo a muy bueno. Hago lo mismo con los intervalos de la variable educacion
mini1995$educacion <- factor(mini1995$educacion,
levels = c("ANALFABETA",
"BASICA INCOMPLETA",
"BASICA COMPLETA",
"SECUND. INCOMPLETA",
"SECUND. COMPLETA",
"SUPERIOR INCOMPLETA",
"SUPERIOR COMPLETA"))
Verifico el resultado
table(mini1995$s24)
##
## MUY MALO MALO REGULAR BUENO MUY BUENO
## 15 124 570 403 88
table(mini1995$educacion)
##
## ANALFABETA BASICA INCOMPLETA BASICA COMPLETA
## 119 69 220
## SECUND. INCOMPLETA SECUND. COMPLETA SUPERIOR INCOMPLETA
## 276 277 108
## SUPERIOR COMPLETA
## 113
Analizamos esta data empleando el paquete likert
Uso del paquete Likert
Para trabajar con el paquee libre, las variables que deseamos analizar deben tener categorÃas similares, por ejemplo: muy bueno, bueno, regular, malo, muy malo. Si las categorÃas difieren, entonces lo recomendable es emplear el paquete HH.
En nuestro marco de dato de Latinobarómetro 1995, en esta ocasión trabajaré con
# subo el paquete
library(likert)
# extraigo algunas variables
items1 <- mini95B[,c("p27b", "p27m", "p27j",
"p27d", "p27i")]
# renombro las variables
names(items1)<- c("Fuerzas Armadas", "Gobierno",
"Partidos PolÃticos","Poder Judicial",
"Congreso")
# transformo el tibble en data.frame
items1 <-data.frame(items1)
l1 <- likert(items1)
l1
## Item NINGUNA CONFIANZA POCA CONFIANZA ALGO DE CONFIANZA
## 1 Fuerzas.Armadas 15.60102 28.81500 23.95567
## 2 Gobierno 42.89384 30.13699 16.18151
## 3 Partidos.PolÃticos 55.44218 28.48639 9.94898
## 4 Poder.Judicial 38.61893 31.96931 16.45354
## 5 Congreso 45.29915 32.39316 13.24786
## MUCHA CONFIANZA
## 1 31.628303
## 2 10.787671
## 3 6.122449
## 4 12.958227
## 5 9.059829
summary(l1)
## Item low neutral high mean sd
## 1 Fuerzas.Armadas 44.41603 0 55.58397 2.716113 1.0718495
## 4 Poder.Judicial 70.58824 0 29.41176 2.037511 1.0337106
## 2 Gobierno 73.03082 0 26.96918 1.948630 1.0101956
## 5 Congreso 77.69231 0 22.30769 1.860684 0.9639753
## 3 Partidos.PolÃticos 83.92857 0 16.07143 1.667517 0.8882204
title <- "¿Cuanta confianza tiene Ud. en...?"
plot(l1, center=1.5, wrap=30) + ggtitle(title)
No hay comentarios.:
Publicar un comentario