Cách chọn loại tham số GAM


9

Tôi đã bắt đầu làm việc với GAM in R và tôi đã có được cuốn sách tuyệt vời của Simon Wood về chủ đề này ( "Các mô hình phụ gia tổng quát Giới thiệu với R" ). Dựa trên một trong những ví dụ của anh ấy, tôi đang xem xét những điều sau đây:

library(mgcv)
data(trees)
ct1<-gam(log(Volume) ~ Height + s(Girth), data=trees)

Tôi có hai câu hỏi chung cho ví dụ này:

  1. Làm thế nào để một người quyết định khi một biến trong ước lượng mô hình nên là tham số (chẳng hạn như Chiều cao) hoặc khi nào nó phải trơn tru (chẳng hạn như Girth)? Có ai nắm giữ lợi thế so với người kia không và có cách nào để xác định loại tối ưu cho biến là gì không? Nếu bất cứ ai có bất kỳ tài liệu về chủ đề này, tôi rất vui khi biết về nó.

  2. Nói rằng tôi muốn nhìn gần hơn về trọng lượng của ct1: ct1$coefficients. Tôi có thể sử dụng chúng làm sản gamphẩm đầu ra cho chúng hay tôi phải chuyển đổi chúng trước khi phân tích chúng nếu tôi phù hợp log(Volume)? Trong trường hợp sau này, tôi đoán tôi sẽ phải sử dụngexp (ct1$coefficients)


2
Nếu bạn mong đợi một mối quan hệ tham số cụ thể từ lý thuyết khoa học, hãy sử dụng nó như một mô hình nếu không thì sử dụng mô hình phi tham số. Lưu ý rằng mgcv có thể thu nhỏ các chất làm mịn thành mối quan hệ tuyến tính hoặc thậm chí không đổi.
Roland

1
Không, bạn không lũy ​​thừa các hệ số. log (y) = a + bx -> y = exp (a) * exp (x) ^ b
Roland

Câu trả lời:


9

Tôi cho rằng điều này được giải thích rõ hơn trong ấn bản thứ 2 của cuốn sách Simon (sẽ ra trong vài ngày) vì ông và các sinh viên của mình chỉ tìm ra một số lý thuyết trong năm nay sau khi Simon viết cuốn sách của mình.

Những gì Marra & Wood (2011) đã chỉ ra là nếu chúng ta muốn lựa chọn một mô hình với các điều khoản trơn tru, thì một cách tiếp cận rất tốt là thêm một hình phạt bổ sung cho tất cả các điều khoản trơn tru. Hình phạt bổ sung này hoạt động với hình phạt thông suốt cho thuật ngữ đó để kiểm soát cả tính linh hoạt của thuật ngữ và liệu một thuật ngữ có nên có trong mô hình hay không.

Vì vậy, trừ khi bạn có bất kỳ lý thuyết tốt nào để giả sử các dạng / hiệu ứng trơn tru hoặc tuyến tính / tham số cho các hiệp phương sai, bạn có thể tiếp cận vấn đề khi chọn trong số tất cả các mô hình (có thể biểu thị bằng sự kết hợp cộng gộp của các hàm cơ bản) giữa một với làm trơn tru từng đồng biến trở lại một mô hình chỉ chứa một phần chặn.

Ví dụ:

library(mgcv)
data(trees)
ct1 <- gam(log(Volume) ~ s(Height) + s(Girth), data=trees, method = "REML", select = TRUE)

> summary(ct1)

Family: gaussian 
Link function: identity 

Formula:
log(Volume) ~ s(Height) + s(Girth)

Parametric coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  3.27273    0.01492   219.3   <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(Height) 0.967      9  3.249 3.51e-06 ***
s(Girth)  2.725      9 75.470  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

R-sq.(adj) =  0.975   Deviance explained = 97.8%
-REML = -23.681  Scale est. = 0.0069012  n = 31

Nhìn vào đầu ra (cụ thể trong phần Hệ số tham số ), chúng tôi lưu ý rằng cả hai thuật ngữ đều có ý nghĩa cao. Nhưng lưu ý mức độ hiệu quả của giá trị tự do cho sự trơn tru của Height; nó là ~ 1. Những gì các bài kiểm tra này đang làm được giải thích trong Wood (2013).

Điều này gợi ý cho tôi rằng Heightnên nhập mô hình như một thuật ngữ tham số tuyến tính. Chúng ta có thể đánh giá điều này bằng cách vẽ đồ thị trơn tru:

> plot(ct1, select = 1, shade = TRUE, scale = 0, seWithMean = TRUE)

cung cấp cho:

Được trang bị mịn

Điều này rõ ràng cho thấy hình thức được lựa chọn của hiệu ứng Heightlà tuyến tính.

Tuy nhiên, nếu bạn không biết trả trước này (và bạn đã không biết vì nếu không bạn sẽ không đặt câu hỏi) thì bây giờ bạn không thể chỉnh lại mô hình cho những dữ liệu này chỉ bằng một thuật ngữ tuyến tính Height. Điều đó sẽ gây ra cho bạn những vấn đề thực sự với suy luận xuống dòng. Đầu ra trong summary()đã tính đến thực tế là bạn đã thực hiện lựa chọn này. Nếu bạn chỉnh lại mô hình với hiệu ứng tham số tuyến tính là Height, đầu ra sẽ không biết điều này và bạn sẽ nhận được các giá trị p quá lạc quan.

Đối với câu hỏi 2, như đã đề cập trong các ý kiến, không, không lũy ​​thừa các hệ số từ mô hình này. Ngoài ra, không đi sâu vào các mô hình được trang bị vì nội dung của các thành phần này không phải lúc nào cũng như bạn mong đợi. Sử dụng các chức năng trích xuất thay thế; trong trường hợp này coef().

Sau đó trong cuốn sách khi Simon đến GLM và GAM, bạn sẽ thấy anh ta mô hình hóa những dữ liệu này thông qua Gamma GLM:

ct1 <- gam(Volume ~ Height + s(Girth), data=trees, method = "REML",
           family = Gamma(link = "log"))

Trong mô hình đó, vì việc lắp được thực hiện theo thang đo của bộ dự báo tuyến tính (trên thang đo log), các hệ số có thể được lũy thừa để có được một số hiệu ứng một phần, nhưng tốt hơn hết bạn nên sử dụng predict(ct1, ...., type = "response")để lấy lại các giá trị / dự đoán được trang bị trên thang đo của phản ứng (tính bằng m ^ 3).


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).

Gỗ, SN Trên giá trị p cho các thành phần trơn tru của mô hình phụ gia tổng quát mở rộng. Biometrika 100, 221 Từ228 (2013).


Khi bạn nói "bây giờ bạn không thể chỉnh lại mô hình cho những dữ liệu này bằng cách chỉ sử dụng thuật ngữ tuyến tính cho Chiều cao", điều đó có liên quan đến các vấn đề suy luận. Điều gì nếu bạn chủ yếu quan tâm đến dự đoán? Liệu nó có ý nghĩa để sử dụng một thuật ngữ tuyến tính trong trường hợp đó cho lý do tính toán?
TAS

1
@TAS có, nếu bạn chỉ muốn dự đoán, bạn có thể chỉ cần chỉnh lại dưới dạng mô hình tuyến tính. Tôi nên nói thêm rằng nếu bạn đã thêm hình phạt bổ sung, thì về mặt kỹ thuật, mô hình sẽ không giống với mô hình tuyến tính vì thuật ngữ tuyến tính đã bị phạt / thu hẹp trong GAM.
Gavin Simpson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.