Ich mag das Paket caret
für Dinge wie diese aber leider Ich habe gerade gelesen , dass Sie nicht die angeben können , formula
in gam
genau dafür.
"Wenn Sie Zug mit diesem Modell verwenden, können Sie (zu diesem Zeitpunkt) die Spielformel nicht angeben. Caret verfügt über eine interne Funktion, die eine Formel basierend auf der Anzahl der eindeutigen Ebenen jedes Prädiktors usw. ermittelt. Mit anderen Worten, Zug bestimmt derzeit, welche Begriffe werden geglättet und sind einfache alte lineare Haupteffekte. "
Quelle: /programming/20044014/error-with-train-from-caret-package-using-method-gam
Wenn Sie jedoch train
die glatten Begriffe auswählen lassen , wird in diesem Fall Ihr Modell trotzdem genau erstellt. Die Standardleistungsmetrik ist in diesem Fall RMSE. Sie können sie jedoch mithilfe des summaryFunction
Arguments der trainControl
Funktion ändern .
Ich denke, einer der Hauptnachteile von LOOCV ist, dass es ewig dauert, wenn der Datensatz groß ist. Da Ihr Datensatz klein ist und recht schnell funktioniert, halte ich ihn für eine sinnvolle Option.
Hoffe das hilft.
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)
Ausgabe:
> 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