Ao selecionar um número apropriado de nós para um GAM, convém levar em consideração o número de dados e incrementos no eixo x.
E se tivermos 100 incrementos no eixo x com 1000 pontos de dados em cada incremento.
A informação aqui diz:
Se eles não forem fornecidos, os nós do spline serão colocados uniformemente nos valores covariáveis aos quais o termo se refere: Por exemplo, se ajustar 101 dados com um spline de 11 nós de x, haveria um nó a cada 10 (pedido) valor x.
Então, um começo básico deve ser de 9 nós neste exemplo? Apenas não tenho certeza de qual faixa de nós seria adequada para esse conjunto de dados, pois é possível ajustar números muito pequenos a muito grandes.
set.seed(1)
dat <- data.frame(y = rnorm(10000), x = 100)
library(ggplot)
ggplot(dat, aes(x = x, y = y)) +
geom_point(size= 0.5) +
stat_smooth(method = "gam",
formula = y ~ s(x, bs = "cs"),k=9, col = "black")
Se k = 25 fornecesse um ajuste útil, seria razoável para esses dados?
bs = "cs"
termo no spline faz?k
equivalente a especificark=-1
?De onde vem a ideia de que o GCV escolherá automaticamente o número de nós? O número de nós (ou seja, a dimensão base) é fixo e não pode ser alterado durante o ajuste do modelo. O que a pontuação do GCV na função gam () está fazendo "automaticamente" não é escolher a dimensão base k, como diz Ira S, mas sim escolher o nível suave de cada spline base, introduzindo uma penalidade de peruca no minimizador ou no objetivo de ajuste. Para escolher o número de nós k, você deve usar um valor maior que o número de graus de liberdade que espera. Citando a ajuda de choose.k: "a escolha exata de k geralmente não é crítica: deve ser escolhida para ser grande o suficiente para que você tenha razoavelmente certeza de ter graus de liberdade suficientes para representar a 'verdade' subjacente razoavelmente bem, mas pequena o suficiente manter razoável eficiência computacional ". Então, basicamente aumente k em grandes etapas até que você não veja alterações em seu gráfico, por exemplo. Resumindo: Não há nada como uma opção "automática" para k, como Ira S está dizendo, o usuário devesempre escolha um valor ak como parte do design do modelo. Caso contrário, você provavelmente está sub-ajustando seu modelo!
fonte