Transformasi input: "hockey stick"
Dalam latihan ini, Anda akan membangun model untuk memprediksi harga dari ukuran rumah (luas permukaan). Himpunan data houseprice, yang sudah dimuat untuk Anda, memiliki kolom:
price: harga rumah dalam satuan $1000size: luas permukaan
Sebuah scatterplot dari data menunjukkan pola yang cukup nonlinier: semacam "hockey-stick" di mana harga relatif datar untuk rumah yang lebih kecil, tetapi naik tajam seiring ukuran rumah bertambah. Bentuk fungsi kuadratik dan kubik sering cocok untuk mengekspresikan hubungan seperti hockey-stick. Perhatikan bahwa mungkin tidak ada alasan "fisik" bahwa price berhubungan dengan kuadrat size; kuadratik hanyalah pendekatan bentuk tertutup atas hubungan yang diamati.

Anda akan menyesuaikan model untuk memprediksi harga sebagai fungsi dari kuadrat ukuran, dan melihat kecocokannya pada data latih.
Karena ^ juga merupakan simbol untuk mengekspresikan interaksi, gunakan fungsi I() (docs) untuk memperlakukan ekspresi x^2 “apa adanya”: yaitu sebagai kuadrat dari x, bukan interaksi x dengan dirinya sendiri.
exampleFormula = y ~ I(x^2)
Latihan ini adalah bagian dari kursus
Supervised Learning di R: Regresi
Petunjuk latihan
- Tulis sebuah rumus,
fmla_sqr, untuk mengekspresikan price sebagai fungsi dari size kuadrat. Cetak rumus tersebut. - Sesuaikan model
model_sqrke data menggunakanfmla_sqr - Sebagai pembanding, sesuaikan model linear
model_linke data menggunakan rumusprice ~ size. - Lengkapi bagian kosong untuk
- membuat prediksi pada data latih dari kedua model
- memutar prediksi menjadi satu kolom
predmenggunakanpivot_longer(). - membandingkan secara grafis prediksi kedua model terhadap data. Model mana yang lebih sesuai?
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# houseprice is available
summary(houseprice)
# Create the formula for price as a function of squared size
(fmla_sqr <- ___)
# Fit a model of price as a function of squared size (use fmla_sqr)
model_sqr <- ___
# Fit a model of price as a linear function of size
model_lin <- ___
# Make predictions and compare
houseprice %>%
mutate(pred_lin = ___(___), # predictions from linear model
pred_sqr = ___(___)) %>% # predictions from quadratic model
pivot_longer(cols = c('pred_lin', 'pred_sqr'), names_to = 'modeltype', values_to = 'pred') %>% # pivot the predictions
ggplot(aes(x = size)) +
geom_point(aes(y = ___)) + # actual prices
geom_line(aes(y = ___, color = modeltype)) + # the predictions
scale_color_brewer(palette = "Dark2")