我有一个" 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"的变量。有关如何做到这一点的任何想法?
答案 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参数中,您必须再次指定数据框的名称