Aku benar-benar seperti paket caret
untuk hal-hal seperti ini, tapi sayangnya saya baru saja membaca bahwa Anda tidak dapat menentukan formula
di gam
persis untuk itu.
"Ketika Anda menggunakan kereta dengan model ini, Anda tidak dapat (saat ini) menentukan formula gam. Caret memiliki fungsi internal yang menentukan formula berdasarkan pada berapa level unik yang dimiliki masing-masing prediktor, dll. Dengan kata lain, kereta saat ini menentukan istilah dihaluskan dan yang merupakan efek utama linear lama biasa. "
sumber: /programming/20044014/error-with-train-from-caret-package-using-method-gam
tetapi jika Anda membiarkan train
memilih istilah yang halus, dalam hal ini menghasilkan model Anda persis. Metrik kinerja default dalam kasus ini adalah RMSE, tetapi Anda dapat mengubahnya menggunakan summaryFunction
argumen trainControl
fungsi.
Saya pikir salah satu kelemahan utama dari LOOCV adalah bahwa ketika dataset besar, dibutuhkan selamanya. Karena dataset Anda kecil dan berfungsi cukup cepat, saya pikir itu adalah pilihan yang masuk akal.
Semoga ini membantu.
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)
keluaran:
> 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