Xác thực chéo GAM để kiểm tra lỗi dự đoán


10

Câu hỏi của tôi liên quan đến GAM trong gói mgcv R. Do kích thước mẫu nhỏ, tôi muốn xác định lỗi dự đoán bằng cách sử dụng xác thực chéo một lần. Điều này có hợp lý không? Có một gói hoặc mã làm thế nào tôi có thể làm điều này? Các errorest()chức năng trong ipred gói không hoạt động. Một bộ dữ liệu thử nghiệm đơn giản là:

library(mgcv)
set.seed(0)
dat <- gamSim(1,n=400,dist="normal",scale=2)
b<-gam(y~s(x0)+s(x1)+s(x2)+s(x3),data=dat)
summary(b)
pred <- predict(b, type="response")

Cảm ơn bạn rất nhiều vì bàn tay giúp đỡ của bạn!


Bạn có thể xem chức năng CVgam bên trong-r.org/packages/cran/gamgroup/docs/CVgam Tôi hy vọng điều này có thể giúp
user051514

Câu trả lời:


3

Tôi thực sự thích các gói caretcho những thứ như thế này nhưng tiếc là tôi chỉ đọc mà bạn không thể xác định formulatrong gamchính xác cho nó.

"Khi bạn sử dụng tàu với mô hình này, bạn không thể (tại thời điểm này) chỉ định công thức gam. Caret có chức năng bên trong chỉ ra một công thức dựa trên số lượng cấp độ duy nhất mà mỗi người dự đoán có. Nói cách khác, đào tạo hiện đang xác định các thuật ngữ được làm mịn và đó là các hiệu ứng chính tuyến tính cũ đơn giản. "

nguồn: /programming/20044014/error-with-train-from-caret-package-USE-method-gam

nhưng nếu bạn để trainchọn các thuật ngữ trơn tru, trong trường hợp này nó sẽ tạo ra mô hình của bạn chính xác. Số liệu hiệu suất mặc định trong trường hợp này là RMSE, nhưng bạn có thể thay đổi nó bằng cách sử dụng summaryFunctionđối số của trainControlhàm.

Tôi nghĩ một trong những nhược điểm chính của LOOCV là khi bộ dữ liệu lớn, nó sẽ mất mãi mãi. Vì tập dữ liệu của bạn nhỏ và nó hoạt động khá nhanh, tôi nghĩ đó là một lựa chọn hợp lý.

Hi vọng điêu nay co ich.

library(mgcv)
library(caret)

set.seed(0)

dat <- gamSim(1, n = 400, dist = "normal", scale = 2)

b <- train(y ~ x0 + x1 + x2 + x3, 
        data = dat,
        method = "gam",
        trControl = trainControl(method = "LOOCV", number = 1, repeats = 1),
        tuneGrid = data.frame(method = "GCV.Cp", select = FALSE)
)

print(b)
summary(b$finalModel)

đầu ra:

> print(b)
Generalized Additive Model using Splines 

400 samples
  9 predictors

No pre-processing
Resampling: 

Summary of sample sizes: 399, 399, 399, 399, 399, 399, ... 

Resampling results

  RMSE      Rsquared 
  2.157964  0.7091647

Tuning parameter 'select' was held constant at a value of FALSE

Tuning parameter 'method' was held constant at a value of GCV.Cp

> summary(b$finalModel)

Family: gaussian 
Link function: identity 

Formula:
.outcome ~ s(x0) + s(x1) + s(x2) + s(x3)

Parametric coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   7.9150     0.1049   75.44   <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(x0) 5.173  6.287   4.564 0.000139 ***
s(x1) 2.357  2.927 103.089  < 2e-16 ***
s(x2) 8.517  8.931  84.308  < 2e-16 ***
s(x3) 1.000  1.000   0.441 0.506929    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

R-sq.(adj) =  0.726   Deviance explained = 73.7%
GCV =  4.611  Scale est. = 4.4029    n = 400

0

Trong thư viện mgcv pdf nó nói;

"Đưa ra cấu trúc mô hình được chỉ định bởi công thức mô hình gam, gam () cố gắng tìm độ mịn phù hợp cho từng thuật ngữ mô hình áp dụng bằng cách sử dụng tiêu chí lỗi dự đoán hoặc phương pháp dựa trên khả năng. Tiêu chí lỗi dự đoán được sử dụng là Xác thực chéo (Xấp xỉ) (GCV hoặc GACV) khi tham số tỷ lệ không xác định hoặc Công cụ ước tính rủi ro không thiên vị (UBRE) khi được biết đến. "

"Gam trong mgcv giải quyết vấn đề ước tính tham số làm mịn bằng cách sử dụng tiêu chí Xác thực chéo tổng quát (GCV): nD / (n - DoF) 2

hoặc là

một tiêu chí của Công cụ ước tính rủi ro không thiên vị (UBRE): D / n + 2sDoF / n - s "

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.