Bắt đầu ngayBắt đầu miễn phí

Biến đổi đầu vào: dạng "gậy khúc côn cầu"

Trong bài này, bạn sẽ xây dựng một mô hình dự đoán giá dựa trên một thước đo kích thước ngôi nhà (diện tích sàn). Bộ dữ liệu houseprice đã được nạp sẵn có các cột:

  • price: giá nhà tính theo đơn vị $1000
  • size: diện tích sàn

Biểu đồ scatter cho thấy dữ liệu khá phi tuyến: giống dạng "gậy khúc côn cầu" khi giá gần như phẳng với những ngôi nhà nhỏ, nhưng tăng mạnh khi nhà lớn hơn. Các đa thức bậc hai (quadratic) và bậc ba (cubic/tritic) thường là những dạng hàm tốt để biểu diễn quan hệ kiểu gậy khúc côn cầu. Lưu ý có thể không có lý do "vật lý" nào khiến price liên hệ với bình phương của size; một phương trình bậc hai đơn giản là xấp xỉ dạng đóng của quan hệ quan sát được.

scatterplot

Bạn sẽ khớp một mô hình để dự đoán giá như một hàm của kích thước bình phương, và xem độ khớp của nó trên dữ liệu huấn luyện.

^ cũng là ký hiệu biểu diễn tương tác, hãy dùng hàm I() (docs) để xử lý biểu thức x^2 “nguyên trạng”: tức là coi đó là bình phương của x thay vì tương tác của x với chính nó.

exampleFormula = y ~ I(x^2)

Bài tập này là một phần của khóa học

Học có giám sát với R: Hồi quy

Xem khóa học

Hướng dẫn bài tập

  • Viết một công thức, fmla_sqr, để biểu diễn price như một hàm của size bình phương. In nó ra.
  • Khớp mô hình model_sqr cho dữ liệu dùng fmla_sqr
  • Để so sánh, khớp một mô hình tuyến tính model_lin cho dữ liệu dùng công thức price ~ size.
  • Điền vào chỗ trống để
    • tạo dự đoán trên dữ liệu huấn luyện từ hai mô hình
    • xoay các dự đoán thành một cột pred bằng pivot_longer().
    • so sánh trực quan dự đoán của hai mô hình với dữ liệu. Mô hình nào khớp tốt hơn?

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# 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")
Chỉnh sửa và Chạy Mã