From dimitris.rizopoulos at med.kuleuven.be  Fri Feb 23 14:07:18 2007
From: dimitris.rizopoulos at med.kuleuven.be (Dimitris Rizopoulos)
Date: Fri, 23 Feb 2007 14:07:18 +0100
Subject: [Rd] Bootstrapping stepAIC() with glm.nb()
References: <002601c75744$fea7c930$0540210a@www.domain>
	<Pine.LNX.4.64.0702231227510.4298@gannet.stats.ox.ac.uk>
Message-ID: <003f01c7574b$8bc33ba0$0540210a@www.domain>


----- Original Message ----- 
From: "Prof Brian Ripley" <ripley at stats.ox.ac.uk>
To: "Dimitris Rizopoulos" <dimitris.rizopoulos at med.kuleuven.be>
Cc: <r-devel at r-project.org>
Sent: Friday, February 23, 2007 1:40 PM
Subject: Re: [Rd] Bootstrapping stepAIC() with glm.nb()


> You did not say what the problem was!
>
> But you are asking that an object which is not in scope (index) be 
> found a few levels down.  You should be able to fix this by 
> substituting in the values in fn.  Here is one way:
>
>         up.obj <- update(object, data = data[index[, i], ])
>         Call <- up.obj$call
>         Call$data <- data[index[, i], ]
>         up.obj$call <- Call
>
> (there are others).


thanks very much for your reply and workaround. However, could you 
please explain me (or point me to the right direction) why it *does* 
work, without the workaround, for 'lm', 'glm' and 'aov' objects.

Thanks in advance,
Dimitris




>
> On Fri, 23 Feb 2007, Dimitris Rizopoulos wrote:
>
>> Dear all,
>>
>> I would like to Boostrap the stepAIC() procedure from package MASS 
>> for
>> variety of model objects, i.e.,
>>
>> fn <- function(object, data, B = 2){
>>    n <- nrow(data)
>>    res <- vector(mode = "list", length = B)
>>    index <- sample(n, n * B, replace = TRUE)
>>    dim(index) <- c(n, B)
>>    for (i in 1:B) {
>>        up.obj <- update(object, data = data[index[, i], ])
>>        res[[i]] <- stepAIC(up.obj, trace = FALSE)
>>    }
>>    res
>> }
>>
>> ####################
>>
>> library(MASS)
>>
>>
>> # 'glm' objects
>> x1 <- runif(100, -4, 4)
>> x2 <- runif(100, -4, 4)
>> y <- 1 + 2 * x1 + rnorm(100, sd = 3)
>> dat <- data.frame(y, x1, x2)
>> glmFit <- glm(y ~ x1 + x2, data = dat)
>> fn(glmFit, data = dat)
>>
>> # 'aov' objects
>> quine.hi <- aov(log(Days + 2.5) ~ .^4, quine)
>> fn(quine.hi, data = quine)
>>
>>
>> However, for "negbin" objects returned by glm.nb() the following
>> problem occurs:
>>
>> quine.nb <- glm.nb(Days ~ .^4, data = quine)
>> fn(quine.nb, data = quine)
>>
>>
>> Any hints to overcome this are greatly appreciated.
>>
>> Thanks in advance,
>> Dimitris
>>
>> ----
>> Dimitris Rizopoulos
>> Ph.D. Student
>> Biostatistical Centre
>> School of Public Health
>> Catholic University of Leuven
>>
>> Address: Kapucijnenvoer 35, Leuven, Belgium
>> Tel: +32/(0)16/336899
>> Fax: +32/(0)16/337015
>> Web: http://med.kuleuven.be/biostat/
>>     http://www.student.kuleuven.be/~m0390867/dimitris.htm
>>
>>
>> Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm
>>
>> ______________________________________________
>> R-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>
> -- 
> Brian D. Ripley,                  ripley at stats.ox.ac.uk
> Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
> University of Oxford,             Tel:  +44 1865 272861 (self)
> 1 South Parks Road,                     +44 1865 272866 (PA)
> Oxford OX1 3TG, UK                Fax:  +44 1865 272595
> 


Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm



[Rd] Bootstrapping stepAIC() with glm.nb()
Dimitris Rizopoulos