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 tblsummarize()(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
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
splitPlanpe care l-ai creat deja.
- Completează spațiile libere pentru a:
- aplica
pivot_longerasupra 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.
- aplica
- 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 = ___(___(___)))