1 instalar la libreria PsyMetricTools

Es necesario instalar la libreria PsyMetricTools desde github.

if (!require("devtools")) {
  install.packages("devtools")
}
devtools::install_github("jventural/PsyMetricTools")

2 Cargando las librerias a utilizarse

Instalar la libreria “pacman”

install.packages("pacman")

La biblioteca “pacman” es una herramienta que, al utilizar la función p_load, permite instalar automáticamente una biblioteca si no está previamente instalada, y simplemente cargarla si ya está presente en el entorno. La función que se utiliza en la libreria PsyMetricTools se basa en los codigos de la libreria careless

pacman::p_load(tidyverse,PsyMetricTools, careless)

2.1 1. Carga de datos

El conjunto de datos psych::bfi (que contiene datos de personalidad del Big Five Inventory) se carga y se convierte en un tibble (as_tibble()), luego se eliminan las filas que contienen valores faltantes (na.omit()). Finalmente, se selecciona la variable género, que será la variable de comparación.

# data
big5 <- psych::bfi %>% 
  as_tibble() %>% 
  na.omit() %>% 
  select(A1:gender) 

En esta data existe un desbalance de los datos, porque existen existe casi el doble de mujeres con respecto a los varones. Males = 1, Females =2

big5 %>% count(gender)
## # A tibble: 2 × 2
##   gender     n
##    <int> <int>
## 1      1   735
## 2      2  1501

2.2 2. Renombrar las columnas

Se genera un vector de nombres nuevos para las columnas llamado nuevos_nombres, utilizando la función paste0() para concatenar el prefijo “bif” con los números del 1 al 25.

# Renombrar las columnas
nuevos_nombres <- c(paste0("bif", 1:25), "gender")

2.3 3. Aplicar los nuevos nombres a las columnas

Se renombran las columnas del conjunto de datos big5 utilizando los nombres generados en el paso anterior (nuevos_nombres) mediante la función rename_with(), aplicada a todas las columnas (everything()), y se almacena el resultado en un nuevo objeto llamado big5_new.

# Aplicar los nuevos nombres a las columnas
big5_new <- big5 %>%
  rename_with(~ nuevos_nombres, everything())

3 Datos balanceado

La función smote_multiclass permite equilibrar los datos en variables de resultado con más de dos grupos, extendiendo la funcionalidad de la biblioteca desarrollada por Dongyuan (2022). Para obtener más detalles sobre cómo funciona el algoritmo SMOTE, se recomienda revisar los trabajos de Islahulhaq y Ratih (2021) y Wongvorachan et al. (2023).

balanced_data <- PsyMetricTools::smote_multiclass(big5_new, outcome = "gender", perc_maj = 100, k = 5)
balanced_data %>% count(gender)
## # A tibble: 2 × 2
##   gender     n
##   <chr>  <int>
## 1 1       1501
## 2 2       1501

4 Como citar la libreria PsyMetricTools

Ventura-León, J. (2024). PsyMetricTools [Software]. GitHub. https://github.com/jventural/PsyMetricTools

5 Referencia

Dongyuan, W. (2022). RSBID [Software]. GitHub. https://github.com/dongyuanwu/RSBID

Islahulhaq, W. W., & Ratih, I. D. (2021). Classification of Non-Performing Financing Using Logistic Regression and Synthetic Minority Over-sampling Technique-Nominal Continuous (SMOTE-NC). Int. J. Adv. Soft Comput. Appl, 13, 115-128.

Wongvorachan, T., He, S., & Bulut, O. (2023). A comparison of undersampling, oversampling, and SMOTE methods for dealing with imbalanced classification in educational data mining. Information, 14(1), 54.