ÎncepețiÎncepe gratuit

Modelarea unei interacțiuni (2)

În acest exercițiu, vei compara performanța modelului cu interacțiuni pe care l-ai construit în exercițiul anterior cu performanța unui model care include doar efectele principale. Deoarece setul de date este mic, vom folosi validarea încrucișată pentru a simula predicții pe date noi.

Vei începe să folosești pachetul dplyr pentru calcule.

  • mutate() (docs) adaugă coloane noi într-un tbl (un tip de data frame)
  • group_by() (docs) specifică modul în care rândurile sunt grupate într-un tbl
  • summarize() (docs) calculează statistici rezumative pentru o coloană

Vei folosi și funcția pivot_longer() din tidyr (docs), care ia mai multe coloane și le combină în perechi cheie-valoare. Data frame-ul alcohol și formulele fmla_add și fmla_interaction sunt deja încărcate.

Acest exercițiu face parte din cursul

Învățare supervizată în R: Regresia

Vezi cursul

Instrucțiuni pentru exercițiu

  • Folosește kWayCrossValidation() (docs) pentru a crea un plan de împărțire pentru o validare încrucișată cu 3 segmente.
    • Primul argument este numărul de rânduri care urmează să fie împărțite.
    • Al doilea argument este numărul de segmente pentru validarea încrucișată.
    • Poți seta argumentele 3 și 4 ale funcției la NULL.
  • Examinează și rulează codul exemplu pentru a obține predicțiile din validarea încrucișată cu 3 segmente ale unui model fără interacțiuni și atribuie-le coloanei pred_add.
  • Obține predicțiile din validarea încrucișată cu 3 segmente ale modelului cu interacțiuni. Atribuie predicțiile coloanei pred_interaction.
    • Codul exemplu îți arată procedura.
    • Folosește același splitPlan pe care l-ai creat deja.
  • Completează spațiile libere pentru a:
    • aplica pivot_longer asupra predicțiilor și a le combina într-o singură coloană pred.
    • adăuga o coloană de reziduuri (valoarea reală − valoarea prezisă).
    • calcula RMSE-ul predicțiilor din validarea încrucișată pentru fiecare tip de model.
  • Compară valorile RMSE. Pe baza acestor rezultate, ce model ar trebui să folosești?

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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 = ___(___(___)))
Editează și rulează codul