Actividad 01 - Competencia de regresión en Kaggle

Ejemplo de predicción

Author

Edimer David Jaramillo

Published

March 20, 2025

Bibliotecas

Code
library(tidyverse)
library(rsample)
library(yardstick)

Datos

Train

Code
df_train <- read_csv("../datos/datos-kaggle/train.csv")
df_train |> head()

Test

Code
df_test <- read_csv("../datos/datos-kaggle/test.csv")
df_test |> head()

Validación cruzada simple

Code
proporcion_train <- 0.70

set.seed(2025)
particion <-
  initial_split(data = df_train, prop = proporcion_train)

train <- training(particion)
test <- testing(particion)

Modelos

Modelo 1

Code
modelo1 <- lm(total_updrs ~ shimmer, data = train)
summary(modelo1)

Call:
lm(formula = total_updrs ~ shimmer, data = train)

Residuals:
    Min      1Q  Median      3Q     Max 
-23.111  -7.276  -1.587   7.494  26.330 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  27.8365     0.3112  89.435  < 2e-16 ***
shimmer      33.2255     7.3859   4.499 7.08e-06 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 10.72 on 3286 degrees of freedom
Multiple R-squared:  0.006121,  Adjusted R-squared:  0.005818 
F-statistic: 20.24 on 1 and 3286 DF,  p-value: 7.08e-06

Modelo 2

Code
modelo2 <- lm(total_updrs ~ nhr, data = train)
summary(modelo2)

Call:
lm(formula = total_updrs ~ nhr, data = train)

Residuals:
    Min      1Q  Median      3Q     Max 
-22.253  -7.508  -1.579   7.308  26.252 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  28.6488     0.2128 134.631  < 2e-16 ***
nhr           9.9489     3.2714   3.041  0.00238 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 10.74 on 3286 degrees of freedom
Multiple R-squared:  0.002807,  Adjusted R-squared:  0.002503 
F-statistic: 9.249 on 1 and 3286 DF,  p-value: 0.002375

Comparando modelos

Predicciones en train y test

Code
# Métricas en train
pred_modelo1_train <-
  predict(object = modelo1, newdata = train)

pred_modelo2_train <-
  predict(object = modelo2, newdata = train)

# Métricas en test
pred_modelo1_test <-
  predict(object = modelo1, newdata = test)

pred_modelo2_test <-
  predict(object = modelo2, newdata = test)

Calculando RMSE

Code
# RMSE Train
rmse_modelo1_train <- 
  rmse_vec(truth = train$total_updrs,
           estimate = pred_modelo1_train)

rmse_modelo2_train <- 
  rmse_vec(truth = train$total_updrs,
           estimate = pred_modelo2_train)

# RMSE Test
rmse_modelo1_test <- 
  rmse_vec(truth = test$total_updrs,
           estimate = pred_modelo1_test)

rmse_modelo2_test <- 
  rmse_vec(truth = test$total_updrs,
           estimate = pred_modelo2_test)
  • Reportamos las métricas del modelo 1:
Code
rmse_modelo1_train
[1] 10.72002
Code
rmse_modelo1_test
[1] 10.71263
  • Reportamos las métricas del modelo 3:
Code
rmse_modelo2_train
[1] 10.73788
Code
rmse_modelo2_test
[1] 10.74312

Predicciones

  • Vamos a suponer que seleccionamos el modelo 2 como el ganador para hacer predicciones en Kaggle y realizamos el ajuste final con todos los datos (df_train).
Code
modelo_final2 <-
  lm(total_updrs ~ nhr, data = df_train)
  • Ahora utilizamos este modelo para hacer predicciones para Kaggle.
Code
predicciones_kaggle <-
  predict(object = modelo_final2, newdata = df_test)

Exportando predicciones

  • Conformando la tabla para Kaggle.
Code
submit_kaggle <-
  df_test |>
  select(id) |>
  mutate(total_updrs = predicciones_kaggle)

submit_kaggle |> head()
  • Exportando las predicciones:
Code
write_csv(submit_kaggle, "../datos/datos-kaggle/ejemplo_submission1.csv")