Memodelkan interaksi (2)
Dalam latihan ini, Anda akan membandingkan kinerja model interaksi yang Anda latih pada latihan sebelumnya dengan kinerja model yang hanya memuat efek utama. Karena himpunan data ini kecil, kita akan menggunakan validasi silang untuk mensimulasikan pembuatan prediksi pada data di luar sampel.
Anda akan mulai menggunakan paket dplyr untuk melakukan perhitungan.
mutate()(docs) menambahkan kolom baru ke sebuah tbl (jenis data frame)group_by()(docs) menentukan bagaimana baris dikelompokkan dalam sebuah tblsummarize()(docs) menghitung statistik ringkasan dari sebuah kolom
Anda juga akan menggunakan pivot_longer() dari tidyr (docs) yang mengambil banyak kolom dan mengubahnya menjadi pasangan kunci-nilai. Data frame alcohol serta rumus fmla_add dan fmla_interaction telah dimuat sebelumnya.
Latihan ini adalah bagian dari kursus
Supervised Learning di R: Regresi
Petunjuk latihan
- Gunakan
kWayCrossValidation()(docs) untuk membuat rencana pembagian bagi validasi silang 3-fold.- Argumen pertama adalah jumlah baris yang akan dipecah.
- Argumen kedua adalah jumlah fold untuk validasi silang.
- Anda dapat mengatur argumen ke-3 dan ke-4 fungsi ke
NULL.
- Tinjau dan jalankan kode contoh untuk memperoleh prediksi validasi silang 3-fold dari model tanpa interaksi dan tetapkan ke kolom
pred_add. - Dapatkan prediksi validasi silang 3-fold dari model dengan interaksi. Tetapkan prediksi ke kolom
pred_interaction.- Kode contoh menunjukkan prosedurnya.
- Gunakan
splitPlanyang sudah Anda buat.
- Lengkapi bagian yang kosong untuk
- melakukan
pivot_longersehingga prediksi berada dalam satu kolompred. - menambahkan kolom residu (hasil aktual - hasil prediksi).
- memperoleh RMSE dari prediksi validasi silang untuk setiap jenis model.
- melakukan
- Bandingkan nilai RMSE. Berdasarkan hasil ini, model mana yang sebaiknya Anda gunakan?
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# 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 = ___(___(___)))