Skip to content

glmmBUGS: logistic regression on proportional data

5 messages · John Poulsen, Dieter Menne, David Winsemius

#
Hello,

I am trying to run a logistic regression with random effects on 
proportional data in glmmBUGS.  I am a newcomer to this package, and 
wondered if anyone could help me specify the model correctly. 

I am trying to specify the response variable, /yseed/, as # of successes 
out of total observations... but I suspect that given the error below, 
that is not correct.  Also, Newsect should be a factor, whereas Newdist 
is continuous.

Thanks,
John


Newdat<-data.frame(Newtree=rep(1:3, each=20), Newsect=rep(c("a","b"), 
each=10), Newdist=rep(1:5, 2),
                   y=rpois(60,2), tot=rep(c(14,12,10,8,6), 12))

yseed<-cbind(Newdat$y, Newdat$tot)

mod<-glmmBUGS(yseed~Newsect + Newdist, effects="Newtree", 
family="binomial", data=Newdat)

Error in `[.data.frame`(data, , response, drop = FALSE) :
  undefined columns selected
#
John Poulsen <jpoulsen <at> zoo.ufl.edu> writes:
First, a typo, there is no yseed. Second, after the error message
"must be between 0 and 1", this looks more like poisson, because
you have the counts, not the events. 

This might come close

mod<-glmmBUGS(y~Newsect + Newdist, effects="Newtree", 
  family="poisson", data=Newdat)


Dieter
#
On Feb 8, 2009, at 10:46 AM, Dieter Menne wrote:

            
Puzzled. I see yseed defined above as a two column vector, as is  
sometimes used to handle grouped data input to the glm response side  
of a formula.
Reasoning only by analogy from the experience with ordinary glm()  
input to create a Poisson model and having no experience with glmmBUGS:
  How you are accounting for the tot (presumably totals) from which it  
appears the y variable is being considered as forming a proportion?  
Would have expected to see an offset=log(tot) or perhaps a weights=tot  
in that call.
#
Installing the glmmBUGS package and a bit of experimentation produces  
this minor modification of your code that seems to run without error.  
It's back to you to see if the output is sensible.

library(glmmBUGS)
Newdat<-data.frame(Newtree=rep(1:3, each=20), Newsect=rep(c("a","b"),
each=10), Newdist=rep(1:5, 2),
                  y=rpois(60,2), tot=rep(c(14,12,10,8,6), 12))

yseed<-cbind(Newdat$y, Newdat$tot)

mod<-glmmBUGS(y/tot~Newsect + Newdist, effects="Newtree",
family="binomial", data=Newdat)

I am guessing that the interpreter was looking for a variable yseed  
within Newdat and not finding it. It, however, is able to "see" y and  
tot within Newdat. Also appears that using cbind(y, tot) on the LHS of  
hte formula will avoid the error you were getting.
#
David Winsemius <dwinsemius <at> comcast.net> writes:
Sorry, my short-circuit. You example is in analogy to the budworm example
in MASS, giving successes and failures. I have no solution, but a quick
look shows that the formula interface of glmmPQL is called, so you
might cross check if glmmPQL support the success/failure form. I am not
on an R machine currently to check it.

Dieter