# Práctica 2 ----Práctica 2
Objetivos de la práctica
Al finalizar esta sesión, el alumnado será capaz de:
- Conocer y definir las variables de tipo factor.
- Importar una base de datos con formato .rds localizada en una dirección url.
- Explorar la estructura de la base de datos importada.
- Detectar la presencia de valores faltantes.
- Revisar la coherencia de la codificación de las variables de una base de datos.
- Obtener diagramas de frecuencias apropiados para cada tipo de variable.
- Generar diagramas de frecuencias comparativos.
- Obtener las medidas más habituales de síntesis estadística.
- Relacionar los perfiles gráficos con los valores de las medidas de síntesis.
Una vez abierto RStudio, crea un nuevo script para desarrollar esta práctica:
Recuerda que:
- Para crear un nuevo script hay que usar las opciones del menú:
File/New file/R script - Podemos hacer comentarios explicativos en nuestro script si anteponemos el carácter
#, y que si escribimos cuatro guiones al final del comentario, este se incorpora como título en el índice. - Para aludir a una variable contenida en un data frame, hay que indicar el nombre del data frame, el símbolo
$y el nombre de la variable. Por ejemplo:datos$edadpermite el manejo de la variableedadque debe de estar definida en un data frame llamadodatos.
✓ Pon el siguiente título en la primera línea del script:
Antes de seguir: vamos a establecer la carpeta de trabajo donde guardaremos todo lo que vayamos creando.
Accede al menú
Session/Set Working Directory/Choose Directory...(también puedes usar el atajo ‘Ctrl’ + ‘Mayús’ + ‘H’).Cuando se abra el cuadro de diálogo, selecciona la ubicación que quieras usar como carpeta de trabajo. A partir de ese momento, todos los archivos que generemos se guardarán allí.
Puede ser una buena idea traer un pen‑drive y utilizarlo como carpeta de trabajo para conservar tu progreso.Guarda ahora el script que acabas de comenzar a crear mediante
File/Save(o con el atajo ‘Ctrl’ + ‘S’).A lo largo de la práctica, recuerda guardar el script de vez en cuando (‘Ctrl’ + ‘S’) para actualizar la copia guardada.
A través de este enlace, puedes acceder a una página con los cuadros resumen de funciones de R.
1 Variables no numéricas
En la práctica anterior aprendimos a crear vectores numéricos y a combinarlos para formar un data frame. Sin embargo, además de los vectores numéricos, existen otros tipos de vectores muy útiles en el análisis de datos.
1.1 Variables de clase “factor”
Un tipo de datos muy importante lo constituye la clase factor, diseñada específicamente para representar variables cualitativas o categóricas. Trabajar con este tipo de variables como factores, y no como números, evita errores de interpretación y garantiza que R las trate correctamente como categorías, no como valores cuantitativos.
A continuación se resumen las funciones de R que permiten manipular factores. Revísalas y pasaremos a hacer algunos ejemplos.
1.2 Factores ordinales
R permite definir un tipo especial de factores que conservan la relación de orden entre sus categorías. Estos factores se llaman ordered y es el tipo adecuado para manejar variables ordinales.
Supongamos que los 9 pacientes de nuestro data frame tienen un estado de gravedad codificado como “leve”/“moderado”/“grave”. Los datos actualizados son
Vamos a actualizar el data frame con esta información.
Si en algún momento necesitamos tratar un objeto de tipo factor —o de tipo ordered— como un vector numérico, podemos hacerlo utilizando la función as.numeric(). Al realizar esta conversión, cada categoría se sustituye por su código interno, es decir, por un número entero (1, 2, 3, …) que corresponde al orden de los niveles del factor. Este tipo de conversión resultará útil para poder aplicar algunos procedimientos estadísticos.
1.3 Otros tipos de variable
Los factores son útiles para representar variables categóricas con un número limitado y bien definido de niveles. Sin embargo, en muchos registros clínicos aparece información poco estandarizada. Por ejemplo, una variable que recoja el medicamento administrado en el ingreso puede contener muchísimos nombres distintos, con variaciones en dosis o en la forma de escribirlos. En estos casos no es práctico crear un factor con tantos niveles: dificulta el manejo, aumenta los errores y no aporta utilidad analítica.
Por ello, este tipo de información suele almacenarse directamente como texto, es decir, como variables de clase character. El cometido de este tipo de variables suele consistir en que sean usadas para filtrar, buscar o crear nuevas variables derivadas (por ejemplo, “es analgésico: sí/no”) de forma flexible.
Veamos un breve ejemplo:
Además de variables numéricas, factores, factores ordenados y texto, un data frame puede incluir otros tipos de datos frecuentes en análisis clínicos, como fechas (clase date), valores lógicos (clase logical, con valores TRUE/FALSE) o incluso variables complejas como listas (esto no lo veremos aquí). Estos tipos permiten representar información habitual en registros sanitarios, como fechas de ingreso y alta, indicadores binarios (por ejemplo, “fumador: sí/no”) o resultados estructurados. No vemos ahora ejemplos de esto -se manejan igual que las anteriores, ya nos encontraremos con este tipo de variables más adelante.
Guarda el data frame pacientes que hemos elaborado para que puedas conservarlo
2 Análisis de una base de datos clínicos
Ahora vamos a trabajar con una base de datos que incluye varios indicadores relacionados con el metabolismo lipídico. El objetivo es familiarizarnos con los pasos necesarios para analizar un conjunto de datos más complejo que los pequeños data frame que hemos construido hasta ahora. En la práctica profesional, este tipo de situaciones es muy frecuente: necesitamos explorar y depurar información procedente de bases de datos institucionales o generadas por otros miembros del equipo de investigación.
El primer paso -imprescindible en cualquier análisis- es comprobar la integridad y coherencia de los datos. Una vez verificada la calidad del conjunto de datos, podremos aplicar distintos procedimientos descriptivos para empezar a caracterizar las variables y comprender su comportamiento.
2.1 Lectura de la base de datos desde un sitio web
Vamos a abrir la base de datos llamada colesterol01.rds. Observa que la extensión .rds corresponde a archivos con formato R.
En el código que se presenta debajo, verás que:
- La localización de la base de datos se asigna a un objeto que hemos llamado
url_datos(este nombre es arbitrario). - Abrimos la base de datos utilizando la función
readRDS()(la apropiada para archivos con formato ‘.rds’) - El argumento de esta función es la dirección web almacenada en
url_datos, pero hay que indicarle que esto es, efectivamente, una dirección web. Para ello, se usa la funciónurl(). - Finalmente, asignamos el resultado de la lectura a un objeto que llamamos
datos.
Copia el código a tu script y ejecútalo:
## Lectura del archivo .rds desde una URL ----
url_datos <- "https://www.ugr.es/~pfemia/BSRLab/dat/colesterol_01.rds"
datos <- readRDS(url(url_datos))Si todo ha ido bien, en la ventana del entorno debe aparecer lo siguiente:
2.2 Exploración inicial de la base de datos
Para empezar a trabajar con un conjunto de datos, es importante familiarizarse con su contenido. La primera inspección es muy importante. Permite identificar de un vistazo los nombres de las variables, el tipo de datos que contienen (numéricos, factores, fechas…), y el formato de codificación empleado (por ejemplo, “1/0”, “Sí/No”, “H/M”). Es un paso esencial para comprobar que la importación del archivo se ha realizado correctamente y que los datos están en el formato adecuado para el análisis.
En el marco mostrado en la Figura 1 haz click con el ratón en “datos” y se creará una pestaña en la ventana de scripts mostrando el contenido del archivo leído. Debe aparecer algo así:
En la vista del data frame puedes ver que cada columna muestra en su cabecera el nombre de la variable —que será el que utilicemos en el código— y, justo debajo, una etiqueta (label) descriptiva que aclara su significado. Además, en la ventana de la Figura 1 aparece -a la derecha del nombre del objeto- el número de observaciones (el tamaño muestral) y el número de variables que contiene.
Esta revisión inicial también puede hacerse directamente desde el código, a menudo es más práctico hacerlo así. Para ello, R ofrece las siguientes funciones:
Si escribimos solo el nombre del data frame y ejecutamos esa línea de código, R intentará mostrar en la consola el contenido completo del conjunto de datos. Cuando el número de casos (filas) es elevado, esta salida resulta muy poco práctica. Es más útil limitar la visualización de los datos a unas pocas filas, ya sean de la parte inicial o de la parte final. Para esto usamos head() y tail(), respectivamente.
Usando código, obtén el listado de las primeras y de las últimas filas de datos.
Dimensiones del data frame. A continuación revisamos las funciones que permiten recuperar y manejar las dimensiones de la tabla de datos así como los nombres de sus filas y columnas.
Usando código, obtén las dimensiones del data frame datos
Usando código, obtén el listado con los nombres de las columnas de datos.
2.3 Identificación de la clase de las variables
Como ya sabemos, un data frame es una estructura de datos formada por columnas heterogéneas: cada columna es un vector cuya clase puede diferir de la de las demás. Para identificar la clase de cada columna debemos utilizar la función class().
Usando código, comprueba qué la clase del objeto datos es efectivamente data.frame, e identifica las clases de las variables HDL (HDL), grupo sanguíneo (gs) y nivel de actividad física (nivel_AF) contenidas en él.
2.4 Detección de la presencia de valores faltantes
En cualquier base de datos es muy habitual encontrarse con información faltante. Esto ocurre cuando, por diferentes motivos, algunos casos no disponen de un valor registrado en alguna de las variables del data frame.
En estos casos, R no deja un espacio en blanco, sino que utiliza el código NA, que significa Not Available (no disponible). Este código es la forma estándar de indicar que falta información.
Pero, ¿por qué sucede esto tan a menudo? En el ámbito de las ciencias de la salud y la enfermería es completamente normal que algunos datos no puedan recogerse. Por ejemplo: una medición no pudo realizarse, una pregunta del cuestionario quedó sin responder, hubo un fallo en un dispositivo de monitorización o, simplemente, se produjo un error al introducir los datos en el ordenador.
Estos son procesos cotidianos en la práctica clínica, por lo que es fundamental aprender a identificar y manejar correctamente estos valores faltantes para evitar problemas posteriores.
En esta práctica vamos a centrarnos en cómo detectar la presencia de datos faltantes en un conjunto de datos. Más adelante, en la práctica 3, veremos cómo trabajar con ellos y a decidir qué hacer según la situación.
A continuación se muestran las principales funciones de R que permiten comprobar si existen valores faltantes en nuestras variables y cuántos hay en cada caso.
Averigua si existen valores faltantes en nuestro data frame datos
Ante un resultado positivo en la consulta anterior, debemos identificar en qué variable(s) hay falta de información.
Averigua en qué variables aparecen valores faltantes.
2.5 Exploración inicial de las variables
Hasta ahora hemos explorado las dimensiones y la estructura del data frame. El siguiente paso consiste en comprobar la integridad de sus variables. Esto implica, por un lado, conocer cómo están codificadas y, por otro, asegurarnos de que no existen errores lo suficientemente grandes como para detectarse de forma inmediata.
En el caso de los factores, es esencial revisar que las categorías sean coherentes y no existan variaciones inesperadas debidas a errores de codificación (por ejemplo, diferencias en mayúsculas y minúsculas).
Por otra parte, cuando trabajamos con variables cuantitativas, una forma rápida de identificar errores graves es examinar sus medidas de posición, especialmente los valores mínimos y máximos. Por ejemplo, un fallo al registrar la edad podría hacer que, en lugar de introducir “20”, se haya registrado “200”. Detectar y corregir estos valores anómalos desde el principio es fundamental: si persisten en la base de datos, cualquier análisis posterior quedará invalidado. Revisar que los valores extremos de cada variable sean razonables y acordes con la realidad es, por tanto, un paso imprescindible en la fase inicial de depuración.
La función que permite hacer esta revisión sobre todas las variables del data frame es summary().
Aplica la función summary() a los datos y comprueba
- La diferencia en el formato del resumen de cada variable dependiendo de su tipo.
- Que los recorridos (valores extremos) de las variables cuantitativas son coherentes.
- La constatación de la presencia de valores faltantes allí donde ya los habíamos detectado.
Para poder seguir, damos por válida la integridad de todas las variables. Más adelante veremos cómo tratar los valores claramente erróneos cuando los detectemos.
Ahora vamos a sacar algunas conclusiones sobre la distribución de los datos a partir del resumen obtenido.
A la vista de los resultados dados por summary(), responde a las siguientes cuestiones:
Es recomendable que anotes este tipo de consideraciones en tus apuntes
- ¿Cuál es la categoría modal en cada una de las variables no numéricas?
- ¿Cuánto pesan, como máximo, el 25% de los sujetos con menor peso?
- ¿Entre qué valores está el 50% central de la distribución del
peso? - Observa los valores que toman los tres cuartiles de la edad ¿Qué conclusión puedes sacar sobre los valores de esta variable?
- Observa los valores que toman la media y la mediana de la variable
talla. ¿Crees que su distribución podría ser simétrica? Razona tu respuesta o explica, si lo consideras necesario, por qué no es posible determinarlo sin ver un diagrama de frecuencias. - Haz lo mismo con la variable
METs(esta variable representa el gasto energético en equivalentes metabólicos). Observa las medidas del resumen ¿qué puedes concluir acerca de su distribución?
3 Diagramas de frecuencias
Veamos ahora cómo resumir la información mediante diagramas de frecuencias. Estas representaciones ofrecen una forma intuitiva y visual de comprender cómo se distribuyen los datos.
IMPORTANTE: Las representaciones gráficas admiten muchísimas variaciones y, por ello, las funciones de R incluyen numerosos argumentos para personalizarlas. El objetivo de esta práctica no es que memorices todas las opciones, sino que te familiarices con el lenguaje gráfico de R y entiendas cómo construir y adaptar gráficos básicos. Lo que realmente importa es que comprendas qué tratamiento requieren los datos para poder representarlos y, sobre todo, cómo interpretar adecuadamente las figuras obtenidas. Así, más adelante podrás ajustar y ampliar estas herramientas según las necesidades de tus propios datos o investigaciones.
También es importante que sepas cómo puedes obtener información sobre cualquier función de R y los argumentos que usa. Para ello, escribe el nombre de la función en el script y pulsa la tecla “F1”, o bien escribe el nombre de la función (en el script o en la consola) precedido por el signo de interrogación invertida; por ejemplo ?round proporciona ayuda sobre la función que ya hemos utilizado anteriormente para redondear resultados.
Obtén la pantalla de ayuda para la función pie(), que permite representar diagramas de sectores.
Resumimos a continuación las funciones básicas para representar diagramas de frecuencias. Revisa el listado y comenzaremos a practicar con ellas.
Como ya se ha indicado, todas las funciones gráficas permiten añadir argumentos para personalizar la representación, como el título (main = "..."), el color (col = "..."), o los límites de los ejes (xlim, ylim). A continuación se muestra un resumen de los argumentos gráficos más utilizados.
Los colores se pueden establecer mediante códigos numéricos o -en muchos casos- usando su nombre. Por ejemplo col="red" establece el color rojo. Podemos usar nombres como "blue", "green","grey", etc. Como se indica en el resumen anterior, puedes ver la lista de nombres de color escribiendo colors() (esta función no necesita argumentos, pero hay que escribir el paréntesis).
3.1 Diagramas de barras
Son los diagramas más apropiados para variables cualitativas, o discretas con pocos valores distintos.
Hay dos funciones que permiten generar diagramas de barras:
plot(). Es una función genérica, muy versátil, que permite obtener muchos tipos de diagramas. Cuando se indica una variable de tipo factor, representa directamente un diagrama de barras.barplot(). Esta función no opera sobre la variable directamente, sino que lo hace a través de la tabla de frecuencias que se obtiene contable(), de manera que la sintaxis es
barplot(table(variable))
Como ha surgido en el ejemplo, podemos aprovechar para indicar que table() es una función que devuelve la distribución de frecuencias de un objeto de clase factor.
En lo que sigue, para simplificar la explicación, nos referiremos principalmente a la clase factor como contrapunto a las variables de tipo numérico. Sin embargo, muchas de las consideraciones —incluidas las funciones como table()— también son válidas para otros tipos de datos categóricos, como ordered, logical o incluso character (siempre que se utilice con un número razonable de categorías).
Representa la distribución de frecuencias del grupo sanguíneo (variable gs).
3.2 Representación de histogramas
Cuando la variable es cuantitativa continua —o discreta con un rango muy amplio de valores—, su distribución se representa de forma clásica mediante un histograma. Para ello se utiliza la función hist().
Representa, mediante un histograma, la distribución de la variable peso.
Añade un título principal y títulos personalizados a los ejes. Haz que el histograma tenga el color "LightSteelBlue".
La representación mediante histograma puede hacerse usando frecuencias absolutas o relativas (densidades). Por defecto, hist() muestra la frecuencia absoluta, pero podemos obtener la densidad simplemente añadiendo el argumento freq = FALSE.
Por otra parte, también podemos modificar el número de clases mediante el argumento breaks. Veamos un ejemplo
Representa el histograma anterior con la densidad y haciendo 20 intervalos de clase.
Un recurso gráfico muy útil para representar la distribución de variables continuas es la curva de densidad estimada (KDE). Puede mostrarse de forma independiente o superponerse al histograma. Para esta segunda opción, es imprescindible que el histograma esté expresado en escala de densidad y no en frecuencias absolutas; solo así ambas representaciones serán comparables y coherentes entre sí.
Representa el histograma anterior con la curva KDE.
3.3 Representación de diagramas de caja
Este tipo de diagrama es apropiado para representar variables de tipo cuantitativo. Es de especial interés para comparar grupos de forma robusta y para detectar valores extremos (outliers). La función para representar un diagrama de este tipo es boxplot().
Representa un diagrama de caja para la variable colesterol
Observa que en este diagrama la caja representa el recorrido del 50 % central de la distribución. Las líneas superior e inferior, conocidas como bigotes, abarcan aproximadamente el 25 % de cada uno de los extremos y muestran el rango que puede considerarse dentro del patrón esperable de los datos. Las observaciones que se alejan notablemente del resto (outliers) se representan como puntos individuales.
Dado que los cuartiles son medidas de posición robustas ante valores extremos, este tipo de diagrama resulta especialmente útil para detectar estos posibles valores atípicos.
4 Diagramas comparativos
Veamos ahora la forma de comparar dos distribuciones. Bien porque aparece una variable de agrupación, o bien porque se trate de dos variables distintas.
4.1 Diagramas de barras comparativos
Compara la distribución de los grupos sanguíneos en función del sexo.
Los pasos son:
- Obtener las frecuencias cruzadas de las dos variables,
table(variable_1,variable_2), y asignarlas a un objeto. - Se puede definir un vector con colores personalizados, o dejar los que usa el sistema por defecto.
- Utilizar barplot() con el objeto definido a traves de table(). barplot() contempla un argumento
besideque puede tomar valoresTRUE/FALSE; en el primer caso representa las barras solapadas y en el segundo apiladas. - Finalmente, a barplot() se le pueden añadir argumentos de personalización como son los títulos.
haz una copia del código y solo tienes que cambiar el valor del argumento beside
4.2 Comparación de la distribución de variables cuantitativas
Cuando queremos comparar la distribución de variables cuantitativas, el histograma no suele ser el recurso más adecuado: al superponer el histograma de un grupo sobre el del otro, las barras tienden a ocultarse entre sí y resulta difícil interpretar la comparación. En cambio, las curvas de densidad estimada (KDE) ofrecen una alternativa mucho más útil, ya que permiten visualizar de forma limpia y simultánea la forma de ambas distribuciones.
Compara la distribución de las lipoproteinas de alta y baja densidad, HDL y LDL, respectivamente.
Los pasos son:
- Obtener las densidades de ambas variables
- Dibujar con
plot()una de estas densidades (aprovechamos para personalizar el gráfico aquí) - Añadir la otra curva con
lines()(usando otro color) - Podemos añadir finalmente una leyenda que indique qué curva representa a cada variable
Si quisiéramos añadir más curvas, solo hay que repetir el paso 3 y ampliar la leyenda.
Observa que la curva LDL se corta. Convendría adaptar la métrica del eje para que se observen bien las dos. Vamos a ello:
Adapta el recorrido del eje de abscisas para que sea posible representar los valores de LDL y HDL por completo
HDL y LDL), responde a las siguientes cuestiones ¡toma notas de esto en tus apuntes!
- Discute la simetría y la variabilidad de ambas distribuciones.
- Discute la posición relativa que deben tener la media aritmética y la mediana en cada una de las distribuciones (no se trata de calcularlas, lo que se pide es que a la vista de las distribuciones, intuyas en qué parte de cada distribución deben localizarse ambas medidas; si alguna debe ser mayor que la otra)
- Comparativamente, ¿cómo crees que deben ser las desviaciones típicas de ambas distribuciones? ¿Crees que son comparables?
- Si la calculáramos ¿cuánto debería valer el área bajo cada curva? ¿por qué?
4.3 Diagramas de caja comparativos
Vamos a conocer una nueva clase de objeto de R; se trata de formula.
En R, una fórmula es una forma compacta y expresiva de describir relaciones entre variables. Se utiliza para indicar que una variable se explica en función de otra —la primera actúa como variable respuesta y la segunda como variable explicativa— y constituye la base de la mayoría de las funciones estadísticas y gráficas del lenguaje.
La fórmula más simple tiene la expresión:
El símbolo “~” es el equivalente al “=” en una fórmula matemática. En R, el sígno “=” tiene otros usos, así que las fórmulas se definen con “~”. Para ganar intuición, lee este símbolo como ‘…es función de…’. Por ejemplo:
datos$colesterol ~ datos$sexo
lo leeríamos como “la variable colesterol es función de la variable sexo”. Vamos a usar esta nueva clase de objeto para definir los diagramas de caja comparativos.
Obtén un diagrama de cajas con la distribución del nivel de colesterol en función del sexo del paciente.
Obtén un diagrama de cajas con la distribución del nivel de colesterol en función del grupo sanguíneo del paciente.
Asigna al diagrama el color “LightSteelBlue” A la vista del diagrama obtenido, responde a las siguientes cuestiones:
¡toma notas de esto en tus apuntes!
- Discute si se pueden considerar homogéneos los niveles de colesterol en los cuatro grupos sanguíneos.
- ¿Detectas valores extremos en alguna distribución?
- ¿Crees que es correcta la siguiente afirmación?:
El 50 % de los pacientes del grupo sanguíneo AB con los valores de colesterol más altos presenta niveles de colesterol superiores al nivel que alcanza el 75 % de los pacientes del grupo B con los valores más bajos.
- ¿Crees que son simétricas las distribuciones?
5 Cálculo de medidas descriptivas
A continuación vemos cómo resumir las variables mediante sus principales medidas de síntesis.
Como sabemos, la mejor forma de describir una variable categórica es presentar las frecuencias absolutas y relativas de cada una de sus categorías. Cuando además existe una relación de orden o la variable tiene una identidad numérica, es posible calcular medidas de posición y dispersión que permiten resumir mejor su distribución.
A continuación se muestra un resumen de las funciones que permiten obtener las medidas descriptivas. Revísalas y, después, veremos algunos ejemplos prácticos.
Obtén la distribución de frecuencias del sexo del paciente
- las absolutas
- y las relativas (redondeadas a tres decimales)
Determina las siguientes medidas descriptivas del nivel de colesterol:
- Media
- Desviación típica
- Percentiles 5 y 95
- Mediana
- Rango intercuartílico
- Se define el rango o amplitud como la diferencia entre los valores máximo y mínimo de la variable. Obtén esta medida.
- En R (base), no existe una función que calcule el coeficiente de variación (CV). Este coeficiente es el cociente entre la desviación típica y la media, siempre que la media sea superior a 1. Obtén el CV del nivel de colesterol.
Realiza las actividades propuestas a continuación y discute los planteamientos de los enunciados.
¡toma notas de esto en tus apuntes!
- Crea una variable con el índice aterogénico I (llámala
IA1) e incorpórala a la base de datosdatos - Determina la media y la desviación típica del \(IA_1\).
- Obtén un histograma y la curva de densidad KDE para este índice.
- ¿Crees que es simétrica la distribución?
- Una medida de asimetría simple es la que compara la media con la mediana y estandariza la diferencia con la desviación típica:
Obtén esta medida para el índice aterogénico I. Si \(As=0\), la distribución es simétrica (la media y la mediana coinciden) ¿Cómo es en este caso? ¿Cómo interpretas el signo de este coeficiente?
\[ As=\frac{\bar{x}-\text{mediana}}{s} \]
- Si consideramos como grupo de riesgo al 20% de los pacientes con el \(IA_1\) más alto, ¿a partir de qué valor de este índice se considera que un sujeto pertenece al grupo de riesgo?
- Compara las distribuciones por sexos del \(IA_1\) mediante diagramas de caja ¿es correcto deducir que el 50% de los hombres tienen valores más altos del índice aterogénico I que el 75% de las mujeres?
- Obtén el índice aterogénico II (llámalo
IA2) e incorpóralo a la base de datos. - Obtén la media y desviación típica de los dos índices,
IA1eIA2. ¿Cuál de los dos crees que presenta mayor variabilidad? - Calcula el coeficiente de variación de los dos índices. Ahora, ¿cuál de los dos crees que presenta mayor variabilidad?
- Justifica si las respuestas que has dado en las dos cuestiones anteriores coinciden y, en caso negativo, di cuál es la razón. ¿Qué conclusión sacas?
- Nos interesa comparar la forma de la distribución de los dos índices \(IA_1\) y \(IA_2\), pero como tienen métricas distintas es necesario estandarizarlos. La estandarización que vamos a hacer consiste en restar a cada índice su media y dividir el resultado por su desviación típica (a esto se le llama tipificación). Vamos a llamar
ZIA1yZIA2a estos índices estandarizados, que se obtienen según las expresiones:\[ Z_{IA_1}=\frac{IA_1-\overline{IA_1}}{s_{IA_1}}, \qquad Z_{IA_2}=\frac{IA_2-\overline{IA_2}}{s_{IA_2}} \]Estandariza los dos índices y compara sus densidades mediante curvas KDE (las dos en el mismo diagrama, asigna un color diferente a cada una para diferenciarlas)
Hemos terminado con esta práctica. Probablemente, quieras guardar el script que has generado.
— o0o —














