[R] Expressing a multinomial GLM as a series of binomial GLMs

Charles Berry ccberry at ucsd.edu
Tue Jul 22 18:18:44 CEST 2014


Scherber, Christoph <cscherb1 <at> gwdg.de> writes:

> 
> Dear all,
> 
> I am trying to express a multinomial GLM (using nnet) as a series of GLM
models.
> 
> However, when I compare the multinom() predictions to those from GLM, I
see differences that I can´t
> explain. Can anyone help me out here?
> 
> Here comes a reproducible example:
> 
> ##
> # set up data: (don´t care what they are, just for playing)
> set.seed(0)
> cats=c("oligolectic","polylectic","specialist","generalist")
> explan1=c("natural","managed")
> explan2=c("meadow","meadow","pasture","pasture")
> multicats=factor(sample(cats,replace=T,100,prob=c(0.5,0.2,0.1,0.5)))
> multiplan1=factor(rep(explan1,50))
> multiplan2=factor(rep(explan2,25))
> 
> ########################
> library(nnet)
> m2=multinom(multicats~multiplan1)
> 
> # predictions from multinomial model
> predict(m2,type="probs")
> 
> ########################
> # now set up contrasts for response variable "multicats" (which has 4 levels):

[snip - Christoph's comparison]

Doing the obvious comparison:

ggen.preds <- 
    sapply( levels(multicats), 
            function(x) predict(glm(I(multicats==x)~multiplan1,
                         family=binomial),type="response"))

max(abs(ggen.preds-predict(m2,type="probs")))
## [1] 1.349607e-06

---

The predictions are the same - up to numerical issues in the algorithms.

HTH,

Chuck



More information about the R-help mailing list