Re: multinom

From: Stephane Dray (dray@biomserv.univ-lyon1.fr)
Date: Fri Jan 21 2005 - 16:17:03 MET


Ce n'est pas un probleme lie a multinom, mais plutot a la structure associe
a vos variables.
Vous pouvez faire ce que vous voulez en jouant avec les contrastes associes
a un facteur.
Par defaut, la premiere classe est utilise comme reference:

> a=factor(rep(c("a","b","c"),c(4,5,3)))
> a
  [1] a a a a b b b b b c c c
Levels: a b c
> contrasts(a)
   b c
a 0 0
b 1 0
c 0 1

Dans votre cas, c'est M0.

Si on veut change ca, soit on modifie les contrastes associes a ce facteur.
Dans votre cas, on peut egalement changer l'ordre des modalites dans la
definition du facteur:

> a2=factor(a,levels=c("c","a","b"))
> contrasts(a2)
   a b
c 0 0
a 1 0
b 0 1

# C'est maintenant c la classe de reference car la premiere.

Il me semble qu'il y a une fiche de Daniel qui parle de contrastes...
Desole, j'ai pas trop le temps de vous la retrouver, allez fouiller dans
les fiches sur le site.

Cordialemement.

At 08:51 21/01/2005, Charline LAURENT wrote:
>Bonjour,
>
>J’ai une question qui ne rentre pas véritablement dans le cadre de la
>librairie ade4: il s’agit de régression logistique.
>
>L'exemple est tiré de "Applied Logistic Regression, 2nd Edition", David
>W.Hosmer et Stanley Lemeshow.
>
>Chapitre 8 : régression logistique multinomiale.
>
>p. 264 : exemple d'une étude sur la mammographie.
>
>Les données peuvent être obtenues à cette adresse:
>http://www-unix.oit.umass.edu/~statdata/statdata/stat-logistic.html
>
>Dans un premier temps, les auteurs considèrent un modèle contenant une
>seule variable dichotomique codée 0 ou 1 (HIST).
>La variable réponse est ME, codée en 0, 1 et 2.
>
>ME=0 est utilisé comme référence.
>
>J’ai utilisé la fonction multinom(nnet) afin de reproduire cet exemple et
>ce modèle.
>
>data <- read.delim2("D:/mes donnees/…./data.txt")
>
># tableau croisé :
>
>table(data$ME, data$HIST)
>
># 0 1
># 0 220 14
># 1 85 19
># 2 63 11
>
>library(nnet)
>mult <- multinom(formula = ME ~ HIST, data = data)
>summary(mult)
>
># Call:
># multinom(formula = ME ~ HIST, data = data)
>
># Coefficients:
># (Intercept) HIST1
># 1 -0.9509794 1.256531
># 2 -1.2504803 1.009384
>
># Std. Errors:
># (Intercept) HIST1
># 1 0.1277115 0.3746633
># 2 0.1428926 0.4275097
>
># Residual Deviance: 792.34
># AIC: 800.34
>
># Correlation of Coefficients:
># 1:(Intercept) 1:HIST1 2:(Intercept)
># 1:HIST1 -0.3408700
># 2:(Intercept) 0.2490796 -0.0849038
># 2:HIST1 -0.0832534 0.4743673 -0.3342442
>
>J’obtiens les mêmes résultats que les auteurs, concernant les coefficients
>et les écarts types, au millième près.
>Le calcul des OR à partir de coefficients ne pose pas de problème:
>OR1 correspond à ME=1 vs ME=0
>OR2 correspond à ME=2 vs ME=0
>
>OR1 <- exp(as.data.frame(summary(mult)$coefficients)$HIST[1])
>OR2 <- exp(as.data.frame(summary(mult)$coefficients)$HIST[2])
> > OR1
>[1] 3.513213
> > OR2
>[1] 2.743911
>
>Le calcul des intervalles de confiance à 95% non plus:
>
>Int95_OR1p <-
>exp((as.data.frame(summary(mult)$coefficients)$HIST[1])+1.96*(as.data.frame(summary(mult)$standard.errors)$HIST[1]))
>Int95_OR1m <-
>exp((as.data.frame(summary(mult)$coefficients)$HIST[1])-1.96*(as.data.frame(summary(mult)$standard.errors)$HIST[1]))
>
>Int95_OR1 <- round(c(Int95_OR1m, Int95_OR1p), dig=3)
>
>Int95_OR2p <-
>exp((as.data.frame(summary(mult)$coefficients)$HIST[2])+1.96*(as.data.frame(summary(mult)$standard.errors)$HIST[2]))
>Int95_OR2m <-
>exp((as.data.frame(summary(mult)$coefficients)$HIST[2])-1.96*(as.data.frame(summary(mult)$standard.errors)$HIST[2]))
>
>Int95_OR2 <- round(c(Int95_OR2m, Int95_OR2p), dig=3)
>
> > Int95_OR1
>[1] 1.686 7.322
> > Int95_OR2
>[1] 1.187 6.343
>
>J’aimerais obtenir un OR de ME=2 versus ME=1.
>
>Dans le livre ils calculent un coefficient (différence entre les 2
>coefficients: 1.009 1.256 = -0.247 donc OR = 0.781).
>Ensuite ils calculent un estimateur de la variance de la différence entre
>les 2 coefficients, et ceci à partir d’une matrice de covariance estimée,
>donnée directement par le logiciel utilisé (en l’occurrence STATA ;
>multinom donne une matrice de corrélations). Cet estimateur de la variance
>est ensuite utilisé pour calculer l’intervalle de confiance autour du
>coefficient et donc de l’OR.
>Refaire tout ces calculs ne pose évidemment pas de pb.
>Cependant, j’aimerais savoir si l’on peut paramétrer la fonction multinom
>afin de pouvoir choisir la classe de référence de la variable réponse, en
>l’occurrence pour choisir ME=1 comme référence et obtenir directement un
>OR de ME=2 vs ME=1?
>
>Merci
>Charline L.
>

Stéphane DRAY
--------------------------------------------------------------------------------------------------

Département des Sciences Biologiques
Université de Montréal, C.P. 6128, succursale centre-ville
Montréal, Québec H3C 3J7, Canada

Tel : (514) 343-6111 poste 1233 Fax : (514) 343-2293
E-mail : stephane.dray@umontreal.ca
--------------------------------------------------------------------------------------------------

Web http://www.steph280.freesurf.fr/
--------------------------------------------------------------------------------------------------



This archive was generated by hypermail 2b30 : Tue Oct 18 2005 - 10:35:39 MEST