Clase práctica Semana 12

Autor/a

Santiago Sotelo y Nadia Duffó

Material para el ejercicio

Descarga la carpeta .zip para acceder al material de esta sesión. Haga click en el siguiente enlace. No olvides unzipear el archivo.

Estadística bivariada:

Chi-cuadrado

Permite evaluar si existe una asociación estadística entre dos variables categóricas. Para esto, compara las frecuencias observadas con las frecuencias esperadas.

Bajo el supuesto de independencia, si las diferencias son suficientemente grandes, se concluye que las variables están asociadas.

Haremos una evaluación. Primero, preparamos todos los insumos que necesitaremos y ya conocemos (carga de paquetes, importación y exploración de data)

Cargar paquetes

pacman::p_load(rio, dplyr, ggplot2)

Importación de data

df <- import("data/filmaffinity_dataset_limpio.xlsx")

Exploración de data

glimpse(df)
Rows: 119,003
Columns: 11
$ index        <dbl> 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,…
$ Título       <chr> "'49-'17", "10,000 Years B.C. (C)", "1812", "20.000 legua…
$ Año          <dbl> 1917, 1916, 1912, 1907, 1909, 1916, 1912, 1916, 1908, 191…
$ País         <chr> "Estados Unidos", "Estados Unidos", "Rusia", "Francia", "…
$ Dirección    <chr> "Ruth Ann Baldwin", "Willis H. O'Brien", "Vasili Goncharo…
$ Reparto      <chr> "Joseph W. Girard, Leo Pierson, William Dyer, Mattie Witt…
$ Nota         <dbl> NA, 5.1, NA, 6.0, 5.3, NA, 5.4, NA, 4.6, NA, 5.8, NA, NA,…
$ `Tipo filme` <chr> "Película", "Cortometraje", "Película", "Cortometraje", "…
$ Género       <chr> "Western", "Comedia", "Drama", "Fantástico", "Comedia", "…
$ Nota_cat     <chr> "Sin nota", "5 a más", "Sin nota", "5 a más", "5 a más", …
$ continente   <chr> "América", "América", "Asia", "Europa", "Europa", "Améric…

Chi cuadrado

Generamos una tabla de frecuencias observadas

df2 <- df %>% 
  filter(Nota_cat != "Sin nota")
tabla1 <- table(df2$Nota_cat, df2$continente)
print(tabla1)
            
             África América  Asia Europa Oceanía
  5 a más       139   22760  6066  18442     459
  Menos de 5     39   12189  1241   6707     252

Generamos una tabla de frecuencias esperadas

tabla2 <- chisq.test(tabla1)$expected
print(tabla2)
            
               África  América     Asia    Europa  Oceanía
  5 a más    124.7569 24495.11 5121.341 17626.468 498.3267
  Menos de 5  53.2431 10453.89 2185.659  7522.532 212.6733

Realizamos la prueba

chisq.test(tabla1)

    Pearson's Chi-squared test

data:  tabla1
X-squared = 1135.4, df = 4, p-value < 2.2e-16

Comprobamos con proporciones

tabla1 %>% 
  prop.table(2) %>% 
  round(3)*100
            
             África América Asia Europa Oceanía
  5 a más      78.1    65.1 83.0   73.3    64.6
  Menos de 5   21.9    34.9 17.0   26.7    35.4

Trabajo grupal: exploración de nuestra data

Carga de paquetes

pacman::p_load(rio, dplyr, tidyr, labelled, tibble, questionr)

Importación de base de KoboToolbox

Debemos primero importar nuestra base de datos descargada desde Kobo.

df <- import("data/base_ejemplo.xlsx")

Exploración inicial de data

names(df)
glimpse(df)

Cambio de encabezados

Cambiar los nombres de variables a nombres más cortos nos permitirá un mejor manejo de la base.

encabezados <- c('start',
                 'end',
                 'P1',
                 'P2',
                 'P3',
                 'P4',
                 'P4_1',
                 'P4_2',
                 'P4_3',
                 'P4_4',
                 'P4_5',
                 'P4_6',
                 'P4_7',
                 'P4_8',
                 '_id',
                 '_uuid',
                 '_submission_time',
                 '_validation_status',
                 '_notes',
                 '_status',
                 '_submitted_by',
                 '__version__',
                 '_tags',
                 '_index')
df2 <- df
names(df2) <- encabezados

Configuración de etiquetas de variables

Además del nombre, podemos añadir etiquetas a las columnas.

etiquetas_columnas <- list(start = 'start',
                   end = 'end',
                   P1 = 'Título del videojuego',
                   P2 = 'Año de lanzamiento (tráiler)',
                   P3 = 'Empresa',
                   P4 = 'Género',
                   P4_1 = 'Shooter',
                   P4_2 = 'Acción y aventura',
                   P4_3 = 'Terror',
                   P4_4 = 'Plataformas',
                   P4_5 = 'Simulación',
                   P4_6 = 'Rol',
                   P4_7 = 'Peleas',
                   P4_8 = 'Ninguno de los anteriores',
                   `_id` = '_id',
                   `_uuid` = '_uuid',
                   `_submission_time` = '_submission_time',
                   `_validation_status` = '_validation_status',
                   `_notes` = '_notes',
                   `_status` = '_status',
                   `_submitted_by` = '_submitted_by',
                   `__version__` = '__version__',
                   `_tags` = '_tags',
                   `_index` = '_index')

df3 <- df2
var_label(df3) <- etiquetas_columnas

Tablas de respuesta múltiple

df3 %>% 
  select(starts_with('P4_')) %>% 
  multi.table(., digits = 1) %>% 
  as.data.frame(.) %>% 
  rownames_to_column(. , 'Género') %>%
  mutate(Género = unlist(etiquetas_columnas[.$Género]))