Análisis de datos obtenidos a través de cuestionarios con ayuda de R
Abstract
El objetivo de este trabajo es el desarrollo de un procedimiento en R-Programa para el análisis de datos obtenidos a través de cuestionarios que contenga la construcción de tablas, resúmenes numéricos básicos y visualización gráfica. Además, se realiza un análisis de las relaciones bivariadas y medidas de asociación para variables cuantitativas, ordinales y nominales. Para ello, con el fin de ilustrar el análisis, se clasifican las variables según sus características y se aplica este procedimiento a distintos conjuntos de datos. Por último, se crea un paquete en R donde se explican y describen todas las funciones necesarias para realizar un estudio completo, así como sus argumentos y usos.
Full text
Grado en Estadística TRABAJO FIN DE GRADO Análisis de datos obtenidos a través de cuestionarios con ayuda de R Celia Romero Gustos Sevilla, Junio de 2020
Índice general Resumen ....................................... ii Abstract ....................................... iii 1. Introducción 1 1.1. Tipos de variables. .............................. 1 1.2. Descripción de la base de datos ....................... 2 1.3. Librerías .................................... 3 2. Análisis univariante 5 2.1. Introducción .................................. 5 2.2. Tablas ..................................... 5 2.2.1. Variables dicotómicas ......................... 5 2.2.2. Variables ordinales .......................... 6 2.2.3. Variables nominales .......................... 7 2.2.4. Variables cuantitativas continuas .................. 8 2.2.5. Variables cuantitativas discretas ................... 9 2.2.6. Otras funciones para variables cuantitativas ............ 10 2.2.6.1. Dividida en dos partes ................... 10 2.2.6.2. Dos variables cuantitativas por columnas ......... 11 2.2.6.3. Dos variables cuantitativas por filas ............ 12 2.3. Visualización gráfica. ............................. 13 2.3.1. Variables cualitativas ......................... 13 2.3.2. Visualización gráfica de Escalas Likert. ............... 15 2.3.2.1. Para una variable ...................... 15 2.3.2.2. Para bloques de tres variables ordinales con las mismas etiquetas .......................... 16 2.3.3. Variables cuantitativas continuas .................. 17 2.3.4. Variables cuantitativas discretas ................... 21 3. Análisis conjunto de variables 23 3.1. Introducción. ................................. 23 3.2. Tablas. ..................................... 23 3.2.1. Tablas para dos variables ....................... 23 3.2.1.1. Variable cualitativa con respecto a otra cualitativa . . . 23 3.2.1.2. Variable cuantitativa según variable cualitativa ..... 25 3.2.2. Tablas para tres o más variables. .................. 26 3.2.2.1. Variable cualitativa con respecto a otras dos variables cualitativas. ......................... 26 3.2.2.2. Variable cuantitativa según dos variables cualitativas . . 27 i
3.3. Visualización gráfica ............................. 29 3.3.1. Gráficos para dos variables. ..................... 29 3.3.1.1. Variable cualitativa en función de otra cualitativa . . . . 29 3.3.1.2. Variable cuantitativa en función de una cualitativa. . . . 30 3.3.1.3. Variable continua respecto de otra variable continua . . 35 3.3.2. Gráficos para más de tres variables. ................. 37 3.3.2.1. Relación entre dos variables continuas clasificadas por una nominal ........................... 37 3.3.2.2. Relación entre dos variables continuas clasificadas por dos variables nominales ..................... 38 4. Medidas de asociación 41 4.1. Introducción .................................. 41 4.2. Algunas medidas de asociación ........................ 42 4.2.1. Correlación de Pearson ........................ 42 4.2.2. Correlación de Spearman ....................... 42 4.2.3. Correlación de Kendall ........................ 43 4.2.4. Lambda de Goodman Kruskal .................... 44 4.3. Ejemplos: ................................... 46 4.3.1. Coeficiente de correlación ...................... 46 4.3.2. Matriz de correlaciones ........................ 47 4.3.3. Medida de asociación Lambda de Goodman Kruskal. ....... 47 4.3.4. Visualización gráfica matriz de correlaciones ............ 48 5. Creación del paquete en R 50 5.1. Introducción .................................. 50 5.2. Proceso de creación .............................. 50 5.3. Alojar el paquete en Github ......................... 52 5.4. Resultados ................................... 52 Bibliografía 53 –> ii
Resumen El objetivo de este trabajo es el desarrollo de un procedimiento en R-Program para el análisis de datos obtenidos a través de cuestionarios que contenga la construcción de tablas, resúmenes numéricos básicos y visualización gráfica. Además, se realiza un análisis de las relaciones bivariadas y medidas de asociación para variables cuantitativas, ordinales y nominales. Para ello, con el fin de ilustrar el análisis, se clasifican las variables según sus características y se aplica este procedimiento a distintos conjuntos de datos. Por último, se crea un paquete en R donde se explican y describen todas las funciones necesarias para realizar un estudio completo, así como sus argumentos y usos. iii
Abstract The aim of this work is to develop a procedure in R-Program for the analysis of questionnaire data. The study contains frequency tables, basic numerical summaries, and graphical visualization. In addition, an analysis of bivariate relationships and association measures for quantitative, ordinal, and nominal variables is performed. For this, the variables are classified according to their characteristics. This procedure is applied to different data sets in order to illustrate the study. Finally, a package in R with all the functions used for the different types of analysis and variables is created. In this package in R, necessary functions to carry out a complete study are explained and described, as well as their arguments and uses. iv
Capítulo 1 Introducción La estadística se utiliza a diario en áreas muy diferentes, desde investigaciones con millones de datos hasta pequeñas muestras. La encuesta es uno de los procedimientos de investigación más usado en multitud de campos científicos. Se ha convertido en una actividad cotidiana en la que todos participamos en algún momento. La encuesta ha alcanzado una gran popularidad por los efectos positivos que puede llegar a tener, genera mucha información, que, usada de manera correcta, es de gran utilidad para conocer la opinión pública acerca de distintos ámbitos. Podemos ver la importancia de las encuestas en la sociedad actual observando la presencia de éstas en los medios de comunicación. La encuesta se considera una técnica de recogida de datos a través de un interrogatorio a los sujetos cuya finalidad es la de obtener información acerca de un tema previamente planteado. El cuestionario, es el instrumento de recogida de esos datos, en él aparecen las preguntas de forma sistemática y ordenada. (López-Roldán & Fachelli 2015) Las encuestas carecerán de tanta utilidad si no existe un análisis posterior que permita obtener conclusiones tanto analíticas como gráficas. Este capítulo consta de tres secciones. En la sección 1.1 se encuentran las definiciones de los tipos de variables que se obtienen de un cuestionario y la manera en la que se han agrupado para realizar su análisis estadístico. La sección 1.2 presenta la base de datos que se utilizará como ilustración a lo largo del trabajo. Finalmente, la sección 1.3 muestra una pequeña reseña de cada una de las librerías usadas en los siguientes capítulos. 1.1. Tipos de variables. Según los valores que tomen las variables aleatorias pueden clasificarse en cualitativas o cuantitativas. Las variables cualitativas (también llamadas categóricas) son aquellas que no pueden asociarse de forma natural a un número. Aunque es frecuente asignarle un código numérico para volcarlo a una base de datos y facilitar su uso, este valor no es relevante. Estas variables a su vez se dividen en nominales u ordinales en función de la escala de medida. Las variables nominales permiten clasificar cada caso según su pertenencia a una u otra categoría establecida en la variable. Indica cualidad y no tienen un orden ni 1
1.2. DESCRIPCIÓN DE LA BASE DE DATOS relación entre las categorías prefijadas (ciudad de origen). Si las variables nominales sólo tiene dos categorías se llaman variables dicotómicas o binarias (fumador o no fumador). Las variables ordinales son aquellas que además de distinguir entre categorías, establecen un orden entre ellas. Estas variables son muy utilizadas en las encuestas. Es el caso de las valoraciones de aspectos o productos, de niveles de acuerdo frente a una afirmación o propuesta, de niveles de satisfacción ante un impulso, vivencias, acciones, etc. Son, por tanto, las cuestiones que llevan asociadas las opciones de respuesta del tipo “Muy bien, bien, regular,...”Muy deacuerdo, de acuerdo,...“,”Muy satisfecho, satisfecho,...", etc. Incluso se podrían incluir las cuestiones numéricas que se han agrupado en intervalos, como edad, niveles de renta, etc. Las variables cuantitativas son aquellas que adoptan valores numéricos, representando cantidades, medidas (la estatura o el número de hijos). Pueden distinguirse dos subtipos: continuas y discretas. Las variables continuas , toman sus valores en un espacio continuo, generalmente dentro de un intervalo numérico, de forma que entre dos valores posibles, siempre existe un posible valor intermedio. Obviamente, esta propiedad queda restringida a la precisión de la medida que se esté realizando (peso de un bebé al nacer). Las variables discretas tienen sus valores “aislados”, es decir, el número de valores posibles entre dos valores dados es finito. Habitualmente se representan a través de los números enteros, de forma que pueden enumerarse y existen valores “consecutivos” entre los que no puede haber otro (número de páginas de un libro). Es importante esta clasificación porque dependiendo del tipo de variable se aplicará un análisis u otro para su mejor visualización. 1.2. Descripción de la base de datos Para probar las funciones creadas, se ha usado un fichero Excel con datos aleatorios simulando un cuestionario. Cada variable ha sido generado con funciones de *Excel, excepto las variables altura y peso que han sido alteradas manualmente para generar un gráfico más intuitivo. Los datos contienen la respuesta de 249 personas encuestadas. A continuación, se describen las diferentes preguntas del cuestionario, así como sus posibles respuestas o explicación y el tipo de variable. CAPÍTULO 1. INTRODUCCIÓN 2
1.3. LIBRERÍAS Cuadro 1.1: Descripción de los datos Variables Tipo Descripción V1 (Sexo) Dicotómica 0-Hombre, 1-Mujer V2 (Ingresos) Continua Ingresos brutos mensuales V3 (Grupos de edad ) Ordinal 118 a 29 , 230 a 49, 350 a 69, 470 años y más V4 (Ciudad de Origen) Nominal 1-Sevilla, 2-Madrid, 3-Barcelona, 4-NSNC V5 (Valore comida) Ordinal 1-Muy bueno, 2-Bueno, 3-Regular, 4-Malo, 5-Muy malo V6 (Valore limpieza) Ordinal 1-Muy bueno, 2-Bueno, 3-Regular, 4-Malo, 5-Muy malo V7 (Valore personal) Ordinal 1-Muy bueno, 2-Bueno, 3-Regular, 4-Malo, 5-Muy malo V8 (Altura) Continua Altura actual del individuo V9 (Hijos) Discreta Número de hijos V10 (Peso) Continua Peso actual del individuo Todas las variables son de tipo numérico, o bien, codificadas con códigos numéricos para una mayor facilidad del encuestador, de esta manera se disminuye el número de valores perdidos por utilizar términos erróneos. Para algunas funciones se necesita que algunas variables sean de tipo factor, por tanto, se transformarán. En la siguiente tabla se incluye una muestra de los primeros casos de la base de datos generada. Cuadro 1.2: Previsualización datos V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 1 1778 3 1 4 1 1 1.75 4 75 0 1087 4 2 4 5 3 1.77 0 77 0 1214 4 2 4 2 3 1.62 1 60 1 1173 4 1 1 4 2 1.54 2 60 0 2276 1 2 4 1 2 1.74 2 55 1 1953 2 1 2 3 3 1.85 4 78 1.3. Librerías Para este trabajo se han usado las siguientes librerías: readxl : Importa datos de excel(.xlsx y .xls) a R. Se ha usado la función read_excel (Wickham & Bryan 2019) dplyr : Una herramienta rápida y consistente para trabajar con marcos de datos como objetos. Se ha usado la función mutate. (Wickham et al. 2020) ggplot2 : Permite crear gráficos de manera sencilla a partir de unos datos dados. Todos los gráficos de este paquete funcionan de manera similar, se empieza llamando a ggplot() que proporciona datos por defecto y asignaciones estéticas especificadas por aes (). Luego agrega capas, escalas, coordenadas y facetas antecedido por ‘+’. (Wickham 2016) knitr : Proporciona una herramienta de uso general para la generación dinámica de informes en R. La función más usada en este trabajo es kable que crea tablas en CAPÍTULO 1. INTRODUCCIÓN 3
1.3. LIBRERÍAS latex, html y markdown. (Xie 2020) sjPlot : Colección de funciones análisis gráfico y salida de tablas para visualización de datos (Lüdecke 2020) tables : Calcula y muestra tablas complejas de estadísticas resumidas. La salida puede estar en LaTeX, HTML, texto sin formato o una R matriz para su posterior procesamiento. La función usada es tabular para crear tablas de resúmenes numéricos. (Murdoch 2020) DescTools : Una colección de diversas funciones estadísticas básicas y envoltorios convenientes para describir datos de manera eficiente. La función usada es Lambda para estudiar la asociación entre dos variables. (Signorell & mult.al. 2020) Corrplot : Crea una visualización gráfica de una matriz de correlación, intervalo de confianza o matriz general. Corrplot.mixed es la función de ese paquete utilizada para visualizar una matriz de correlación. (Wei & Simko 2017) CAPÍTULO 1. INTRODUCCIÓN 4
2.2. TABLAS Cuadro 2.6: Variable cuantitativa dividida n Media Mediana Desv IC1 IC2 mayor que 117 80.28 81 7.55 79.13 81.44 menor que 132 55.65 56 7.74 54.54 56.77 2.2.6.2. Dos variables cuantitativas por columnas Esta función calcula las medidas más relevantes del análisis descriptivo de dos variables cuantitativas, ya sean continuas, tamaño muestral, media, mediana, desviación estándar e intervalo de confianza por columnas. Uso: desc.2cuan.colum(datos, x1, x2, nombrex1, nombrex2, título) Argumentos: Datos: data.frame con los datos a analizar. X1: vector de respuestas de la variable cuantitativa 1 a analizar (tamaño n). X2: vector de respuestas de la variable cuantitativa 2 a analizar (tamaño n). Título: cadena de caracteres indicando el nombre que se le quiere dar a la tabla. desc.2cuan.colum= function (datos,x1,x2, título) { IC1 <- function(x) { mean(x) -qt(0.95,df = length(x) -1)*sd(x) /sqrt(length(x))} IC2 <- function(x){ mean(x) +qt(0.95,df = length(x) -1)*sd(x) /sqrt(length(x))} Media <- function(x){mean(x)} Mediana<- function (x) {median(x)} Desv<- function (x) {sd(x)} tabla <- "~(n=1)+Format(digits=2)*((nombrex1=x1)+(nombrex2=x2))* (Media+Mediana+Desv+IC1+IC2)" tt <- tabular (tabla, data = datos) df <- data.frame(matrix(unlist(tt), nrow=1,byrow=F)) colnames(df) = c("n","Media","Mediana","Desv","IC1","IC2", "Media","Mediana","Desv","IC1","IC2") kable(df, digits = 2,caption = título) } título= " Dos variables cuantitativas de Altura y Peso" desc.2cuan.colum(datos,V8, V10, título ) CAPÍTULO 2. ANÁLISIS UNIVARIANTE 11
2.2. TABLAS Cuadro 2.7: Dos variables cuantitativas de Altura y Peso n Media Mediana Desv IC1 IC2 Media Mediana Desv IC1 IC2 249 1.67 1.67 0.14 1.66 1.69 67.22 67 14.49 65.71 68.74 2.2.6.3. Dos variables cuantitativas por filas Esta función calcula las medidas más relevantes del análisis descriptivo de dos variables cuantitativas, nos muestra el tamaño muestral, media, mediana, desviación estándar e intervalo de confianza por filas. Uso: desc.2cuan.filas (x1, x2, nombrex1, nombrex2, título) Argumentos: Datos: data.frame con los datos a analizar. X1: vector de respuestas de la variable cuantitativa 1 a analizar (tamaño n). X2: vector de respuestas de la variable cuantitativa 2 a analizar (tamaño n). Nombrex1: cadena de caracteres indicando la pregunta realizada para la variable x1 (No admite espacios). Nombrex2: cadena de caracteres indicando la pregunta realizada para la variable x2 (No admite espacios). Título: cadena de caracteres indicando el nombre que se le quiere dar a la tabla. desc.2cuan.filas= function (x1,x2, nombrex1, nombrex2, título) { IC1 <- function(x) { mean(x) -qt(0.95,df = length(x) -1)*sd(x) /sqrt(length(x))} IC2 <- function(x){ mean(x) +qt(0.95,df = length(x) -1)*sd(x) /sqrt(length(x))} Media <- function(x){mean(x)} Mediana<- function (x) {median(x)} Desv<- function (x) {sd(x)} tabla <- "((nombrex1=x1)+(nombrex2=x2))~(n=1)+ (Media+Mediana+Desv+IC1+IC2)" tt <- tabular (tabla, data = datos) df <- data.frame(matrix(unlist(tt), nrow=2,byrow=F)) colnames(df) = c("n","Media","Mediana","Desv","IC1","IC2") rownames(df)= c(nombrex1, nombrex2) kable(df, digits = 2,caption = título) } desc.2cuan.filas(V8, V10, "Altura","Peso","Dos variables cuantitativas") CAPÍTULO 2. ANÁLISIS UNIVARIANTE 12
2.3. VISUALIZACIÓN GRÁFICA. Cuadro 2.8: Dos variables cuantitativas n Media Mediana Desv IC1 IC2 Altura 249 1.67 1.67 0.14 1.66 1.69 Peso 249 67.22 67.00 14.49 65.71 68.74 2.3. Visualización gráfica. 2.3.1. Variables cualitativas Para las variables cualitativas, ya sean nominales u ordinales, el análisis gráfico univariante se realiza con la función graf.cual, que genera un diagrama de barras y diagrama de sectores. Uso: graf.cual(datos, x, etiquetas, nombre, título) Argumentos: Datos: data.frame donde se encuentra X. X: vector de respuestas de la variable cualitativas a analizar (tamaño n). Etiquetas: vector de cadena de caracteres con las posibles respuestas no numéricas Nombre: cadena de caracteres indicando la pregunta realizada o nombre de X. Título: cadena de caracteres indicando el nombre que se le quiere dar a los gráficos. graf.cual= function(datos, x , etiquetas, nombre, título) { #Crea una nueva columna como factores de la variable X datos <- mutate(datos, factor = factor(x, labels = etiquetas)) #Se calcula la longitud del vector etiquetas netiq= length(etiquetas) #Paleta de color. mis.colores <- colorRampPalette(c("darkslategray3","coral1" )) #Diagrama de barras print(ggplot(datos, aes(x = factor)) + geom_bar(width = 0.4, aes(y = (..count..)/sum(..count..)), fill = mis.colores(1)) + scale_x_discrete(nombre) + scale_y_continuous("Porcentaje",labels=scales::percent) + labs(title = título)) #Diagrama de sectores CAPÍTULO 2. ANÁLISIS UNIVARIANTE 13
2.3. VISUALIZACIÓN GRÁFICA. pie(table(datos$factor), main=nombre, border="white", radius=0.75, cex=0.7,col = mis.colores(netiq)) legend("right", etiquetas, fill=mis.colores(netiq), cex=1) } etiquetas=c("[18,30)","[30,50)","[50,65)","[65,90+)","NSNC") nombre= "Grupos de edad" graf.cual(datos, datos$V3, etiquetas, nombre, "Edades") 0% 10% 20% [18,30) [30,50) [50,65) [65,90+) NSNC Grupos de edad Porcentaje Edades [18,30) [30,50) [50,65) [65,90+) NSNC Grupos de edad [18,30) [30,50) [50,65) [65,90+) NSNC CAPÍTULO 2. ANÁLISIS UNIVARIANTE 14
2.3. VISUALIZACIÓN GRÁFICA. 2.3.2. Visualización gráfica de Escalas Likert. Para las variables ordinales de valoración existe una herramienta de medición llamada ‘Escala de likert’, que nos permite medir aptitudes y saber el grado de satisfacción del encuestado acerca de una afirmación dada. (Devlin 2016) 2.3.2.1. Para una variable La siguiente función genera un gráfico de barras para una variable ordinal escala Likert. Uso: graf.val1(datos, x, etiquetas, nombre) Argumentos: Datos: data.frame donde se encuentra X. X: vector de respuestas de la variable cualitativas a analizar (tamaño n). Etiquetas: vector de cadena de caracteres con las posibles respuestas no numéricas. Nombre: cadena de caracteres indicando la pregunta realizada o nombre de X. graf.val1=function(datos, x, etiquetas, nombre) { datos <- mutate(datos, factor = factor(x, labels = etiquetas)) data=cbind.data.frame(datos$factor) names(data)= nombre #Gráfico de barras plot_likert(data, show.n=FALSE, geom.colors = "RdBu", show.prc.sign = FALSE, cat.neutral = 3) } Por ejemplo: etiquetas=c("Muy malo","Malo","Regular","Bueno","Muy bueno") nombre="Calidad" graf.val1(datos, V5, etiquetas, nombre) CAPÍTULO 2. ANÁLISIS UNIVARIANTE 15
2.3. VISUALIZACIÓN GRÁFICA. 17.3 18.1 24.521.318.9 items 100% 80% 60% 40% 20% 0% 20% 40% 60% 80% 100% Muy malo Malo Bueno Muy bueno Regular 2.3.2.2. Para bloques de tres variables ordinales con las mismas etiquetas Con esta función se obtienen diagramas de barra bloques de tres variables ordinales de valoración con las mismas etiquetas, es decir, mismas posibles respuestas, para así obtener de manera más visual la comparación de éstas. El gráfico de densidad además de mostrar la distribución de los valores, aparece una línea vertical que representa la media. Uso: graf.val3(datos, x1, x2, x3, etiquetas, preguntas) Argumentos: Datos: data.frame donde se encuentra X. X1: vector de respuestas de la variable ordinal 1 a analizar (tamaño n). X2: vector de respuestas de la variable ordinal 2 a analizar (tamaño n). X3: vector de respuestas de la variable ordinal 3 a analizar (tamaño n). Etiquetas: vector de cadena de caracteres con las posibles respuestas no numéricas de las 3 variables dadas. Preguntas: vector de cadena de caracteres con las preguntas o nombres, en orden, de x1, x2 y x3. graf.val3=function(datos,x1,x2,x3, etiquetas, preguntas) { datos <- mutate(datos, factor1 = factor(x1, labels = etiquetas)) datos <- mutate(datos, factor2 = factor(x2, labels = etiquetas)) datos <- mutate(datos, factor3 = factor(x3, labels = etiquetas)) data=cbind.data.frame(datos$factor1,datos$factor2, datos$factor3) names(data)=preguntas CAPÍTULO 2. ANÁLISIS UNIVARIANTE 16
2.3. VISUALIZACIÓN GRÁFICA. #Gráfico de barras plot_likert(data, show.n=FALSE, geom.colors = "RdBu", show.prc.sign = FALSE, value = "sum.outside", cat.neutral = 3) } datos <- read_excel("datos1.xlsx") etiquetas=c("Muy malo","Malo","Regular/NSNC","Bueno","Muy bueno") preguntas=c("Comida ","Limpieza ","Personal") graf.val3(datos, V5, V6, V7, etiquetas, preguntas) 32.9 41.0 35.3 39.8 32.1 45.8 27.3 26.9 18.9 Personal Limpieza Comida 100% 80% 60% 40% 20% 0% 20% 40% 60% 80% 100% Muy malo Malo Bueno Muy bueno Regular/NSNC 2.3.3. Variables cuantitativas continuas La siguiente función genera diagrama de cajas, gráfico de densidad, histograma con media, histograma con densidad de una variable continua. Uso: graf.cont(datos, X, nombre, título) Argumentos: CAPÍTULO 2. ANÁLISIS UNIVARIANTE 17
2.3. VISUALIZACIÓN GRÁFICA. Datos: data.frame con los datos a analizar. X: vector de respuestas de la variable cuantitativa a analizar (tamaño n). Nombre: cadena de caracteres indicando el nombre que se le da a X. Título: cadena de caracteres indicando el nombre que se le quiere dar a los gráficos. graf.cont=function(datos, X, nombre, título){ mis.colores <- colorRampPalette(c("darkslategray3","coral1")) #Diagrama de caja boxplot(X, xlab=nombre, main = título, border= "cyan4") #Densidad print(ggplot(datos, aes(x = X)) + geom_density() + scale_x_continuous(nombre)+ scale_y_continuous("Densidad")+ labs(title = título)) #Histograma con media print(ggplot(datos, aes(x=X)) + geom_histogram(bins=30,color=mis.colores(1), fill="white")+ scale_x_continuous(nombre) + scale_y_continuous("Frecuencia")+ geom_vline(aes(xintercept=mean(X)), color=mis.colores(1), linetype="dashed",size=1)) #Histograma + Densidad print(ggplot(datos, aes(x=X)) + geom_histogram(bins=30,aes(y=..density..), colour="black",fill="white")+ scale_x_continuous(nombre) + scale_y_continuous("Densidad")+ geom_density(alpha=.2,fill=mis.colores(1)) ) } nombre= "Estatura" graf.cont(datos, V8, nombre, "Altura de los individuos") CAPÍTULO 2. ANÁLISIS UNIVARIANTE 18
2.3. VISUALIZACIÓN GRÁFICA. 1.4 1.6 1.8 Altura de los individuos Estatura 0.0 0.5 1.0 1.5 2.0 1.4 1.6 1.8 Estatura Densidad Altura de los individuos CAPÍTULO 2. ANÁLISIS UNIVARIANTE 19
2.3. VISUALIZACIÓN GRÁFICA. 0 5 10 15 1.4 1.6 1.8 Estatura Frecuencia 0 1 2 3 1.4 1.6 1.8 Estatura Densidad CAPÍTULO 2. ANÁLISIS UNIVARIANTE 20
3.2. TABLAS. tabla <- gsub("nombre3", nombre3, tabla) tt <- tabular (tabla, data = datos1) tt } etiquetas1=c("Hombre","Mujer") etiquetas2=c("Sevilla","Madrid","Barcelona","NSNC") etiquetas3=c(" Muy malo","Malo","Regular","Bueno","Muy bueno") nombre1="Sexo" nombre2= "Origen" nombre3= "valoración" título= "Frecuencias abs. de tres var.cualitativas" freq.cual.2cual (datos, datos$V1, datos$V4, datos$V5, etiquetas1, etiquetas2, etiquetas3, nombre1, nombre2, nombre3, título) valoración Sexo Origen Muy malo Malo Regular Bueno Muy bueno Total Hombre Sevilla 4 6 6 11 8 35 Madrid 5 9 5 9 13 41 Barcelona 7 4 6 7 7 31 NSNC 0 1 0 0 0 1 Mujer Sevilla 18 10 13 15 10 66 Madrid 3 7 7 11 4 32 Barcelona 7 5 9 6 10 37 NSNC 1 1 1 2 1 6 Total 45 43 47 61 53 249 3.2.2.2. Variable cuantitativa según dos variables cualitativas Esta función devuelve la tabla de resúmenes numéricos básicos de la variable cuantitativa respecto de dos variables cualitativas, incluyendo el tamaño muestral, media, mediana, desviación estándar e intervalo de confianza al 95%. Uso desc.cuan.2cual(datos, X1, X2, X3, etiquetas2, etiquetas3, nombre1, nombre2, nombre3, título) Argumentos: Datos: data.frame donde se encuentra X1, X2, y X3. X1: vector de respuestas de la variable cuantitativa 1 (tamaño n). X2: vector de respuestas de la variable cualitativa 2 (tamaño n). X3: vector de respuestas de la variable cualitativa 3 (tamaño n). Etiquetas2: cadena de caracteres con las posibles respuestas no numéricas de la variable 2. Etiquetas3: cadena de caracteres con las posibles respuestas no numéricas de la variable 3. CAPÍTULO 3. ANÁLISIS CONJUNTO DE VARIABLES 27
3.2. TABLAS. Nombre1: cadena de caracteres con el nombre de la variable 1 (No admite espacios). Nombre2: cadena de caracteres con el nombre de la variable 2 (No admite espacios). Nombre3: cadena de caracteres con el nombre de la variable 3 (No admite espacios). Título: cadena de caracteres indicando el nombre que se le quiere dar a la tabla. desc.cuan.2cual= function (datos, X1, X2, X3, etiquetas2, etiquetas3, nombre1, nombre2, nombre3, título) { datos1 <- mutate(datos, v1 = factor(X2, labels = etiquetas2)) datos2 <- mutate(datos, v2 = factor(X3, labels = etiquetas3)) IC1 <- function(X1){ mean(X1) -qt(0.95,df = length(X1)-1)*sd(X1) /sqrt(length(X1))} IC2 <- function(X1){ mean(X1) +qt(0.95,df = length(X1)-1)*sd(X1) /sqrt(length(X1))} Media <- function(x){mean(x)} Mediana<- function (x) {median(x)} Desv<- function (x) {sd(x)} tabla <- "(nombre2 =datos1$v1 )+( nombre3 =datos2$v2 )+( Total = 1 ) ~ (n=1)+ ( nombre1 = X1 )*(Media + Mediana + Desv + IC1+ IC2)" tabla <- gsub("nombre1", nombre1, tabla) tabla <- gsub("nombre2", nombre2, tabla) tabla <- gsub("nombre3", nombre3, tabla) tt <- tabular (tabla, data = datos1) tt } etiquetas2=c("Hombre","Mujer") etiquetas3=c("Sevilla","Madrid","Barcelona","NSNC") nombre1="Estatura" nombre2="Sexo" nombre3= "Origen" título= "Resumen medidas de variable cuantitativa respecto dos cualitativas" desc.cuan.2cual(datos,datos$V8, datos$V1, datos$V4 , etiquetas2, etiquetas3 ,nombre1, nombre2, nombre3, título) Estatura n Media Mediana Desv IC1 IC2 Sexo Hombre 108 1.724 1.77 0.1494 1.700 1.748 Mujer 141 1.633 1.64 0.1271 1.615 1.651 Origen Sevilla 101 1.653 1.66 0.1456 1.629 1.678 Madrid 73 1.696 1.72 0.1469 1.667 1.725 Barcelona 68 1.669 1.66 0.1390 1.641 1.697 NSNC 7 1.734 1.71 0.1133 1.651 1.817 Total 249 1.672 1.67 0.1441 1.657 1.688 CAPÍTULO 3. ANÁLISIS CONJUNTO DE VARIABLES 28
3.3. VISUALIZACIÓN GRÁFICA 3.3. Visualización gráfica 3.3.1. Gráficos para dos variables. 3.3.1.1. Variable cualitativa en función de otra cualitativa Esta función genera un gráfico de barras para ver la relación existente entre dos variables cualitativas. Uso: graf.cual.cual(datos, x1, x2, etiquetasx1, etiquetasx2, nombrex1, nombrex2) Argumentos: Datos: data.frame con los datos a analizar. X1: vector de respuestas de la variable cualitativa (tamaño n). X2: vector de respuestas de la variable cualitativa (tamaño n). EtiquetasX1: vector de cadena de caracteres con las posibles respuestas no numéricas de la variable 1. EtiquetasX2: vector de cadena de caracteres con las posibles respuestas no numéricas de la variable 2. NombreX1: cadena de caracteres indicando la pregunta realizada para la variable x1. NombreX2: cadena de caracteres indicando la pregunta realizada para la variable x2. graf.cual.cual=function(datos,x1,x2, etiquetasx1, etiquetasx2, nombrex1, nombrex2) { #Transforma como factores las variables originales x1 y x2 datos <- mutate(datos, factor1 = factor(x1,labels = etiquetasx1)) datos <- mutate(datos, factor2 = factor(x2,labels = etiquetasx2)) mis.colores <- colorRampPalette(c("darkslategray3","coral1")) n2=length(etiquetasx2) n1=length(etiquetasx1) datos3 <- datos %>% filter(factor2 %in% etiquetasx2 )%>% group_by(factor1, factor2) %>% summarise(Frecuencia = n()) #Gráfico de barras print(ggplot(datos3, aes(x = factor1, y= Frecuencia )) + geom_bar(aes(color = factor2, fill = factor2), stat = "identity",position = position_dodge(0.8), width = 0.7)+ labs(title = "",x = nombrex1)+ scale_color_manual(name= nombrex2,values = mis.colores(n2))+ scale_fill_manual(name= nombrex2,values = mis.colores(n2))+ CAPÍTULO 3. ANÁLISIS CONJUNTO DE VARIABLES 29
3.3. VISUALIZACIÓN GRÁFICA geom_text(aes(label = Frecuencia, group = factor2), position = position_dodge(0.8), vjust = -0.3,size = 3.5)) } etiquetasx2=c("Sevilla","Madrid","Barcelona","NSNC") etiquetasx1=c("Muy malo","Malo","Regular","Bueno","Muy bueno") nombrex1="Calidad" nombrex2="Origen" graf.cual.cual(datos, datos$V5,datos$V4, etiquetasx1, etiquetasx2 , nombrex1, nombrex2) 22 8 14 1 1616 9 2 19 12 15 1 26 20 13 2 181717 1 0 10 20 Muy malo Malo Regular Bueno Muy bueno Calidad Frecuencia Origen Sevilla Madrid Barcelona NSNC 3.3.1.2. Variable cuantitativa en función de una cualitativa. Esta función genera el histograma, gráfico de densidad, caja y bigote y tipo jitter de la variable cuantitativa en función de la cualitativa. Uso: graf.cont.cual (X1, X2, etiquetasx1, nombrex1,nombrex2, título) Argumentos: Datos: data.frame con los datos a analizar. X1: vector de respuestas de la variable cualitativa (tamaño n). X2: vector de respuestas de la variable continua (tamaño n). EtiquetasX1: vector de cadenas de caracteres con las posibles respuestas no numéricas de la variable 1. NombreX1: cadena de caracteres indicando la pregunta realizada para la variable x1. CAPÍTULO 3. ANÁLISIS CONJUNTO DE VARIABLES 30
3.3. VISUALIZACIÓN GRÁFICA NombreX2: cadena de caracteres indicando la pregunta realizada para la variable x2. Título: cadena de caracteres indicando el nombre que se le quiere dar a los gráficos. graf.cont.cual=function(X1, X2, etiquetasx1, nombrex1,nombrex2, título) { datos <- mutate(datos, factor1= factor(X1,labels = etiquetasx1)) mis.colores <- colorRampPalette(c("darkslategray3","coral1")) netiq=length(etiquetas) #Histograma print(ggplot(datos, aes(x=X2,color=factor1, fill=factor1)) + geom_histogram(binwidth = 0.01,fill="white")+ labs(x = nombre2) + theme_minimal() + facet_grid(factor1 ~.)+ scale_color_manual(name=nombre1, values=mis.colores(netiq),labels=etiquetasx1)+ scale_fill_manual(name=nombrex1, values=mis.colores(netiq),labels=etiquetasx1)+ labs(title = título, x=nombrex2, y = "Frecuencia")+ theme_minimal()) #Densidades por categorías en un mismo gráfico print(ggplot(datos, aes(x=X2, color=factor1)) + geom_density()+ scale_color_manual(name=nombrex1, values=mis.colores(netiq),labels=etiquetasx1)+ labs(title = título , x = nombrex2, y = "Densidad")) # Densidades de la variable continua para cada # categoría en gráficos separados print(ggplot(datos, aes(x=X2, color=factor1)) + geom_line(stat="Density")+ facet_grid(factor1 ~.)+ scale_color_manual(name=nombrex1, values=mis.colores(netiq),labels=etiquetasx1)+ labs(title = título , x = nombrex2, y = "Densidad")) # Gráfico de caja y bigote por categorías print(ggplot(datos, aes(factor1,X2)) + geom_boxplot(aes(color = factor1 ))+ scale_color_manual(name=nombrex1, values = mis.colores(netiq))+ labs(title = título, x = nombrex1, y = nombrex2)+ CAPÍTULO 3. ANÁLISIS CONJUNTO DE VARIABLES 31
3.3. VISUALIZACIÓN GRÁFICA theme_minimal()) #Gráfico tipo jitter print(ggplot(datos, aes(x=factor1, y= X2)) + geom_jitter(aes(colour = factor1))+ scale_color_manual(name=nombrex1, values=mis.colores(netiq),labels=etiquetasx1)+ labs(title = título , x = nombrex1, y = nombrex2)) #Mezcla gráfico caja y bigote y tipo jitter. print(ggplot(datos, aes(x = factor1, y = X2)) + geom_jitter(aes(color = factor1), size = 1,alpha = 0.7)+ geom_boxplot(aes(color = factor1), alpha = 0.7)+ scale_color_manual(name=nombrex1,values=mis.colores(netiq), labels=etiquetasx1)+ xlab(nombrex1) + ylab(nombrex2) + ggtitle(título) + theme_minimal()) } etiquetas=c("Sevilla","Madrid","Barcelona","NSNC") nombre1="Origen" nombre2="Peso" título= "Relación origen-peso" graf.cont.cual(datos$V4, datos$V10 ,etiquetas, nombre1, nombre2, título) CAPÍTULO 3. ANÁLISIS CONJUNTO DE VARIABLES 32
3.3. VISUALIZACIÓN GRÁFICA Sevilla Madrid Barcelona NSNC 40 60 80 100 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 Peso Frecuencia Origen Sevilla Madrid Barcelona NSNC Relación origen−peso 0.00 0.02 0.04 0.06 40 60 80 100 Peso Densidad Origen Sevilla Madrid Barcelona NSNC Relación origen−peso CAPÍTULO 3. ANÁLISIS CONJUNTO DE VARIABLES 33
3.3. VISUALIZACIÓN GRÁFICA Sevilla Madrid Barcelona NSNC 40 60 80 100 0.00 0.02 0.04 0.06 0.00 0.02 0.04 0.06 0.00 0.02 0.04 0.06 0.00 0.02 0.04 0.06 Peso Densidad Origen Sevilla Madrid Barcelona NSNC Relación origen−peso 40 60 80 100 Sevilla Madrid Barcelona NSNC Origen Peso Origen Sevilla Madrid Barcelona NSNC Relación origen−peso CAPÍTULO 3. ANÁLISIS CONJUNTO DE VARIABLES 34
3.3. VISUALIZACIÓN GRÁFICA 40 60 80 100 Sevilla Madrid Barcelona NSNC Origen Peso Origen Sevilla Madrid Barcelona NSNC Relación origen−peso 40 60 80 100 Sevilla Madrid Barcelona NSNC Origen Peso Origen Sevilla Madrid Barcelona NSNC Relación origen−peso 3.3.1.3. Variable continua respecto de otra variable continua La siguiente función muestra el gráfico de dispersión entre dos variables continuas dadas. Uso: graf.cuan.cuan(X1, X2, nombrex1 ,nombrex2, título) Argumentos: CAPÍTULO 3. ANÁLISIS CONJUNTO DE VARIABLES 35
3.3. VISUALIZACIÓN GRÁFICA X1: vector de respuestas de la variable cuantitativa (tamaño n). X2: vector de respuestas de la variable cuantitativa (tamaño n). NombreX1: cadena de caracteres indicando la pregunta realizada para la variable x1. NombreX2: cadena de caracteres indicando la pregunta realizada para la variable x2. Título: cadena de caracteres indicando el nombre que se le quiere dar al gráfico. graf.cuan.cuan=function(X1, X2, nombrex1 ,nombrex2, título) { print(ggplot(datos,aes(x=X1, y=X2)) + geom_point() + theme_minimal() + labs(title = título, x= nombrex1, y=nombrex2)+ geom_smooth(method = "lm",se = F)) } nombrex1= "Altura" nombrex2="Peso" título= "Relación entre Altura y Peso" graf.cuan.cuan(datos$V8, datos$V10, nombrex1, nombrex2, título) 40 60 80 100 1.4 1.6 1.8 Altura Peso Relación entre Altura y Peso CAPÍTULO 3. ANÁLISIS CONJUNTO DE VARIABLES 36
4.2. ALGUNAS MEDIDAS DE ASOCIACIÓN Así, se consideran los n puntos: ( ui, vi ). El coeficiente de correlación entre rangos de Spearman , rs , para la muestra ( xi, yi ), i = 1 , . . . , n , se define como el coeficiente de correlación lineal para los datos bidimensionales (ui, vi),i= 1, . . . , n. rs= 1 −6 n(n2−1) n X i=i d2 i, donde di=ui−vi Por tanto, es una medida simétrica que toma valores en [-1,1] 4.2.3. Correlación de Kendall El coeficiente de correlación de Kendall, generalmente conocido como el Coeficiente Tau de Kendall, es una medida de la asociación entre dos variables ordinales. Básicamente, es una medida de la capacidad de predecir el orden entre dos observaciones de una de las variables conocido el orden de la otra variable. Fue propuesta por (Kendall 1938) Consideremos dos variables ordinales (X,Y). Si dadas dos observaciones de las mismas (X1,Y1), (X2,Y2) pretendemos predecir la ordenación de la variable Y: Y1> Y 2 ó Y2> Y 1 Se puede hacer: 1. Sin información adicional alguna. 2. Con la información adicional de la ordenación en la variable X. Consideremos las funciones indicadores: Ix=(0si X1< X2 1si X1> X2Iy=(0si Y1< Y 2 1si Y1> Y 2 En el primer caso, la predicción entre Iy = 1 ó Iy = 1 se realizará de forma aleatoria, es decir ES=P[errorS]=1/2 En el segundo caso, podemos predecir de la siguiente forma: Si Ix= 0 entonces Iy = 0 ; Si Ix= 1 entonces Iy = 1 y por tanto, EC =P[errorC] = P[Ix= 0, Iy= 1] + P[Ix= 1, Iy= 0] = πd donde πd es la probabilidad de discordancia, que será igual a 1πc , siendo πc la probabilidad de concordancia. En consecuencia, la medida RPE vendrá dada por CAPÍTULO 4. MEDIDAS DE ASOCIACIÓN 43
4.2. ALGUNAS MEDIDAS DE ASOCIACIÓN 1 2−πd 1 2 = 1 −2πd=πc+πd−2πd=πc−πd La segunda igualdad es cierta para variables continuas, pues P [ X 1 = X 2)] = p [ Y 1 = Y2] = 0 Definición 1 Dada una variable aleatoria bidimensional (X,Y), ambas al menos en la escala ordinal. Se define la Tau de Kendall entre ambas como: τ=πc−πd Cuando las variables no son absolutamente continuas, se ha de buscar una solución al problema P[(X1−X2)(Y1−Y2) = 0] 6= 0 Se definen las variables aleatorias Aij =sign(Xj−Xi)(Yj−Yi). Definición 2 Dada una variable aleatoria bidimensional (X,Y), al menos en la escala ordinal, y una muestra aleatoria de la misma, (Xi, Yi)i= 1, . . . , n, al estadístico 2 n(n−1) X 1≤i<j≤n Aij se le denomina coeficiente Tau de Kendall muestral y se denota por ˆτ En la práctica se recurre a: P=núm. de Aij positivos N=núm de Aij negativos)⇒ˆτ=P−N n 2 El número total de parejas es T = n 2, de las cuales pueden ser: Concordantes: P=Pr−1 i=1 Pc−1 j=1 nij[Pr h=i+1 Pc k=j+1 nhk] Discordantes: N=Pr−1 i=1 Pc−1 j=1 ni(c−j+ 1)[Pr h=i+1 Pc k=c−jnhk] Conclusión: Es importante estudiar la intensidad de una relación lineal entre dos variables. El coeficiente de correlación de Spearman es pertinente si se presenta uno de los siguientes casos: el primero, supongamos que se estudia la asociación lineal entre variables cuantitativas con escalas de medidas al menos de intervalos, y bajo esta condición sería conveniente el uso del coeficiente de Pearson, pero si estas variables no siguen un comportamiento normal en sus datos, necesariamente se debe estimar Spearman; el segundo, cuando ambas variables originales presentan escalas de medidas ordinales y su determinación es directa. Por último, el coeficiente de Kendall es adecuado cuando ambas variables presentan escalas de medidas ordinales. (Morales & Rodríguez 2016) 4.2.4. Lambda de Goodman Kruskal Para estudiar la asociación entre dos variables nominales, es decir, categóricas sin un orden establecido, la mejor medida es la propuesta por Goodman y Kruskal. Es conocida como el Coeficiente Lambda de Y sobre X. CAPÍTULO 4. MEDIDAS DE ASOCIACIÓN 44
4.2. ALGUNAS MEDIDAS DE ASOCIACIÓN El método de predicción usado es la moda de la distribución o marginal o condicionada. Sean X e Y dos variables nominales con modalidades A1 .. Ar y B1 .. Bc , respectivamente.La distribución de probabilidad conjunta de X e Y es P[X=Ai;Y=Bj] = pij Las probabilidades marginales son: pj=P[Y=Bj] = c X j=1 pij qi=P[X=Ai] = r X i=1 qij Si se predice Y con la moda, sin información adicional de X, la probabilidad de error cometido es: EY S=P[errorS]=1−pmax, donde pmax =maxj{pj} Si se dispone de la información adicional de la X, X = Ai , la probabilidad de error será: 1−pi∗, donde pi∗=maxjP[Y=Bj|X=ai] = 1 qi maxj{pij}=1 qi pi,max EY C=P[errorC] = r X i=1 qi(1 −p∗ i) = 1 − r X i=1 pi,max Luego, una medida de asociación basada en el criterio RPE viene dada por la expresión: λY|X=Pr i=ipi,max −pmax 1−pmax =Pr i=1[maxj{pij}]−maxj{Pr i=1 pij} 1−maxj{Pr i=1 pij} Dado que es asimétrica, λX|Yno necesariamente coincide con λY|X. Para obtener una medida simétrica a partir de este esquema se procede de la siguiente manera: λ=(EY S+EX S)−(EY C+EX C) EY S+EX S denominada Coeficiente Lambda simétrica. VERSIÓN MUESTRAl: Se sustituye las probabilidades por frecuencias relativas fij = nij/n. O bien, trabajando con frecuencias absolutas: ˆ λY|X=Pr i=1 mY i−MY n−MY ;ˆ λ=Pr i=1 mX j−(MY+MX) 2n−(MY+MX) donde mY i=frecuencia absoluta modal de Y |X=Ai mX j=frecuencia absoluta modal de X |Y=Bj MY=frecuencia absoluta modal de Y MX=frecuencia absoluta modal de X CAPÍTULO 4. MEDIDAS DE ASOCIACIÓN 45
4.3. EJEMPLOS: El intervalo modal es el de mayor frecuencia absoluta. La frecuencia absoluta del intervalo modal son las frecuencias absolutas de los intervalos anterior y posterior respectivamente, al intervalo modal. 4.3. Ejemplos: Para ilustrar algunas de las siguientes funciones se usan un conjunto de medidas corporales tomadas a un grupo de estudiantes en una universidad de Medellín. Las variables de la base de datos son (Hernández & Usuga 2019a) Cuadro 4.1: Descripción de los datos Variables Tipo Descripción Edad Cuantitativa Edad del estudiante en años. Peso Cuantitativa Peso del estudiante en kilogramos. Altura Cuantitativa Estatura del estudiante en centímetros. Sexo Nominal Género del estudiante. Muneca Cuantitativa Diametro de la muñeca derecha en centímetros. Biceps Cuantitativa Diametro del biceps derecho en centímetros. 4.3.1. Coeficiente de correlación Devuelve el valor del coeficiente de correlación lineal en función del método indicado. Pearson, Kendall o Spearman. Uso correlacion(x, y , nombres, método) Argumentos: X: vector numérico. Y: vector numérico. Nombres: vector de caracteres con las preguntas o afirmaciones de las variables (el número de columnas de data debe ser igual a p). Método: cadena de caracteres indicando qué coeficiente de correlación se debe calcular: “pearson”, “kendall” o “spearman”. correlacion= function(X, Y , nombres, método){ a= cor(X,Y , method = método) cat("El valor del coeficiente de correlación de", nombres[1], "y", nombres[2], "por el método \n", método, "es",round(a,4)) } correlacion(datoscor1$edad, datoscor1$peso, c("edad","peso"), "pearson") El valor del coeficiente de correlación de edad y peso por el método pearson es 0.5154 CAPÍTULO 4. MEDIDAS DE ASOCIACIÓN 46
4.3. EJEMPLOS: 4.3.2. Matriz de correlaciones La siguiente función genera una matriz con las correlaciones dos a dos de hasta p variables en función del método indicado. Uso matriz.cor(data, nombres, título, método) Argumentos: Datos: data.frame formada por las p variables que se desea estudiar su correlación. Nombres: vector de caracteres con las preguntas o afirmaciones de las variables (el número de columnas de data debe ser igual a p). Título: cadena de caracteres indicando el nombre que se le quiere dar a la salida. Método: cadena de caracteres indicando qué coeficiente de correlación se debe calcular. “pearson”, “kendall” o “spearman”. matriz.cor= function( data, nombres, título, método){ colnames(data) <- nombres kable(cor(data, method = método) , caption = título , booktabs = TRUE,escape=FALSE) } Para ilustrar la función se usan las variables ordinales de valoración de los datos simulados con el método Spearman. data=cbind.data.frame(datos$V5,datos$V6,datos$V7) nombres= c("Comida","Servicio","Limpieza") título= "Relación entre las valoraciones " matriz.cor(data, nombres , título, "spearman") Cuadro 4.2: Relación entre las valoraciones Comida Servicio Limpieza Comida 1.0000000 -0.0289983 -0.0082606 Servicio -0.0289983 1.0000000 -0.0215291 Limpieza -0.0082606 -0.0215291 1.0000000 4.3.3. Medida de asociación Lambda de Goodman Kruskal. La siguiente función devuelve el coeficiente Lambda simétrico para variables nominales, además de un intervalo con un nivel de confianza dado. Uso asocnom(X, Y, conf, nombrex1, nombrex2) Argumentos: X: Vector numérico de la variable 1. Y: Vector numérico de la variable 2. Conf: Valor que indica el nivel de confianza para crear el intervalo (0<conf<1). CAPÍTULO 4. MEDIDAS DE ASOCIACIÓN 47
4.3. EJEMPLOS: Nombrex: cadena de caracteres que indica nombre de la variable 1. Nombrey: cadena de caracteres que indica nombre de la variable 2. asocnom= function(X, Y, conf, nombrex, nombrey) { a=Lambda(X, Y, conf.level = conf) cat("El valor de Lambda de Goodman Kruskal para", nombrex, "y", nombrey, "es \n",round(a[1],4) , "con un intervalo de confianza al", conf*100, "% de: (",round(a[2],4),",",round(a[3],4),")") } Para ilustrarlo hemos usado las variables V1 y V4 de los datos simulados nombrex1="Sexo" nombrex2="Ciudad de Origen" conf=0.95 asocnom(datos$V1, datos$V4, conf, nombrex1, nombrex2) El valor de Lambda de Goodman Kruskal para Sexo y Ciudad de Origen es 0.0586 con un intervalo de confianza al 95% de: ( 0 , 0.1724 ) 4.3.4. Visualización gráfica matriz de correlaciones La función graf.cor genera un gráfico muy visual de las correlaciones entre varias variables. Se muestra la matriz con los coeficientes de correlación. En la diagonal están las variables, por encima se sitúan círculos, entre más intensidad del color, ya sea azul o rojo, mayor es la correlación, colores tenúes significan correlación baja; el tamaño de los círculos está asociado al valor absoluto de correlación. Por debajo de la diagonal se observan los valores exactos de correlación. (Hernández & Usuga 2019b) Uso graf.cor(data, nombres, título, método) Argumentos: Data: data.frame formada por las p variables que se desea estudiar su correlación. Nombres: vector de caracteres con los nombres de las variables (su longitud igual a p). Título: cadena de caracteres indicando el nombre que se le quiere dar a la salida. Método: cadena de caracteres indicando qué coeficiente de correlación se debe calcular: “pearson”, “kendall” o “spearman”. graf.cor=function(data, nombres, título, método) { m=cor(data, method = método) corrplot.mixed(m, tl.pos= "d",tl.col="black") } título= "Gráfico de correlación " graf.cor(datoscor1, nombres , título, "pearson") CAPÍTULO 4. MEDIDAS DE ASOCIACIÓN 48
4.3. EJEMPLOS: −1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1 edad peso altura muñeca biceps 0.52 0.33 0.62 0.48 0.8 0.85 0.91 0.66 0.71 0.88 CAPÍTULO 4. MEDIDAS DE ASOCIACIÓN 49
Capítulo 5 Creación del paquete en R 5.1. Introducción Para completar esta memoria se ha creado un paquete en R, esto obliga a pulir las funciones y, sobre todo, a documentar todo el trabajo. Podremos usar el comando ?() o help() para ver detalles de los parámetros, resultados y usos de cada función. Además, es un método elegante de compartir el trabajo realizado. El paquete contendrá todas las funciones para el análisis de datos obtenidos a través de cuestionarios. 5.2. Proceso de creación Para crear el paquete, se necesita tener instalado los paquetes devtools (herramientas de desarrollo de paquetes) y roxygen2 (que permite generar muy fácilmente la documentación de ayuda de nuestro paquete). El primer paso es crear el proyecto (.Rproj) como un R Package, se creará un directorio que contendrá una serie de archivos, los que hay que modificar manualmente serían: DESCRIPTION: en él se especifica la información general del paquete. 50
5.2. PROCESO DE CREACIÓN Figura 5.1: Descripción del paquete R: donde se almacenan los ficheros con cada una de las funciones. Para que R pueda generar automáticamente el archivo de ayuda incluimos la información antes del comienzo de la función en cada fichero. Figura 5.2: Script documentado Los archivos man yNAMESPACE se generan a través de la documentación en los scripts gracias a devtools y roxygen. El segundo paso es construir la librería, en la pestaña Built, se ajusta la configuración y se carga. CAPÍTULO 5. CREACIÓN DEL PAQUETE EN R 51
5.3. ALOJAR EL PAQUETE EN GITHUB 5.3. Alojar el paquete en Github Aunque no es específico de R, Github es probablemente el repositorio más popular para proyectos de código abierto. Su popularidad proviene del espacio ilimitado, la integración con git, un software de control de versiones y su facilidad para compartir y colaborar con otros. Aunque hay que tener en cuenta que no hay un proceso de revisión asociado. Lo primero es crear un nuevo repositorio en una cuenta de Github, una vez creado el repositorio se “clona” en nuestro equipo y se trasladan los archivos que componen el paquete. Por último, usando la terminal del equipo, la aplicación previamente descargada Git y una serie de comandos, se añaden todos los archivos al control de versiones y se sincroniza la versión de la nube. 5.4. Resultados Para instalar el paquete desde Github se usa la orden install_github(“celiaromerogustos/Cuestionarios”) de la librería devtools. Una de las mayores ventajas de crear un paquete es la ayuda de R, como se muestra en la siguiente imagen, usando el comando ?seguido del nombre de la función, R nos facilitará la descripción, uso y argumentos. Figura 5.3: Ayuda en R CAPÍTULO 5. CREACIÓN DEL PAQUETE EN R 52