Validité d'un model.avg

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

melanie marteau
Messages : 12
Enregistré le : 16 Aoû 2011, 21:25

Validité d'un model.avg

Messagepar melanie marteau » 14 Fév 2014, 11:23

Bonjour,

J'aimerais savoir comment on teste la validité d'un modèle lorsque celui-ci est un modèle obtenu via la model-averaging methode.

Le code R

Code : Tout sélectionner

> model<- lm(sqrtCapt ~ Soil + Canopy + TreeAge + NestHeight + NestSpecies + WoodDiversity + Woodland + BoxSize, data=data)
> stdz<-standardize(model, standardize.y=FALSE)
> model.set<-dredge(stdz, rank="AICc")
> top.models<-get.models(model.set, subset=delta<2)
> a<-model.avg(top.models)
> summary(a)

Call:
model.avg.default(object = top.models)

Component models:
       df logLik   AICc Delta Weight
12456   7 -68.75 154.16  0.00   0.37
12356   7 -69.09 154.85  0.69   0.26
1256    6 -70.67 155.28  1.12   0.21
123456  8 -68.22 155.95  1.79   0.15

Term codes:
      c.BoxSize    z.NestHeight          z.Soil       z.TreeAge z.WoodDiversity
              1               2               3               4               5
     z.Woodland
              6

Model-averaged coefficients:
                Estimate Std. Error Adjusted SE z value Pr(>|z|)   
(Intercept)       1.8017     0.1454      0.1495  12.051  < 2e-16 ***
c.BoxSize        -1.1954     0.3105      0.3189   3.749 0.000178 ***
z.NestHeight      1.4273     0.6823      0.6954   2.052 0.040128 * 
z.TreeAge        -1.1041     0.6758      0.6943   1.590 0.111779   
z.WoodDiversity   0.9806     0.3258      0.3341   2.935 0.003335 **
z.Woodland       -1.5247     0.4057      0.4168   3.658 0.000254 ***
z.Soil           -0.5842     0.4334      0.4448   1.313 0.189069   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Full model-averaged coefficients (with shrinkage):
 (Intercept) c.BoxSize z.NestHeight z.TreeAge z.WoodDiversity z.Woodland   z.Soil
     1.80168  -1.19536      1.42730  -0.57863         0.98058   -1.52472 -0.24298

Relative variable importance:
      c.BoxSize    z.NestHeight z.WoodDiversity      z.Woodland       z.TreeAge
           1.00            1.00            1.00            1.00            0.52
         z.Soil
           0.42
> confint(a)
                      2.5 %     97.5 %
(Intercept)      1.50866330  2.0947046
c.BoxSize       -1.82033273 -0.5703782
z.NestHeight     0.06430498  2.7902913
z.TreeAge       -2.46484364  0.2566863
z.WoodDiversity  0.32577039  1.6353915
z.Woodland      -2.34155102 -0.7078793
z.Soil          -1.45600859  0.2876278


D'habitude j'utilise la fonction plotresid() pour tester la normalité des residus du modèle mais elle ne fonctionne pas ici. Idem pour qqnorm(). Probablement du fait que c'est un model.avg.


Code : Tout sélectionner

> plotresid(a, shapiro=TRUE)
Erreur dans plotresid(a, shapiro = TRUE) : model not recognized
> qqnorm(a)
Erreur dans min(x, na.rm = na.rm) : 'type' (list) de l'argument incorrect


Existe-t-il des tests permettant de validé ce type de model.avg et nottament de tester la normalité des résidus sous R ?

Merci
Cordialement

Mélanie

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 15 Fév 2014, 08:45

Merci de préciser l'origine (package) des fonctions que vous utilisez, et de fournir des exemples reproductibles.

Avec le jeu de données Cement disponible dans le package MuMin:

Code : Tout sélectionner

library(MuMIn)
data(Cement)
fm  <- lm(y ~ ., data = Cement, na.action = na.fail)
dfm <- dredge(fm)
afm <- model.avg(dfm, cumsum(weight) <= .95, fit = TRUE)
res <- Cement$y - fitted(afm)
qqnorm(res)
shapiro.test(res)
Renaud

melanie marteau
Messages : 12
Enregistré le : 16 Aoû 2011, 21:25

Messagepar melanie marteau » 15 Fév 2014, 14:19

Oups, désolé d'avoir oublié ces quelques précisions.

En tout cas, merci beaucoup, ça marche impecable.

melanie marteau
Messages : 12
Enregistré le : 16 Aoû 2011, 21:25

Messagepar melanie marteau » 24 Fév 2014, 10:39

J'ai encore une petite question à ce sujet.

Cette fois, c'est pour un modèle binomiale négatif dont je souhaite également utiliser la méthode du model-averaging.

Je suppose que la formule que tu as utilisé doit changer compte tenu des caractérisques de ce type de modèle mais je n'arrive pas à trouver comment.

Comme exemple, il y a le jeu de données (quine) du package MASS

Code : Tout sélectionner

> library(MuMIn)
> library(MASS)
> data(quine)
> q <- glm.nb(Days ~ ., data = quine)
> dfm<-dredge(q)
> afm <- model.avg(dfm, cumsum(weight) <= .95, fit = TRUE)



Donc même question, comment on peut vérifier que l'on peut bien utiliser les résultats du model "afm" ici.

Merci
Mélanie

Nicolas Péru
Messages : 1408
Enregistré le : 07 Aoû 2006, 08:13

Messagepar Nicolas Péru » 24 Fév 2014, 12:18

Bonjour,

Le principe reste le même. Ce qui change c'est le calcul de la log-vraisemblance, pas le processus de sélection de modèle utilisé par MuMIn. Pour comprendre, lire le livre de Burnham & Anderson où ce genre de question est évoqué en détail.

On sort ici des objectifs du forum. Si tu veux des explications, tu devrais poser la question sur un forum dédié aux stats.

Bonne continuation

Nicolas


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité