::p_load(rio, dplyr, ggplot2) pacman
Clase práctica Semana 12
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
Importación de data
<- import("data/filmaffinity_dataset_limpio.xlsx") df
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
<- df %>%
df2 filter(Nota_cat != "Sin nota")
<- table(df2$Nota_cat, df2$continente)
tabla1 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
<- chisq.test(tabla1)$expected
tabla2 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
::p_load(rio, dplyr, tidyr, labelled, tibble, questionr) pacman
Importación de base de KoboToolbox
Debemos primero importar nuestra base de datos descargada desde Kobo.
<- import("data/base_ejemplo.xlsx") df
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.
<- c('start',
encabezados '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')
<- df
df2 names(df2) <- encabezados
Configuración de etiquetas de variables
Además del nombre, podemos añadir etiquetas a las columnas.
<- list(start = 'start',
etiquetas_columnas 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')
<- df2
df3 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]))