Cross-Validation

Proyecto 2 — Econometría en R

Gladys Andrea Rodríguez Guerrero
4 min readJun 23, 2021

El objetivo de crear un modelo es predecir los datos de una variable, en base a datos que no ha visto el modelo. La validación cruzada o K-fold cross validation consiste en tomar los datos originales y a partir de ellos dos conjuntos de datos, uno para entrenamiento y otro de prueba.

El conjunto de entrenamiento se divide en k conjuntos, para entrenar, toma cada subconjunto de prueba y entrenamiento. Este proceso se repetirá cada k veces y en cada iteración utiliza un conjunto diferente. Al finalizar las iteraciones, se calcula la precisión y el error para cada modelo evaluado. Al finalizar se calcula el promedio de todos los modelos entrenados, entregando como resultado el “mejor modelo para predecir”.

Tomar en cuenta que el RMSE, cálculo del error, está en las unidades de la variable dependiente, entre más cercano 0 sea mucho mejor.

Se recomienda un K entre 5 a10

Beneficios de este método:

  • Validar el rendimiento del modelo, es decir, verificar que las predicciones que realiza el modelo son reales y certeras.
  • Aleatoriedad de la selección de la muestra de datos para entrenar
  • Calidad de los datos.

Cross-Validation en R

Para la creación del K-folds se cargará la librería caret, si no la tiene cargada, es necesario descargarla de la siguiente forma: install.packages(“caret”)

Carga de librerías que se usarán en el desarrollo del modelo
Código para cargar los datos que se encuentran en una url

Se debe crear un objeto para entrenar al modelo, lo cual se usará la función train (perteneciente a la librería de caret). Los parámetros que necesita esta función son: variable dependiente, variables a analizar en el modelo, en data le asignamos el dataset a analizar, se necesita colocar un método para ejecutar el modelo (en este ejemplo se está usando “lm” — lineal model) y por último se coloca el método de validación, en este caso la variable que contiene el train control.

Para visualizar los resultados del entrenamiento se debe de colocar el código: Print () o summary ()

Esto para obtener datos como, la cantidad de variables evaluadas, la cantidad de observaciones que contiene el data set, el tamaño de cada fold usado para entrenar, RMSE, r cuadrado.

Es importante analizar el valor que entrega el RMSE ya que indica que tan bueno es el modelo para predecir.

Ejemplo de resultados obtenidos

Implementación de K-folds

Permite el tratamiento de outliers y modelar de mejor forma la data.

Primero se debe definir el valor de K (número de particiones), luego se hace la partición y se va a revolver la data de forma aleatoria (la ventaja de trabajar en R es que coloca de forma aleatoria). Para esto se genera una muestra de data aleatoria con el código:

Tomando como base el procedimiento explicado anteriormente, se crea una función, usando “function” y añadiendo “return” para devolver los valores. Esta función devuelve la cantidad de datasets ingresados

Para usar esta función se debe colocar así:

Predicciones y RMSE

Al momento el único proceso que se ha desarrollado es la división del dataset. El siguiente paso es entrenar al modelo y calcular el valor de RMSE. Para esto:

Para realizar una sola función se puede agrupar de la siguiente forma:

Para probar la función conjunta

Resultados obtenidos

Generacion de datasets con K-folds
Calculo RMSE promedio
RMSE de la función integrada (K-folds, Predicciones, RMSE)

--

--