[R] Problem with multinom ?

John Fox jfox at mcmaster.ca
Sat Jun 11 13:55:51 CEST 2005


Dear Marc,

I get the same results -- same coefficients, standard errors, and fitted
probabilities -- from multinom() and glm(). It's true that the deviances
differ, but they, I believe, are defined only up to an additive constant:

> dt
  output factor  n
1      m    1.2 10
2      f    1.2 12
3      m    1.3 14
4      f    1.3 14
5      m    1.4 15
6      f    1.4 12

> dt.m <- multinom(output ~ factor, data=dt, weights=n)
# weights:  3 (2 variable)
initial  value 53.372333 
iter  10 value 53.115208
iter  10 value 53.115208
iter  10 value 53.115208
final  value 53.115208 
converged

> dt2
   m  f factor
1 10 12    1.2
2 14 14    1.3
3 15 12    1.4

> dt.b <- glm(cbind(m,f) ~ factor, data=dt2, family=binomial)

> summary(dt.m)
Call:
multinom(formula = output ~ factor, data = dt, weights = n)

Coefficients:
               Values Std. Err.
(Intercept) -2.632443  3.771265
factor       2.034873  2.881479

Residual Deviance: 106.2304 
AIC: 110.2304 

Correlation of Coefficients:
[1] -0.9981598

> summary(dt.b)

Call:
glm(formula = cbind(m, f) ~ factor, family = binomial, data = dt2)

Deviance Residuals: 
       1         2         3  
 0.01932  -0.03411   0.01747  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)
(Intercept)   -2.632      3.771  -0.698    0.485
factor         2.035      2.881   0.706    0.480

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 0.5031047  on 2  degrees of freedom
Residual deviance: 0.0018418  on 1  degrees of freedom
AIC: 15.115

Number of Fisher Scoring iterations: 2

> predict(dt.b, type="response")
        1         2         3 
0.4524946 0.5032227 0.5538845 
 
> predict(dt.m, type="probs")
        1         2         3         4         5         6 
0.4524948 0.4524948 0.5032229 0.5032229 0.5538846 0.5538846 

These fitted probabilities *are* correct: Since the members of each pair
(1,2), (3,4), and (5,6) have identical values of factor they are identical
fitted probabilities.

(Note, by the way, the large negative correlation between the coefficients,
produced by the configuration of factor values.)

I hope this helps,
 John

--------------------------------
John Fox
Department of Sociology
McMaster University
Hamilton, Ontario
Canada L8S 4M4
905-525-9140x23604
http://socserv.mcmaster.ca/jfox 
-------------------------------- 

> -----Original Message-----
> From: r-help-bounces at stat.math.ethz.ch 
> [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Marc Girondot
> Sent: Saturday, June 11, 2005 3:06 AM
> To: John Fox
> Cc: r-help at stat.math.ethz.ch
> Subject: [R] Problem with multinom ?
> 
> Thanks for your response.
> OK, multinom() is a more logical in this context.
> 
> But similar problem occurs:
> 
> Let these data to be analyzed using classical glm with binomial error:
> 
> m   f   factor   m theo              f theo 
> -Ln L model        -Ln L full          interecept 
> f
> 10  12  1.2      0.452494473  0.547505527 
> 1.778835688  1.778648963    2.632455675 
> -2.034882223
> 14  14  1.3      0.503222759  0.496777241  1.901401922  1.900820284
> 15  12  1.4      0.553884782  0.446115218  1.877062369  1.876909821
> 
>                                  Sum -Ln L
> 5.557299979  5.556379068  Residual deviance
>                                  Deviance 
> 11.11459996  11.11275814   0.001841823
> 
> If I try to use multinom() function to analyze these data, 
> the fitted parameters are correct but the residual deviance not.
> 
> >  dt<-read.table('/try.txt'. header=T)
> >  dt
>    output factor  n
> 1      m    1.2 10
> 2      f    1.2 12
> 3      m    1.3 14
> 4      f    1.3 14
> 5      m    1.4 15
> 6      f    1.4 12
> >  dt.plr <- multinom(output ~ factor. data=dt. weights=n. maxit=1000)
> # weights:  3 (2 variable)
> initial  value 53.372333
> iter  10 value 53.115208
> iter  10 value 53.115208
> iter  10 value 53.115208
> final  value 53.115208
> converged
> >  dt.plr
> Call:
> multinom(formula = output ~ factor. data = dt. weights = n. 
> maxit = 1000)
> 
> Coefficients:
> (Intercept)      factor
>    -2.632443    2.034873
> 
> Residual Deviance: 106.2304
> AIC: 110.2304
> 
> >  dt.pr1<-predict(dt.plr. . type="probs")
> >  dt.pr1
>          1         2         3         4         5         6
> 0.4524948 0.4524948 0.5032229 0.5032229 0.5538846 0.5538846
> 
> Probability for 2. 4 and 6 are not correct and its explain 
> the non-correct residual deviance obtained in R.
> Probably the problem I have is due to an incorrect data 
> format... could someone help me... 
> Thanks
> 
> (I know there is a simple way to analyze binomial data. but 
> in fine I want to use multinom() for 5 categories of outputs.
> 
> 
> Thanks a lot
> 
> Marc
> -- 
> 
> __________________________________________________________
> Marc Girondot, Pr
> Laboratoire Ecologie, Systématique et Evolution Equipe de 
> Conservation des Populations et des Communautés CNRS, ENGREF 
> et Université Paris-Sud 11 , UMR 8079 Bâtiment 362
> 91405 Orsay Cedex, France
> 
> Tel:  33 1 (0)1.69.15.72.30   Fax: 33 1 (0)1 69 
> 15 56 96   e-mail: marc.girondot at ese.u-psud.fr
> Web: http://www.ese.u-psud.fr/epc/conservation/Marc.html
> Skype: girondot
> Fax in US: 1-425-732-6934
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! 
> http://www.R-project.org/posting-guide.html




More information about the R-help mailing list