From: Prof Brian Ripley <ripley_at_stats.ox.ac.uk>

Date: Tue 26 Jul 2005 - 22:06:33 EST

Date: Tue 26 Jul 2005 - 22:06:33 EST

On Tue, 26 Jul 2005, Adaikalavan Ramasamy wrote:

> Dear Prof. Ripley,

*>
**> Thank you for your response. See below for my comments.
**>
**>
**> On Tue, 2005-07-26 at 10:57 +0100, Prof Brian Ripley wrote:
**>> Adai,
**>
**>> using traceback() helps, as does giving a reproducible example when
**>> reporting a problem.
**>
**> You are right. The traceback below indicates that your guess is correct.
**>
**> 10: model.frame(formula = formu, data = data[j.in, , drop = FALSE],
**> drop.unused.levels = TRUE)
**>
**>
**> The example is actually reproducible but you need the load the boot
**> package first (which I failed to mention).
**>
**>> However, the problem is I think the line
**>>
**>> d.glm <- update(glmfit, data = data[j.in, , drop = FALSE])
**>>
**>> in cv.glm. I think that should be
**>>
**>> d.glm <- eval.parent(update(glmfit,
**>> data = data[j.in, , drop = FALSE], evaluate = FALSE))
**>>
**>> as in add.default and many other places.
**>>
**>> Could you please confirm that is the cause?
**>
**> I believe this is the cause but the fix may need bit more tweaking. I
**> get the following error message with your fix.
**>
**> Error in "[.data.frame"(data, j.in, , drop = FALSE) :
**> Object "j.in" not found
**>
**> The traceback gives the final same output as original one but this is
**> numbered at 12 instead. Could it be because "j.in" is created within the
**> for() loop environment ? I do not know how to fix this and would
**> appreciate any help.
*

Ah, that needs a different fix, namely

Call <- glmfit$call Call$data <- data[j.in, , drop=FALSE] d.glm <- eval.parent(Call)

which works for me when I modify your script accordingly. (You can take the first line outside the loop, for tidiness.)

> For your convenience, you can find the script with your current fix at

*> the following URL www.cbrg.ox.ac.uk/~ramasamy/cv.glm2.R
**>
**> Thank you very much. Much appreciated.
**>
**> Regards, Adai
**>
**>
**>> Brian
**>>
**>> On Mon, 25 Jul 2005, Adaikalavan Ramasamy wrote:
**>>
**>>> I am trying to write a wrapper for the last example in help(cv.glm) that
**>>> deals with leave-one-out-cross-validation (LOOCV) for a logistic model.
**>>> This wrapper will be used as part of a bigger program.
**>>>
**>>> Here is my wrapper funtion :
**>>>
**>>> logistic.LOOCV.err <- function( formu=NULL, data=NULL ){
**>>>
**>>> cost.fn <- function(cl, pred) mean( abs(cl-pred) > 0.5 )
**>>>
**>>> glmfit <- glm( formula=formu, data=data, family="binomial" )
**>>> print("glmfit is OK")
**>>>
**>>> err <- cv.glm( data=data, glmfit=glmfit,
**>>> cost=cost.fn, K=nrow(data) )$delta[2]
**>>> print("cv.glm OK")
**>>> }
**>>>
**>>>
**>>> When I run the above function line by line with the arguments from
**>>> below, it works fine. But when I call it as function, I get this :
**>>>
**>>> rm( glmfit, formu, cv.err ) # cleanup if required
**>>> logistic.LOOCV.err( formu=as.formula(r~stage+xray+acid), data=nodal )
**>>>
**>>> logistic.LOOCV.err( formu=as.formula(r~stage+xray+acid), data=nodal )
**>>> [1] "glmfit is OK"
**>>> Error in model.frame(formula = formu, data = data[j.in, , drop =
**>>> FALSE], :
**>>> Object "formu" not found
**>>>
**>>>
**>>> I think this has something to do with formula and environments but I do
**>>> not know enough to solve it myself. I searched the archive without much
**>>> help (perhaps I was using the wrong keywords).
**>>>
**>>> Any help would be very much appreciated. Thank you.
**>>>
**>>> Regards,
**>>> --
**>>> Adaikalavan Ramasamy ramasamy@cancer.org.uk
**>>> Centre for Statistics in Medicine http://www.ihs.ox.ac.uk/csm/
**>>> Wolfson College Annexe Tel : 01865 284 408
**>>> Linton Road, Oxford OX2 6UD Fax : 01865 284 424
**>>>
**>>> ______________________________________________
**>>> R-help@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
**>>>
**>>
**>
**>
*

-- Brian D. Ripley, ripley@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 ______________________________________________ R-help@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.htmlReceived on Tue Jul 26 22:11:09 2005

*
This archive was generated by hypermail 2.1.8
: Fri 03 Mar 2006 - 03:34:01 EST
*