Thanks Bert for your suggestion that is working.

To answer to your question, I can say that some econometricians say that using bootstrap techniques on a linear regression model when the sample size N is small, one of the most interesting purpose is on the prediction intervals which is better fitted.
For me, the bootstrap will give results that are at least as good as the normal approximation.

When the sample size N is small, are bootstrap or jackknife better than the standard methods for estimating the best fit parameters ?   
What is your opinion about that question ?

Best

Le Jeudi 15 mai 2014 14h44, Bert Gunter <gunter.berton@gene.com> a écrit :
 
Please note that this can (and should) be considerably sped up by
taking advantage of the fact that lm() will work on a matrix of
responses. Also, some improvement in speed can usually be obtained by
generating all samples at once rather than generating the sample each
time within a loop.

something like (untested):

nr <- nrow(dat)
ymat <- matrix(with(dat,sample(y,100*nr,rep=TRUE)), nrow =nr)
out <- lm(ymat ~x1+x2,data=dat)
b <- predict(out)

However, why do this anyway, as for linear models the standard closed
form solutions are available?

Cheers,
Bert

Bert Gunter
Genentech Nonclinical Biostatistics
(650) 467-7374

"Data is not information. Information is not knowledge. And knowledge
is certainly not wisdom."
H. Gilbert Welch




On Thu, May 15, 2014 at 4:01 AM, Rui Barradas <ruipbarradas@sapo.pt> wrote:
> Hello,
>
> Try to follow the example below and see if you can adapt it to your needs.
> Since you don't provide us with a dataset example, I start by making up
> some.
>
>
> # make up some data
> n <- 22
> set.seed(8873)
> dat <- data.frame(x1 = rnorm(n), x2 = rnorm(n))
> dat$y <- x1 + x2 + rnorm(n)
>
>
> B <- 100  # number of bootstrap samples
> result <- array(dim = c(n, 3, B), dimnames = list(NULL, c("fit", "upr",
> "lwr"), NULL))
> for(i in 1:B){
>         s <- sample(nrow(dat), n, replace = TRUE)
>         lm.tmp <- lm(y ~ x1 + x2, data = dat[s, ])
>         result[,,i] <- predict(lm.tmp, interval = "prediction")
> }
>
>
> Then you can do whatever you want with 'result', including computing the min
> and max values.
>
>
> Hope this helps,
>
> Rui Barradas
>
> Em 15-05-2014 10:37, varin sacha escreveu:
>>
>> Dear experts,
>>>
>>>
>>>
>>> I have done a multiple linear regression on a small sample size (n=22).
>>> I have computed the prediction intervals (not the confidence intervals).
>>>
>>>
>>> Now I am trying to bootstrap the prediction intervals.
>>>
>>>
>>> I didn't find any package doing that.
>>> So I decide to create my own R function, but it doesn't work !
>>>
>>>
>>> Here are my R codes :
>>>
>>>
>>> LinearModel.1 <- lm(GDP.per.head ~ Competitivness.score +Quality.score,
>>> data=Dataset)
>>> summary(LinearModel.1)
>>> predict(LinearModel.1, interval = "prediction")
>>>
>>>
>>> HERE IS MY R FUNCTION WHERE I HAVE TRIED TO BOOTSTRAP THE PREDICTION
>>> INTERVALS
>>>
>>>
>>> pred.min<-rep(nrow(Dataset), na.rm=F)
>>> pred.max<-rep(nrow(Dataset), na.rm=F)
>>> for(i in 1:n)
>>> {s<-sample(1:nrow(Dataset),size=22)
>>> reg<-lm(GDP.per.head ~ Competitivness.score +
>>> Quality.score,data=Dataset[s])
>>> pred.min<-pmin(reg,pred.min)
>>> pred.max<-pmax(reg,pred.max)}
>>>
>>>
>>> Thanks for your precious help.
>>>
>>>
>>         [[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.

>>
>
> ______________________________________________
> 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]]

