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?

4

1 回答 1

1

您可以使用库中的boot函数boot。我不知道的ecodist::MRM。不过,这里是帮助页面中的一个接近复制粘贴的示例,该示例boot显示了如何对模型的系数估计进行非参数引导lm并获得偏差和置信区间

> 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

参见Davison, AC 和 Hinkley, DV (1997) 引导方法及其应用。剑桥大学出版社了解上述输出的详细信息。您应该考虑要使用引导程序实现什么,并考虑使用哪个引导程序。

于 2017-10-20T15:25:47.270 回答