[R] Bootstrapping gnls models
Christoph Scherber
Christoph.Scherber at agr.uni-goettingen.de
Fri Nov 7 17:35:33 CET 2008
Dear all,
Here comes a reproducible example, with the original data added.
The error message when running boot() is:
Error in gnls(response.variable ~ a * LD/(b + LD), params <- list(a + :
Step halving factor reduced below minimum in NLS step
boot() in this case only seems to work for very small values of R (say, within [1..5]), which is of
course not desirable. Maybe this is due to problems with model convergence.
I would very much appreciate any help.
###
LD=c(4.087462841,2.321928095,4.087462841,1,1,4.087462841,2.321928095,1,1,2.321928095,4.087462841,2.321928095,5.930737338,2.321928095,5.930737338,1,1,2.321928095,2.321928095,4.087462841,1,1,2.321928095,4.087462841,4.087462841,1,2.321928095,1,4.087462841,2.321928095,1,2.321928095,5.930737338,4.087462841,1,4.087462841,2.321928095,4.087462841,5.930737338,4.087462841,1,2.321928095,2.321928095,1,2.321928095,1,1,4.087462841,4.087462841,2.321928095)
L=c(1,1,0,1,0,0,1,0,0,0,1,0,1,1,1,0,0,1,0,0,0,1,1,1,1,0,1,0,0,0,1,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0)
response.variable=c(0.335737179487179,0.391025641025641,0.391826923076923,0.487980769230769,0.294070512820513,0.507211538461538,0.395833333333333,0.0825320512820513,0.443108974358974,0.290064102564103,0.59775641025641,0.514423076923077,0.65625,0.193910256410256,0.447916666666667,0,0.260416666666667,0.407852564102564,0.44150641025641,0.596153846153846,0.0600961538461538,0.21875,0.256410256410256,0.364583333333333,0.435096153846154,0.0793269230769231,0.249198717948718,0.0304487179487179,0.230769230769231,0.485576923076923,0.684294871794872,0.0737179487179487,0.490384615384615,0.599358974358974,0.215544871794872,0.219551282051282,0.602564102564103,0.907852564102564,0.391025641025641,0.43349358974359,0.0384615384615385,0.337339743589744,0.502403846153846,0.405448717948718,1,0.362980769230769,0.116185897435897,0.459134615384615,0.661057692307692,0.0769230769230769)
a=data.frame(LD,L,response.variable)
model=gnls(model = response.variable ~ a * LD/(b + LD), data = a,
params = list(a + b ~ L), start = c(1, 1, 1, 1))
df<-cbind(a,fit<-as.numeric(predict(model,list(LD=1,L=0.5))))
rs<-scale(resid(model),scale=F)
model.bootfunc<-function(rs,i){
df$response.variable<-df$fit+rs[i]
as.numeric(predict(gnls(response.variable ~ a * LD/(b + LD),
params <- list(a + b ~ L), start = coef(model), data=df)))
}
(model.boot<-boot(rs,model.bootfunc,R=100))
booted<-boot.ci(model.boot,index=1,type=c("norm"))
booted$t0
booted$normal
###
Best wishes,
Christoph.
Prof Brian Ripley schrieb:
> On Fri, 7 Nov 2008, Christoph Scherber wrote:
>
>> Dear all,
>>
>> I am trying to bootstrap predictions from gnls models using the
>> following code:
>>
>> # a is the dataframe with which I am working; it contains the variables
>> # response.variable,LD,L,G,P and F
>
> And without it your code is not reproducible.
>
>>
>> ###
>>
>> model=gnls(response.variable ~ a * LD/(b + LD),
>> params = list(a + b ~ L), start = c(1,1,1,1), data=a)
>>
>> df=cbind(a,fit=predict(model,list(LD=1,L=0.5,G=0.5,P=0.46,F=2.2)))
>> model.bootfunc=function(rs,i){
>> df$response.variable=df$fit+rs[i]
>> as.numeric(predict(gnls(response.variable ~ a * LD/(b + LD),
>> params = list(a + b ~ L), start = coef(model), data=df)))
>> }
>>
>> rs=scale(resid(model),scale=F)
>> (model.boot=boot(rs,model.bootfunc,R=1))
>> booted=boot.ci(model.boot,index=1,type=c("norm","basic","perc","bca"))
>
> Do please try to make your code readable, using spaces and <- for
> assignments. I would have spotted the problem much sooner with legible,
> reproducible code.
>
>> ###
>>
>> The problem is that this code yields "NA" for the s.e. of the
>> bootstrap statistics:
>>
>> Bootstrap Statistics :
>> original bias std. error
>> t1* 0.1651658 -0.020663364 NA
>> t2* 0.1669592 -0.021759335 NA
>> t3* 0.1676765 -0.001858686 NA
>> t4* 0.1726982 -0.025321349 NA
>> t5* 0.1658092 0.024721214 NA
>>
>>
>> And hence the boot.ci function and others don?t work.
>>
>> Does anyone have an idea on that?
>
> Yes: how can you estimate standard errors from a single sample (you set
> R=1)?
>
>> Many thanks and best wishes
>> Christoph
>>
>>
>>
>> --
>> Dr. rer.nat. Christoph Scherber
>> University of Goettingen
>> DNPW, Agroecology
>> Waldweg 26
>> D-37073 Goettingen
>> Germany
>>
>> phone +49 (0)551 39 8807
>> fax +49 (0)551 39 8806
>>
>> Homepage http://www.gwdg.de/~cscherb1
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>
More information about the R-help
mailing list