Đầu ra từ anova()
là một loạt các thử nghiệm tỷ lệ khả năng. Các dòng trong đầu ra là:
- Dòng đầu tiên trong đầu ra tương ứng với mô hình đơn giản nhất chỉ bằng một số
x1
(tôi bỏ qua yếu tố này x0
vì nó không được xem xét trong ví dụ của bạn) - điều này không được kiểm tra đối với bất kỳ điều gì đơn giản hơn do đó một vài mục nhập cột cuối cùng là trống.
Dòng thứ hai là phép thử tỷ lệ khả năng giữa mô hình ở dòng 1 và mô hình ở dòng 2. Với chi phí 0.97695
thêm độ tự do, độ lệch còn lại được giảm đi 1180.2
. Việc giảm độ lệch này (hoặc ngược lại, tăng độ lệch được giải thích), với chi phí <1 độ tự do, rất khó xảy ra nếu hiệu quả thực sự x2
là 0.
Tại sao 0.97695
mức độ tự do tăng? Chà, hàm tuyến tính x2
sẽ thêm 1 df vào mô hình nhưng mượt mà hơn x1
sẽ bị phạt trở lại một chút so với trước đây và do đó sử dụng mức độ tự do hiệu quả ít hơn một chút, do đó <1 thay đổi về mức độ tự do tổng thể.
- Dòng thứ ba hoàn toàn giống như tôi đã mô tả ở trên nhưng để so sánh giữa mô hình ở dòng thứ hai và mô hình ở dòng thứ ba: tức là dòng thứ ba đang đánh giá sự cải thiện trong việc chuyển từ mô hình hóa
x2
thành thuật ngữ tuyến tính sang mô hình hóa x2
như một Chức năng mịn. Một lần nữa, sự cải thiện về mức độ phù hợp của mô hình (thay đổi độ lệch hiện 2211.8
tại phải trả giá bằng 7.37288
nhiều mức độ tự do hơn) là không thể nếu các tham số bổ sung liên quan đến s(x2)
đều bằng 0.
Tóm lại, dòng 2 cho biết Mô hình 2 phù hợp hơn Mô hình 1, do đó, hàm tuyến tính x2
tốt hơn không có tác dụng x1
. Nhưng dòng 3 nói rằng Mô hình 3 phù hợp với dữ liệu tốt hơn Mô hình 2, do đó, chức năng trơn tru x2
được ưu tiên hơn chức năng tuyến tính của x2
. Đây là một phân tích tuần tự của các mô hình, không phải là một loạt các so sánh so với mô hình đơn giản nhất.
Tuy nhiên…
Những gì họ đang trình bày không phải là cách tốt nhất để làm điều này - lý thuyết gần đây sẽ gợi ý rằng đầu ra từ summary(m3)
sẽ có các thuộc tính bảo hiểm "chính xác" nhất. Hơn nữa, để chọn giữa các mô hình, có lẽ nên sử dụng select = TRUE
khi khớp mô hình đầy đủ (mô hình có hai độ mịn), cho phép thu hẹp các thuật ngữ sẽ bao gồm mô hình với tuyến tính x2
hoặc thậm chí không có tác dụng của biến này. Chúng cũng không phù hợp bằng cách sử dụng lựa chọn độ mịn của REML hoặc ML, điều mà nhiều người dùng mgcv của chúng tôi sẽ xem xét tùy chọn mặc định (mặc dù đó không phải là mặc định thực tế trong gam()
)
Những gì tôi sẽ làm là:
library("mgcv")
gam_data <- gamSim(eg=5)
m3 <- gam(y ~ x0 + s(x1) + s(x2), data = gam_data, select = TRUE,
method = "REML")
summary(m3)
Dòng cuối cùng tạo ra như sau:
> summary(m3)
Family: gaussian
Link function: identity
Formula:
y ~ x0 + s(x1) + s(x2)
Parametric coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.4097 0.2153 39.053 < 2e-16 ***
x02 1.9311 0.3073 6.284 8.93e-10 ***
x03 4.4241 0.3052 14.493 < 2e-16 ***
x04 5.7639 0.3042 18.948 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Approximate significance of smooth terms:
edf Ref.df F p-value
s(x1) 2.487 9 25.85 <2e-16 ***
s(x2) 7.627 9 76.03 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
R-sq.(adj) = 0.769 Deviance explained = 77.7%
-REML = 892.61 Scale est. = 4.5057 n = 400
Chúng ta có thể thấy rằng cả hai thuật ngữ trơn tru đều khác biệt đáng kể so với các hàm null.
Những gì select = TRUE
đang làm là đặt thêm một hình phạt vào khoảng trống của hình phạt (đây là một phần của spline hoàn toàn trơn tru). Nếu bạn không có điều này, lựa chọn độ mịn chỉ có thể xử phạt trở lại trơn tru đối với hàm tuyến tính (vì hình phạt thực hiện lựa chọn độ mịn chỉ hoạt động trên các phần không trơn tru (phần uốn lượn) của cơ sở). Để thực hiện lựa chọn, chúng ta cần phải có khả năng xử phạt không gian rỗng (phần trơn tru của cơ sở).
select = TRUE
đạt được điều này thông qua việc sử dụng hình phạt thứ hai được thêm vào tất cả các điều khoản trơn tru trong mô hình (Marra và Wood, 2011). Điều này hoạt động như một loại co rút, kéo tất cả các thuật ngữ trơn tru về 0, nhưng nó sẽ kéo các thuật ngữ thừa về 0 nhanh hơn nhiều, do đó chọn chúng ra khỏi mô hình nếu chúng không có bất kỳ khả năng giải thích nào. Chúng tôi trả giá cho điều này khi đánh giá tầm quan trọng của sự trơn tru; lưu ý Ref.df
cột ở trên (9 xuất phát từ giá trị mặc định của k = 10
, đối với các spline tấm mỏng có ràng buộc định tâm có nghĩa là 9 hàm cơ bản), thay vì trả một số thứ như 2,5 và 7,7 độ tự do cho các spline, chúng tôi đang trả 9 độ Tự do mỗi. Điều này phản ánh thực tế rằng chúng tôi đã thực hiện lựa chọn, rằng chúng tôi không chắc chắn nên sử dụng thuật ngữ nào trong mô hình.
Lưu ý: điều quan trọng là bạn không sử dụng anova(m1, m2, m3)
các cuộc gọi loại trên các mô hình bằng cách sử dụng select = TRUE
. Như đã lưu ý ?mgcv:::anova.gam
, phép tính gần đúng được sử dụng có thể rất tệ đối với việc làm mịn với các hình phạt trên khoảng trống null của chúng.
Trong các bình luận, @BillyJean đã đề cập đến việc sử dụng AIC để lựa chọn. Công trình gần đây của Simon Wood và các đồng nghiệp (Wood et al, 2016) đã đưa ra một AIC chiếm tỷ lệ không chắc chắn thêm do chúng tôi đã ước tính các thông số độ mịn trong mô hình. AIC này hoạt động khá tốt, nhưng có một số thảo luận về hành vi của việc tạo ra AIC của chúng khi các độ mịn của IIRC gần với các hàm tuyến tính. Dù sao, AIC sẽ cung cấp cho chúng tôi:
m1 <- gam(y ~ x0 + s(x1), data = gam_data, method = "ML")
m2 <- gam(y ~ x0 + s(x1) + x2, data = gam_data, method = "ML")
m3 <- gam(y ~ x0 + s(x1) + s(x2), data = gam_data, method = "ML")
AIC(m1, m2, m3)
> AIC(m1, m2, m3)
df AIC
m1 7.307712 2149.046
m2 8.608444 2055.651
m3 16.589330 1756.890
Lưu ý Tôi đã chỉnh lại tất cả những điều này với lựa chọn độ mịn ML vì tôi không chắc AIC sẽ làm gì khi nào select = TRUE
và bạn phải cẩn thận so sánh các mô hình với các hiệu ứng cố định khác nhau, không bị phạt hoàn toàn, sử dụng REML.
Một lần nữa suy luận là rõ ràng; mô hình với độ mịn x1
và x2
phù hợp hơn đáng kể so với một trong hai mô hình còn lại.
Marra, G. & Wood, SN Lựa chọn biến thực tế cho các mô hình phụ gia tổng quát. Tính toán. Thống kê Dữ liệu hậu môn. 55, 2372 Vang2387 (2011).
Wood, SN, Pya, N. & Säfken, B. Thông số làm mịn và lựa chọn mô hình cho các mô hình mịn chung. Mứt. Thống kê PGS. 111, 1548 bóng1563 (2016).
s
xác định hàm . (. Tôi đoán đó là một số loại spline, nhưng tôi miễn cưỡng để cho bất kỳ nhiều hơn thế) Chúng ta có thể nói từ đầu ra rằng nó khá phức tạp - di chuyển từx2
đểs(x2)
thêm bậc tự do - nhưng đó là tất cả chúng ta có thể xác định về nó từ đầu ra này.