Home > Net >  What is the B matrix returned by the boot.rq command in R?
What is the B matrix returned by the boot.rq command in R?

Time:07-28

I don't use R very often and I've never worked with the quantreg package, so it's probably a dumb question. When invoking boot.rq like this

b_10 = boot.rq(x,y,tau=.1,bsmethod="xy",cov=TRUE,R=reps,mofn=mofn)

what does the B matrix (size R x p) in b_10 contain: bootstrapped coefficient estimates or bootstrapped standard errors? According to the documentation, boot.rq returns "A list consisting of two elements: A matrix B of dimension R by p is returned with the R resampled estimates of the vector of quantile regression parameters. [...]". So, I'd think ok it's the coefficient estimated. But the function is described as allowing the construction of "standard errors, confidence intervals and tests of hypotheses regarding quantile regression models". So which is it?


Edit: I was also wondering what difference the option cov=TRUE makes. Thanks!

CodePudding user response:

It stores the bootstrap coefficients. Each row of B is a sample of coefficients, and you have R rows.

These samples are the basis of further inference. We can compute various statistics from them. For example, to compute bootstrap mean and standard error, we can do:

colMeans(B)

apply(B, 2, sd)

Do you also happen to know what difference the option cov = TRUE makes?

Are you sure that cov = TRUE works? First of all, boot.rq itself has no such argument. It may be passed in via .... However, ... is forwarded to boot.rq.pxy (if bsmethod = "pxy") or boot.rq.pwxy (if bsmethod = "pwxy"), neither of which deals with cov argument. Furthermore, you use bsmethod = "xy", so ... will be silently ignored. As far as I could see, cov = TRUE has no effect at all.

It works in the sense that R doesn't throw me an error.

That is what "silently ignored" means. You can pass whatever into .... They are just ignored.

The bootstrapped values are different depending on whether I use cov = TRUE or not. The code was written by someone else so I'm not sure why that option was put there.

Random sampling won't give identical results on different runs. I suggest you fix a random seed then do testing:

set.seed(0); ans1 <- boot.rq(..., cov = FALSE)
set.seed(0); ans2 <- boot.rq(..., cov = TRUE)
all.equal(ans1$B, ans2$B)

If you don't get TRUE, come back to me.

You're right. It's just because of the different seeds. Thanks!!

  • Related