3

I want to estimate frequency distributions of MRM coefficients to generate a 95% CI. Below is the initial code:

library(ecodist)
dat=data.frame(matrix(rnorm(3*25),ncol=3))
names(dat)<-c('Pred','Var1','Var2')
mod<-MRM(dist(Pred) ~ dist(Var1) + dist (Var2), data=dat, nperm=100)
slopes<-mod$coef

How can I bootstrap the coefficient values?

StupidWolf
  • 45,075
  • 17
  • 40
  • 72
Sreekar
  • 31
  • 2

1 Answers1

1

You can use the boot function from the boot library. I do not know of the ecodist::MRM. Though, here is a close to copy-paste example from the help page of boot which shows how to do non-parametric bootstrap of the coefficient estimates for an lm model and get bias and confidence intervals

> library(boot)
> nuke <- nuclear[, c(1, 2, 5, 7, 8, 10, 11)]
> nuke.lm <- lm(log(cost) ~ date+log(cap)+ne+ct+log(cum.n)+pt, data = nuke)
> 
> nuke.fun <- function(dat, inds, i.pred, fit.pred, x.pred)
+ {
+   lm.b <- lm(log(cost) ~ date+log(cap)+ne+ct+log(cum.n)+pt, 
+              data = dat[inds, ])
+   coef(lm.b)
+ }
> 
> set.seed(45282964)
> nuke.boot <- boot(nuke, nuke.fun, R = 999)
> nuke.boot

ORDINARY NONPARAMETRIC BOOTSTRAP


Call:
boot(data = nuke, statistic = nuke.fun, R = 999)


Bootstrap Statistics :
        original       bias    std. error
t1* -13.26031434 -0.482810992  4.93147203
t2*   0.21241460  0.006775883  0.06480161
t3*   0.72340795  0.001842262  0.14160523
t4*   0.24902491 -0.004979272  0.08857604
t5*   0.14039305  0.009209543  0.07253596
t6*  -0.08757642  0.002417516  0.05489876
t7*  -0.22610341  0.006136044  0.12140501
> 
> boot.ci(nuke.boot, index = 2) # pick the covariate index you want
BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
Based on 999 bootstrap replicates

CALL : 
boot.ci(boot.out = nuke.boot, index = 2)

Intervals : 
Level      Normal              Basic         
95%   ( 0.0786,  0.3326 )   ( 0.0518,  0.3215 )  

Level     Percentile            BCa          
95%   ( 0.1033,  0.3730 )   ( 0.0982,  0.3688 )  
Calculations and Intervals on Original Scale
Warning message:
In boot.ci(nuke.boot, index = 2) :
  bootstrap variances needed for studentized intervals

See Davison, A.C. and Hinkley, D.V. (1997) Bootstrap Methods and Their Application. Cambridge University Press for details of the above output. You should consider what you want to achieve with the bootstrap and consider which bootstrap procedure to use.