Warning avec glm et predict

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

Djebali Makrem
Messages : 21
Enregistré le : 11 Mai 2007, 21:12

Warning avec glm et predict

Messagepar Djebali Makrem » 21 Juin 2007, 10:48

Bonjour
J’ai des messages d’erreur avec les deux fonctions glm et predict et j’ai aussi des mauvais résultats est ce que c’est à cause de ça ?

Code : Tout sélectionner

> test<-read.table("testimag.txt",header=T)##données
> test<-as.data.frame(test)
> tr <- sample(1:264, 186)
> train <-test[tr,]
> app <-test[-tr,]
> fm <-glm(fmla, family=binomial, data=train)
Warning message:
algorithm did not converge in: glm.fit(x = X, y = Y, weights = weights, start = start, etastart = etastart, 
> New <-data.frame(app)# à remplacer  par lastvect
> pred <-predict(fm, New, type="response",se.fit=T)
Warning message:
prediction from a rank-deficient fit may be misleading in: predict.lm(object, newdata, se.fit, scale = residual.scale, type = ifelse(type == 

Merci.

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 21 Juin 2007, 11:23

Bonjour,


Ton message d'erreur t'indique que ton modèle n'a pas réussi à converger, ce qui n'est pas bon du tout. Ca veut dire que tu n'arrvives pas à estimer tes paramètres. Il n'est donc pas anormal que tu obtiennes de mauvais résultats. Tu peux aussi jouer sur le nombre maximal d'itération que tu permets, ainsi que sur le epsilon (décimale à laquelle tu considères les paramètres comme stable) avec la fonction glm.control. Par défaut le nombre max d'itération est de 25, donc si déjà la tu ne converges pas c pas terrible. Si je me souviens bien le epsilon par défaut dans R est de 1e-8 alors que dans S+ il est de 1e-4.

Maxime

Djebali Makrem
Messages : 21
Enregistré le : 11 Mai 2007, 21:12

Messagepar Djebali Makrem » 21 Juin 2007, 12:45

ok j'ai utilser:

Code : Tout sélectionner

glm.control(epsilon = 1e-4, maxit = 1000000, trace = FALSE)

et je n'ai plus de problème, mais encore le m^me message d'erreur avec predict :
Warning message:
prediction from a rank-deficient fit may be misleading in: predict.lm(object, newdata, se.fit, scale = residual.scale, type = ifelse(type ==

Merci.

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

Messagepar Nicolas Péru » 21 Juin 2007, 13:37

Code : Tout sélectionner

fm <-glm(fmla, family=binomial, data=train)


alors je n'utilise vraiment pas souvent la fonction glm mais je trouve bizarre le script. C'est quoi fmla ? Ne faut il pas une formule dans la fonction glm ?

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 21 Juin 2007, 13:50

Re,

Juste pour exemple Nico :

Code : Tout sélectionner

x <- rnorm(100)
y <- 3*x+2+rnorm(100,0,0.4)
fmla <- y~x
tab <- as.data.frame(list(y=y,x=x))
rm(list=c("x","y"))
glm(fmla,data=tab)

Call:  glm(formula = fmla, data = tab)

Coefficients:
(Intercept)            x 
      2.017        2.990 

Degrees of Freedom: 99 Total (i.e. Null);  98 Residual
Null Deviance:      967.4
Residual Deviance: 16.19        AIC: 107.7


Ce qui peut être très interressant surtout si tu fais des glm en série (j'en sais quelque chose), avec une combinaison de eval(parse(text=paste(...))) c'est vite assez sympa. Je pense qu'ici le problème ne vient pas de fmla mais de fm$rank, regarde de plus près predict.lm il y a une ligne avec ton warnings tu verras vite ce qui peut le générer.

Je ne sais pas par contre ce que représente le rank.

Maxime

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

Messagepar Nicolas Péru » 21 Juin 2007, 15:01

ok donc on crée la formula avant :)


Retourner vers « Questions en cours »

Qui est en ligne

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