R:boot() 输出的解释

R: interpretation of boot() output

我正在尝试 运行 使用自举数据的方差分析 (因为我的数据不是正态分布的)但我真的不知道我是否这样做了正确以及如何理解我的输出。

这就是我想要做的: 我在网上和实验室对相同的受试者进行了相同的实验(= 自变量 "testing situation",具有 2 个因子水平)。在实验中,我将认知负荷作为一个具有 4 个因子水平(称为 "no-back"、"zero-back"、"one-back" 和 "two-back")的自变量进行操作,并测量反应时间(在ms) 作为因变量。

这意味着我有一个 2 x 4 受试者内设计,将反应时间作为结果变量,想知道是否存在主效应或交互效应。

我尝试做的是:

# write regression function
bootReg <- function(formula, # Formula of the regression
                    data, 
                    indices)
{
  d <- data[indices,]
  fit <- lm(formula, data=d)
  return(coef(fit))  
}

# bootstrap the data 
boot.object <- boot(statistic = bootReg, formula = lm(RT ~ Code + Situation + Block, data = dataframe), data = dataframe, R = 2000) 

我的输出如下所示:

ORDINARY NONPARAMETRIC BOOTSTRAP


Call:
boot(data = NBACK_DESCR, statistic = bootReg, R = 2000, formula = lm(NBACK_Median_RT ~ 
    Code + Situation + Block, data = NBACK_DESCR))


Bootstrap Statistics :
        original     bias    std. error
t1*   322.927313 -9.0002985    79.96588
t2*   -12.014833  5.6209447   117.02878
t3*   109.197500  0.8386920   120.86134
t4*   338.548500  1.0563602   123.06327
t5*   212.354750  0.5961423   307.84955
t6*   115.336083  1.0862478    78.74367
t7*   204.884583  0.6035880    94.50454
t8*  -119.986083  2.2980845    72.79074
t9*   -93.026833  3.3750698    79.26258
t10*    0.311750  7.5767305   183.46302
t11*  200.108625 -1.8049229   371.22341
t12*  -53.072917  0.2976762    95.20676
t13*  126.300083  3.3038699   107.50477
t14*   -3.794000  2.6890971    85.11730
t15*   68.130917  0.1380621   109.92370
t16* -144.711750  1.6015020    74.13766
t17*    0.920000  0.8054492    98.44356
t18* -120.711167  0.7836202    78.31914
t19*   10.794083 -0.6042305    98.66546
t20*  519.203600  9.8466741   571.22411
t21*   90.910500 -0.2344282    90.77725
t22*  108.026250  1.1320475    77.27769
t23*   16.168000  0.3672671   126.07834
t24*  284.315333 -2.4115301   287.93144
t25*  198.447917  2.9121272   112.64016
t26*   37.165250  1.5303775    94.42860
t27*  -98.688833  3.0493664    79.98359
t28*   45.922417  2.0774330    74.65226
t29*   -6.227517  3.8654708   166.54048
t30*   50.998118  2.9716901    49.62328
t31*  -23.885188  6.9669819    64.99859
t32*   59.188070 10.5457197    73.22344

有谁知道这意味着什么以及我如何查看我是否具有显着的交互作用或主效应?

我猜 t1* 是原始测试统计数据,而其他 t*s 是自举测试统计数据,但即使这是正确的,也不能真正帮助我理解此输出试图告诉我的内容。

我的想法是计算有多少 t> t1,将其除以样本数量(在本例中为 2000?或 31?)以获得 p 值.我还考虑过对具有不同预测变量组合的不同类型的模型执行此操作,以查看哪些是重要的。那有意义吗?!我真的不知道。另外我想我应该应用更正?

如果有人能帮助我,那就太好了——我是一名本科生,目前正在尝试学习 R 编程,但我完全迷路了!提前致谢!

t1-32 是你的系数。由于您没有提供 data.frame,我使用下面的示例:

library(boot)
set.seed(111)

dataframe = data.frame(RT=rnorm(100),Code=rbinom(100,1,0.5),
Situation=factor(sample(1:3,100,replace=TRUE)),
Block=sample(letters[1:3],100,replace=TRUE))

dataframe$RT[dataframe$Code==1] = dataframe$RT[dataframe$Code==1] + 1

在我们做 bootstrap 之前,如果我们 运行 线性模型,我们期望输出是这样的:

(Intercept)        Code  Situation2  Situation3      Blockb      Blockc 
-0.02469464  0.78758240 -0.10768677  0.32013080  0.29325885 -0.05753515

你有一个 6 向量,1 个截距 5 个系数.. 因为其中一些是具有 > 2 个水平的因子。现在我们 bootstrap:

# bootstrap the data 
boot.object <- boot(statistic = bootReg, formula = lm(RT ~ Code + Situation + Block, data = dataframe), data = dataframe, R = 2000)

    Call:
boot(data = dataframe, statistic = bootReg, R = 2000, formula = lm(RT ~ 
    Code + Situation + Block, data = dataframe))


Bootstrap Statistics :
       original       bias    std. error
t1* -0.02469464  0.004240916   0.2588214
t2*  0.78758240  0.005184110   0.2130492
t3* -0.10768677  0.002780318   0.2479104
t4*  0.32013080  0.001647815   0.2734137
t5*  0.29325885 -0.005158781   0.2510207
t6* -0.05753515 -0.012981051   0.2718108

当您对原始数据执行 运行 lm 时,您可以看到打印输出对应于确切的系数。另一种看待它的方式:

(Intercept)        Code  Situation2  Situation3      Blockb      Blockc 
-0.02469464  0.78758240 -0.10768677  0.32013080  0.29325885 -0.05753515  

bootstrapped 值存储在 $t 下,这里你可以看到有 6 列,每个系数一列,每一行是 bootstrap:

head(boot.object$t)
            [,1]      [,2]         [,3]       [,4]        [,5]        [,6]
[1,]  0.37081996 0.3009173  0.307350121  0.2271736 -0.02898838 -0.38958835
[2,] -0.09836689 1.0306144 -0.272608134  0.1617208  0.30521958 -0.09391564
[3,] -0.24588583 0.9835756 -0.416804093  0.1581820  0.28454367  0.24282730
[4,]  0.29403111 0.5777657 -0.283601680 -0.1328344  0.20086620 -0.20614676
[5,] -0.00692040 0.6228231 -0.150136418  0.3648773  0.42969597 -0.07899494
[6,] -0.24859844 0.8226603  0.008036868  0.6543648  0.43781238  0.25347543

你的 bootstrapped 值应该徘徊在你观察到的值附近,这里我绘制了系数“代码”:

hist(boot.object$t[,2],br=50)
abline(v=boot.object$t0[2],col="blue")

根据 bootstrap,您可以估计系数项的标准误差并使用它来构建置信区间。它不用于检验系数不为零的假设。

您混淆了排列测试和 bootstrap。您需要的是在交换标签的地方构建一个类似的测试。您可以查看 this or maybe this by Ben Bolker

等帖子