Me gusta mucho el paquete caret
por cosas como esta, pero por desgracia acabo de leer que no se puede especificar el formula
en gam
exactamente.
"Cuando el uso de trenes con este modelo, no se puede (en este momento) especificar el gam fórmula. símbolo de intercalación tiene una función interna que da cuenta de una fórmula que se basa en cuántos niveles únicos, cada predictor tiene etc. En otras palabras, tren actualmente determina qué términos se suavizan y que son el viejo y simple lineal de efectos principales."
fuente: http://stackoverflow.com/questions/20044014/error-with-train-from-caret-package-using-method-gam
pero si dejas train
seleccione el suave términos, en este caso se produce su modelo exactamente de todos modos. El valor predeterminado de las métricas de rendimiento en este caso es RMSE, pero se puede cambiar el uso de la summaryFunction
argumento de la trainControl
función.
Creo que uno de los principales inconvenientes de la LOOCV es que cuando el conjunto de datos es grande, se tarda una eternidad. Desde el conjunto de datos es pequeño y funciona bastante rápido, creo que es una opción sensata.
Espero que esto ayude.
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)
salida:
> 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