Para la obtención de los parÔmetros en modelos gamlss estÔn disponibles tres algoritmos:
Vamos a ajustar el mismo modelo para explicar la media \(\mu\) y la desviación \(\sigma\) de la variable y en función de x usando un modelo cuadrÔtico. Lo primero es cargar el paquete y disponer de los datos.
library(gamlss)
data(abdom)
with(abdom, plot(x=x, y=y, las=1))
A continuación vamos a ajustar tres modelos que solo difieren en el algoritmo o método.
m1 <- gamlss(y ~ x + I(x^2), sigma.fo= ~x + I(x^2),
family=NO, data=abdom)
## GAMLSS-RS iteration 1: Global Deviance = 4793.639
## GAMLSS-RS iteration 2: Global Deviance = 4792.8
## GAMLSS-RS iteration 3: Global Deviance = 4792.8
m2 <- gamlss(y ~ x + I(x^2), sigma.fo= ~x + I(x^2),
family=NO, data=abdom, method=CG())
## GAMLSS-CG iteration 1: Global Deviance = 6166.027
## GAMLSS-CG iteration 2: Global Deviance = 5635.653
## GAMLSS-CG iteration 3: Global Deviance = 5208.609
## GAMLSS-CG iteration 4: Global Deviance = 4942.862
## GAMLSS-CG iteration 5: Global Deviance = 4827.348
## GAMLSS-CG iteration 6: Global Deviance = 4795.882
## GAMLSS-CG iteration 7: Global Deviance = 4792.856
## GAMLSS-CG iteration 8: Global Deviance = 4792.801
## GAMLSS-CG iteration 9: Global Deviance = 4792.8
## GAMLSS-CG iteration 10: Global Deviance = 4792.8
m3 <- gamlss(y ~ x + I(x^2), sigma.fo= ~x + I(x^2),
family=NO, data=abdom, method=mixed(2, 20))
## GAMLSS-RS iteration 1: Global Deviance = 4793.639
## GAMLSS-RS iteration 2: Global Deviance = 4792.8
## GAMLSS-CG iteration 1: Global Deviance = 4792.8
De los resultados anteriores vemos que m1 converge en 3 iteraciones, que m2 demora hasta la iteración 10 para la convergencia y que m3 convege también rÔpido porque inicia con 2 iteraciones de RS y luego se mejoran las estimaciones con una iteración de CG.
Para extraer y comparar los coeficientes de los modelos vamos a crear la siguiente función.
my_coefs <- function(mod, digits=6) {
res <- c(coef(mod, what="mu"), coef(mod, what="sigma"))
return(round(res, digits=digits))
}
Ahora hacemos la comparación asĆ:
cbind(my_coefs(m1), my_coefs(m2), my_coefs(m3))
## [,1] [,2] [,3]
## (Intercept) -96.922008 -96.915642 -96.922008
## x 13.672570 13.671991 13.672570
## I(x^2) -0.060315 -0.060303 -0.060315
## (Intercept) 1.403001 1.403485 1.402300
## x 0.038545 0.038506 0.038603
## I(x^2) 0.000068 0.000069 0.000067
De la salida anterior vemos que los coeficientes estimados estƔn muy cercanos.