Minhas perguntas tratam de GAMs no pacote mgcv R. Devido a um pequeno tamanho de amostra, desejo determinar o erro de previsão usando a validação cruzada de exclusão única. Isso é razoável? Existe um pacote ou código como eu posso fazer isso? A errorest()
função no pacote ipred não funciona. Um conjunto de dados de teste simples é:
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")
Muito obrigado pela sua ajuda!
r
cross-validation
gam
mgcv
Peter
fonte
fonte
Respostas:
Eu realmente gosto do pacote
caret
para coisas como esta, mas infelizmente eu só li que você não pode especificar oformula
emgam
exatamente por isso."Quando você usa o train com este modelo, não é possível (no momento) especificar a fórmula gam. Caret possui uma função interna que descobre uma fórmula com base em quantos níveis únicos cada preditor possui etc. Em outras palavras, o train atualmente determina quais os termos são suavizados e são simples efeitos principais lineares antigos ".
fonte: /programming/20044014/error-with-train-from-caret-package-using-method-gam
mas se você
train
selecionar os termos suaves, nesse caso, ele produzirá seu modelo exatamente de qualquer maneira. A métrica de desempenho padrão nesse caso é RMSE, mas você pode alterá-la usando osummaryFunction
argumento datrainControl
função.Eu acho que uma das principais desvantagens do LOOCV é que, quando o conjunto de dados é grande, leva uma eternidade. Como seu conjunto de dados é pequeno e funciona muito rápido, acho que é uma opção sensata.
Espero que isto ajude.
resultado:
fonte
No pdf da biblioteca mgcv está escrito;
"Dada uma estrutura de modelo especificada por uma fórmula de modelo gam, gam () tenta encontrar a suavidade apropriada para cada termo de modelo aplicável usando critérios de erro de previsão ou métodos baseados em probabilidade. Os critérios de erro de previsão usados são Validação Cruzada Generalizada (Aproximada) (GCV ou GACV) quando o parâmetro de escala for desconhecido ou um estimador de risco imparcial (UBRE) quando for conhecido. "
"gam em mgcv resolve o problema de estimativa de parâmetros de suavização usando o critério Generalized Cross Validation (GCV): nD / (n - DoF) 2
ou
um critério do Estimador de risco não tendencioso (UBRE): D / n + 2sDoF / n - s "
fonte