使用Boot包进行组引导

时间:2015-03-13 09:26:47

标签: r statistics-bootstrap

我有一个" my.dataset"像这样:

   ID    Species  SEX     Category     V1      V2     V3
87790   Caniceps    F   F_Caniceps  -0.34   -0.55   0.61
199486  Caniceps    F   F_Caniceps  -0.34   -0.56   0.63
199490  Caniceps    F   F_Caniceps  -0.37   -0.54   0.57
199493  Caniceps    F   F_Caniceps  -0.35   -0.54   0.58
200139  Caniceps    F   F_Caniceps  -0.39   -0.51   0.51
393151  Caniceps    M   M_Caniceps  -0.36   -0.56   0.55
393154  Caniceps    M   M_Caniceps  -0.36   -0.55   0.55
486210  Caniceps    M   M_Caniceps  -0.41   -0.50   0.45
811945  Hyemalis    F   F_Hyemalis  -0.35   -0.54   0.55
811947  Hyemalis    F   F_Hyemalis  -0.35   -0.59   0.62
 15661  Hyemalis    M   M_Hyemalis  -0.34   -0.56   0.62
 15662  Hyemalis    M   M_Hyemalis  -0.35   -0.53   0.53
 15663  Hyemalis    M   M_Hyemalis  -0.33   -0.58   0.68
 15664  Vulcani     F   F_Vulcani   -0.29   -0.57   0.71
 15665  Vulcani     F   F_Vulcani   -0.29   -0.56   0.67
 15666  Vulcani     F   F_Vulcani   -0.28   -0.55   0.70
486218  Vulcani     F   F_Vulcani   -0.36   -0.55   0.56
486224  Vulcani     F   F_Vulcani   -0.36   -0.54   0.56
486212  Vulcani     M   M_Vulcani   -0.37   -0.53   0.53
486213  Vulcani     M   M_Vulcani   -0.37   -0.53   0.54
199479  Vulcani     M   M_Vulcani   -0.33   -0.57   0.61
199483  Vulcani     M   M_Vulcani   -0.33   -0.62   0.69
199484  Vulcani     M   M_Vulcani   -0.33   -0.60   0.65

我尝试使用boot()执行引导来计算变量统计量" V1"," V2"和" V3",类似于:

boot(my.dataset, statistic=lda (formula=lda(SEX~V1+V2+V3, data=my.dataset), R=3, sim = "ordinary")

但我需要重新取样,取决于"类别" " my.dataset"的变量。有关如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:0)

您正在寻找引导程序的“分层”参数。这被称为分层自举。 备注:我不确定你的启动代码是否正确,我建议如下:

   statfun = function(d, i) {lda(formula=SEX~V1+V2+V3, data=d[i, ])}
res <- boot(my.dataset, statfun, R=100, strata=factor(my.dataset$Species))

我不知道lda()函数返回什么,但是statfunction必须返回一个值或一个向量,以使引导程序正常工作。

该方法确保每个因子水平的选择与其观察数量成比例。在正常的引导程序中,情况并非如此,并且会导致错误,因为某些复制中缺少某些级别,并且无法计算线性模型。

注意:在strata参数中,您必须再次指定数据框的名称