Hello,
Inline.
Em 06-12-2012 03:52, Rebecca escreveu:> I'm trying to find a bootstrap based confidence band for a linear
model.
> I have created a data set with X and Y
> X=runif(n,-1.25,1.25)
> e=rnorm(n,0,1)
> Y=exp(3*X)+5*sin((30*X)/(2*pi))+2*e
> fit=lm(Y~X)
You cannot expect this model, a first degree polynomial in X, to fit
your data.
> summary(fit)
>
> I define a bootstrap function named PairedBootstrap which is not listed
here. Than I try many ways to find the confidence band. One way is to predict Y
using the model I get above for 1000 times.
> Data.Orig=data.frame(cbind(X,Y))
Get rid of cbind(), please. It's doing nothing and the construct
data.frame(cbind(...)) is potentially harmful.
> B=1000
> Boot.Result=matrix(nrow=B,ncol=n)
> for ( b in 1:B){
> Data.Orig.Boot=PairedBootstrap(Data.Orig)
>
fit.Boot=predict(fit,newdata=Data.Orig.Boot,type="response")
> Boot.Result[b,]=fit.Boot
> }
>
> And try to find 95% confidence interval for 1000 copies of y corresponding
to each x.
> ConfidenceSet.Pointwise=function(Boot.Result,alpha){
> n=ncol(Boot.Result)
> B=nrow(Boot.Result)
> SetBounds=matrix(ncol=2,nrow=n)
> for(j in 1:n){
> Result.Sort=sort(Boot.Result[,j])
> SetBounds[j,1]=Result.Sort[floor(0.5*B*alpha)]
> SetBounds[j,2]=Result.Sort[ceiling(B*(1-0.5*alpha))]
> }
> return(SetBounds)
> }
Better could be
ConfidenceSet.Pointwise2 <- function(Boot.Result,alpha){
SetBounds <- matrix(ncol=2, nrow=n)
for(j in seq_len(ncol(Boot.Result)))
SetBounds[j, ] <- quantile(Result.Sort, probs = c(alpha/2, 1 -
alpha/2))
SetBounds
}
Simpler, no?
Hope this helps,
Rui Barradas>
> And then try to line them up. But the result is not what I want.
> alpha=0.05
> Boot.Pointwise=ConfidenceSet.Pointwise(Boot.Result,alpha)
> lines(Data.Orig[,1],Boot.Pointwise[,1], col=2, lwd=3)
>
> Could someone tell where I'm wrong, or is there another better way to
do it?
> Thank you so much!
>
> [[alternative HTML version deleted]]
>
>
>
> ______________________________________________
> R-help@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.
[[alternative HTML version deleted]]