<- function(don, bloc, b, nvmax, method) {
sse_regbic <- regsubsets(maxO3~., int=T, nbest=1,data=don[bloc!=b, ],
recherche nvmax=nvmax, method=method)
<- summary(recherche)
resume <- colnames(resume$which)[resume$which[which.min(resume$bic), ]][-1]
nomselec <- formula(paste("maxO3 ~", paste(nomselec, collapse = "+")))
formule <- lm(formule, data=don[bloc!=b, ])
m_reg <- predict(m_reg, don[bloc==b, ])
previsions return(sum((don[bloc==b,"maxO3"] - previsions)^2))
}
10 Comparaison des différentes méthodes, étude de cas réels
Exercice 1 (Fonctions R)
fonction
sse_regbic
:fonction
sse_glmnet
:library(glmnet) <- function(X, Y, bloc, b, a) { sse_glmnet <- cv.glmnet(X[bloc!=b, ], Y[bloc!=b, drop=FALSE], alpha=a) rech <- predict(rech, newx=X[bloc==b, ], s=rech$lambda.min) prev return(sum((Y[bloc==b, "maxO3"] - as.vector(prev))^2)) }
On obtient les résultats du test de Wald sur la nullité des paramètres \(\beta_0,\beta_2\) et \(\beta_3\).
fonction
sse_pls
:<- function(don, bloc, b, compmax) { sse_pls <- plsr(maxO3~., data=don[bloc!=b, ], ncomp=compmax, validation="CV", scale=TRUE) rech <- which.min(MSEP(rech)$val["CV", , ])-1 ncomp <- predict(rech, newdata=don[bloc==b, ], ncomp=ncomp) prev return(sum((don[bloc==b, "maxO3"] - as.vector(prev))^2)) }
fonction
sse_pls
:<- function(don, bloc, b, compmax) { sse_pcr <- pcr(maxO3~., data=don[bloc!=b, ],ncomp=compmax, validation="CV", scale=TRUE) rech <- which.min(MSEP(rech)$val["CV", , ])-1 ncomp <- predict(rech, newdata=don[bloc==b, ], ncomp=ncomp) prev return(sum((don[bloc==b, "maxO3"] - as.vector(prev))^2)) }