class: middle

Para la sesión, necesitamos instalar los siguientes paquetes:

  • janitor
  • summarytools
  • tidyverse

Para instalarlos, utilizamos los siguientes comandos en la consola una sola vez.

install.packages("janitor")
install.packages("summarytools")
install.packages("tidyverse")

Luego, esperamos a que complete la instalación y verificamos:

library(janitor)
library(summarytools)
library(ggplot2)

En esta sesión veremos la exploración de variables cualitativas utilizando tablas, y gráficos.

Para ello, abriremos el archivo: “Univar_1_Var_Cualitativas.R”


1 Lectura de datos.

Con el siguiente código, leemos los datos directamente desde un enlace:

# Cargar los datos sobre Cancer de mama:
url<-"https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer/breast-cancer.data"
datos <- read.table(url, sep=",",stringsAsFactors=TRUE)
names(datos) <- c("clase","edad","menopausia","tamanio",
                       "inv_nodes","node_caps","deg_malig",
                       "breast","breast_quad","irradiat")
## Mas informacion en: https://archive.ics.uci.edu/ml/datasets/Breast+Cancer

2 Exploración inicial.

Exploramos el dataset observando los primeros 6 registros. Para ello, usamos el comando head:

Luego, realizamos una exploración del tipo de columnas que tiene este dataset.

str(datos)
## 'data.frame':    286 obs. of  10 variables:
##  $ clase      : Factor w/ 2 levels "no-recurrence-events",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ edad       : Factor w/ 6 levels "20-29","30-39",..: 2 3 3 5 3 5 4 5 3 3 ...
##  $ menopausia : Factor w/ 3 levels "ge40","lt40",..: 3 3 3 1 3 1 3 1 3 3 ...
##  $ tamanio    : Factor w/ 11 levels "0-4","10-14",..: 6 4 4 3 1 3 5 4 11 4 ...
##  $ inv_nodes  : Factor w/ 7 levels "0-2","12-14",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ node_caps  : Factor w/ 3 levels "?","no","yes": 2 2 2 2 2 2 2 2 2 2 ...
##  $ deg_malig  : int  3 2 2 2 2 2 2 1 2 2 ...
##  $ breast     : Factor w/ 2 levels "left","right": 1 2 1 2 2 1 1 1 1 2 ...
##  $ breast_quad: Factor w/ 6 levels "?","central",..: 3 6 3 4 5 3 3 3 3 4 ...
##  $ irradiat   : Factor w/ 2 levels "no","yes": 1 1 1 1 1 1 1 1 1 1 ...

Observamos que en este set de datos todas las variables excepto deg_malig son de tipo factor (observe ‘Factor’ al lado de cada variable).

2.1 Tablas de Frecuencias.

Las tablas de frecuencias se pueden construir de diferentes maneras en R.

  • Aquí veremos 3 formas.
### Utilizando table
Exploramos la variable clase con tablas de frecuencias:
r # Explorando con tablas: frecuencias y proporciones table(datos$clase)
## ## no-recurrence-events recurrence-events ## 201 85

Interpretación: - Tenemos 201 casos de eventos no recurrentes de cáncer, y - 85 observaciones con eventos recurrentes de cáncer,


2.1.0.1 Proporciones.

# prop.table convierte la tabla a proporciones
proptable <- prop.table(table(datos$clase))
# round redondea a los digitos indicados en el segundo argumento.
round(proptable, 3) 
## 
## no-recurrence-events    recurrence-events 
##                0.703                0.297

Interpretación: - El 70.3% de las observaciones son eventos no recurrentes de cáncer, y - 29.7% de las observaciones son eventos recurrentes de cáncer,

# El comando as.data.frame convierte esta tabla a un data frame para mejorar la visualización 
as.data.frame(proptable)  
##                   Var1      Freq
## 1 no-recurrence-events 0.7027972
## 2    recurrence-events 0.2972028

2.1.1 Utilizando janitor

Ahora, exploramos la variable age con tablas de frecuencias. Esta vez utilizaremos el paquete janitor para una mejor visualización.

Utilizamos el comando tabyl para crear la tabla de frecuencias y observamos los resultados e interpretamos.

library(janitor)
janitor::tabyl(datos$edad)
##  datos$edad  n     percent
##       20-29  1 0.003496503
##       30-39 36 0.125874126
##       40-49 90 0.314685315
##       50-59 96 0.335664336
##       60-69 57 0.199300699
##       70-79  6 0.020979021

2.1.2 Utilizando summarytools

Otra opción es usar el paquete summarytools. Si ya realizó la instalación, utilice el siguiente código:

library(summarytools)
summarytools::freq(datos$menopausia, 
                   order = "freq")
## Frequencies  
## datos$menopausia  
## Type: Factor  
## 
##                 Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ------------- ------ --------- -------------- --------- --------------
##       premeno    150     52.45          52.45     52.45          52.45
##          ge40    129     45.10          97.55     45.10          97.55
##          lt40      7      2.45         100.00      2.45         100.00
##          <NA>      0                               0.00         100.00
##         Total    286    100.00         100.00    100.00         100.00

Interpretación: - El 52.45% de las observaciones son mujeres que tuvieron pre menopausia. - El 45.10% de las observaciones son mujeres que tuvieron la menopausia a los 40 o más. - Solo el 2.42% tuvo la menopausia antes de los 40.


2.2 Gráfico circular

Para crear un gráfico circular, utilizamos el comando pie. Por ejemplo, lo utilizaremos para observar la clasificación de los casos de cancer con un gráfico circular.

pie(table(datos$clase), 
    main="Gráfico para la clasificación de casos")

Note que despues de main vemos un texto. Este texto es el título principal (main) del gráfico. Podemos modificar el título, cambiando el texto dentro de las comillas.


Alternativamente, podemos utilizar la librería ggplot para crear un gráfico de pie con mejor apariencia.

tabla_clase <- data.frame(table(datos$clase))
names(tabla_clase) <- c("Clase","Frecuencia")

library(ggplot2)
ggplot(tabla_clase, 
       aes(x="", y=Frecuencia, fill=Clase)) +
  geom_bar(stat="identity", width=1) + 
  coord_polar("y", start=0) + theme_void()


2.3 Gráfico de barras.

Creamos el gráfico de barras para la variable menopausia.

  barplot(table(datos$menopausia), 
          xlab="Menopausia",
          ylab="Frecuencia",
          main="Distribución de tipos de menopausia")

Este gráfico acompaña a la tabla de frecuencias para una visualización rápida de la distribución de la variable.

name: yourturn template: section

.left-column[ #
.fancy[Ejercicio]]


–>

Ejercicios:

.right-column[ Realizar el análisis univariado de las variables del dataset que no han sido analizadas. Considerar lo siguiente:

  1. Explorar la variable .acidinline[tumor-size] (tamaño del tumo) utilizando un gráfico y una tabla de frecuencias. Observar la frecuencia y proporciones de cada categoría. Interpretar resultados.

  2. Explorar la variable .acidinline[deg-malig] (grado histológico del tumor) utilizando un gráfico y tabla de frecuencias. Observar la frecuencia y proporciones de cada categoría e interpretar resultados.

  3. Explorar la variable .acidinline[breast] (lado) utilizando un gráfico y tabla de frecuencias. Observar la frecuencia y proporciones de cada categoría e interpretar resultados.

.left-column[ ## .fancy[.acidinline[08:00 minutes]]]