MulaiMulai sekarang secara gratis

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 tbl
  • summarize() (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

Lihat Kursus

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 splitPlan yang sudah Anda buat.
  • Lengkapi bagian yang kosong untuk
    • melakukan pivot_longer sehingga prediksi berada dalam satu kolom pred.
    • menambahkan kolom residu (hasil aktual - hasil prediksi).
    • memperoleh RMSE dari prediksi validasi silang untuk setiap jenis model.
  • 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 = ___(___(___)))
Edit dan Jalankan Kode