Tôi đã khám phá một số công cụ để dự báo và đã tìm thấy Mô hình phụ gia tổng quát (GAM) có tiềm năng nhất cho mục đích này. GAM thật tuyệt! Chúng cho phép các mô hình phức tạp được chỉ định rất ngắn gọn. Tuy nhiên, chính sự cô đọng đó lại gây cho tôi một số nhầm lẫn, đặc biệt là về cách các GAM nghĩ về các thuật ngữ tương tác và hiệp phương sai.
Hãy xem xét một tập dữ liệu mẫu (mã có thể tái tạo ở cuối bài) trong đó y
là một hàm đơn điệu bị nhiễu bởi một vài gaussian, cộng với một số nhiễu:
Tập dữ liệu có một vài biến dự đoán:
x
: Chỉ số của dữ liệu (1-100).w
: Một tính năng phụ đánh dấu các phầny
có gaussian hiện diện.w
có các giá trị từ 1-20 trongx
khoảng từ 11 đến 30 và 51 đến 70. Mặt khác,w
là 0.w2
:w + 1
, sao cho không có giá trị 0.
mgcv
Gói của R giúp dễ dàng chỉ định một số mô hình có thể có cho các dữ liệu này:
Mô hình 1 và 2 khá trực quan. y
Chỉ dự đoán từ giá trị chỉ số x
ở độ mịn mặc định sẽ tạo ra một cái gì đó mơ hồ chính xác, nhưng quá trơn tru. y
Chỉ dự đoán từ các w
kết quả trong một mô hình "gaussian trung bình" có trongy
và không có "nhận thức" về các điểm dữ liệu khác, tất cả đều có mộtw
giá trị 0.
Model 3 sử dụng cả hai x
và w
làm mịn 1D, tạo ra một sự phù hợp tốt đẹp. Mô hình 4 sử dụng x
vàw
trong một 2D mượt mà, cũng cho một phù hợp tốt đẹp. Hai mô hình này rất giống nhau, mặc dù không giống nhau.
Mô hình 5 mô hình x
"bởi" w
. Mô hình 6 thì ngược lại.mgcv
Tài liệu của tuyên bố rằng "đối số theo đảm bảo rằng hàm trơn được nhân với [hiệp phương thức được đưa ra trong đối số 'by']". Vì vậy, mô hình 5 & 6 không nên tương đương?
Mô hình 7 và 8 sử dụng một trong các yếu tố dự đoán như một thuật ngữ tuyến tính. Chúng có ý nghĩa trực quan với tôi, vì chúng chỉ đơn giản là làm những gì GLM sẽ làm với các dự đoán này, và sau đó thêm hiệu ứng cho phần còn lại của mô hình.
Cuối cùng, Model 9 giống như Model 5, ngoại trừ x
được làm mịn "bởi" w2
(đó là w + 1
). Điều kỳ lạ với tôi ở đây là sự vắng mặt của số không trongw2
tạo ra hiệu ứng khác biệt đáng kể trong tương tác "bởi".
Vì vậy, câu hỏi của tôi là:
- Sự khác biệt giữa các thông số kỹ thuật trong Mô hình 3 và 4 là gì? Có một số ví dụ khác sẽ rút ra sự khác biệt rõ ràng hơn?
- Chính xác thì "bằng" làm gì ở đây? Phần lớn những gì tôi đã đọc trong cuốn sách của Wood và trang web này cho thấy rằng "bằng" tạo ra hiệu ứng nhân, nhưng tôi gặp khó khăn trong việc nắm bắt trực giác của nó.
- Tại sao có sự khác biệt đáng chú ý như vậy giữa Mô hình 5 và 9?
Reprex theo sau, được viết bằng R.
library(magrittr)
library(tidyverse)
library(mgcv)
set.seed(1222)
data.ex <- tibble(
x = 1:100,
w = c(rep(0, 10), 1:20, rep(0, 20), 1:20, rep(0, 30)),
w2 = w + 1,
y = dnorm(x, mean = rep(c(20, 60), each = 50), sd = 3) + (seq(0, 1, length = 100)^2) / 2 + rnorm(100, sd = 0.01)
)
models <- tibble(
model = 1:9,
formula = c('y ~ s(x)', 'y ~ s(w)', 'y ~ s(x) + s(w)', 'y ~ s(x, w)', 'y ~ s(x, by = w)', 'y ~ s(w, by = x)', 'y ~ x + s(w)', 'y ~ w + s(x)', 'y ~ s(x, by = w2)'),
gam = map(formula, function(x) gam(as.formula(x), data = data.ex)),
data.to.plot = map(gam, function(x) cbind(data.ex, predicted = predict(x)))
)
plot.models <- unnest(models, data.to.plot) %>%
mutate(facet = sprintf('%i: %s', model, formula)) %>%
ggplot(data = ., aes(x = x, y = y)) +
geom_point() +
geom_line(aes(y = predicted), color = 'red') +
facet_wrap(facets = ~facet)
print(plot.models)