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