ComeçarComece de graça

Modelando uma interação (2)

Neste exercício, você vai comparar o desempenho do modelo com interação que ajustou no exercício anterior com o desempenho de um modelo apenas com efeitos principais. Como este conjunto de dados é pequeno, vamos usar validação cruzada para simular previsões em dados fora da amostra.

Você começará a usar o pacote dplyr para fazer cálculos.

  • mutate() (docs) adiciona novas colunas a um tbl (um tipo de data frame)
  • group_by() (docs) define como as linhas são agrupadas em um tbl
  • summarize() (docs) calcula estatísticas de resumo de uma coluna

Você também usará o pivot_longer() do tidyr (docs), que pega várias colunas e as transforma em pares chave-valor. O data frame alcohol e as fórmulas fmla_add e fmla_interaction já foram pré-carregados.

Este exercício faz parte do curso

Aprendizado Supervisionado em R: Regressão

Ver curso

Instruções do exercício

  • Use kWayCrossValidation() (docs) para criar um plano de divisão para uma validação cruzada com 3 dobras.
    • O primeiro argumento é o número de linhas a serem divididas.
    • O segundo argumento é o número de dobras para a validação cruzada.
    • Você pode definir o 3º e 4º argumentos da função como NULL.
  • Examine e execute o código de exemplo para obter as previsões da validação cruzada de 3 dobras de um modelo sem interações e atribuí-las à coluna pred_add.
  • Obtenha as previsões da validação cruzada de 3 dobras do modelo com interações. Atribua as previsões à coluna pred_interaction.
    • O código de exemplo mostra o procedimento.
    • Use o mesmo splitPlan que você já criou.
  • Preencha as lacunas para
    • pivot_longer as previsões em uma única coluna pred.
    • adicionar uma coluna de resíduos (resultado real - resultado previsto).
    • obter o RMSE das previsões da validação cruzada para cada tipo de modelo.
  • Compare os RMSEs. Com base nesses resultados, qual modelo você usaria?

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# alcohol is available
summary(alcohol)

# Both the formulae are available
fmla_add
fmla_interaction

# Create the splitting plan for 3-fold cross validation
set.seed(34245)  # set the seed for reproducibility
splitPlan <- ___(___(___), ___, ___, ___)

# Sample code: Get cross-val predictions for main-effects only model
alcohol$pred_add <- 0  # initialize the prediction vector
for(i in 1:3) {
  split <- splitPlan[[i]]
  model_add <- lm(fmla_add, data = alcohol[split$train, ])
  alcohol$pred_add[split$app] <- predict(model_add, newdata = alcohol[split$app, ])
}

# Get the cross-val predictions for the model with interactions
alcohol$pred_interaction <- 0 # initialize the prediction vector
for(i ___ ___) {
  split <- ___
  model_interaction <- lm(___, data = alcohol[split$train, ])
  alcohol$___[split$app] <- predict(___, newdata = alcohol[split$app, ])
}

# Get RMSE
alcohol %>% 
  pivot_longer(cols=c('pred_add', 'pred_interaction'), names_to='modeltype', values_to='pred') %>%
  mutate(residuals = ____) %>%      
  group_by(modeltype) %>%
  summarize(rmse = ___(___(___)))
Editar e executar o código