2015-03-13 102 views
0

我有一个“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

似乎与你的'formula'论证一个问题... – 2015-03-13 09:55:07

+0

@guillermo弗里斯嗨,如果有答案的名字解决你的问题,你可以点击“接受它”,让其他人可以看到它吗?谢谢 – agenis 2017-09-06 13:21:16

回答

0

您正在寻找bootstrap的“strata”参数。这被称为分层引导。 :我不知道你的启动代码是正确的,我建议是这样的:

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必须返回一个值或引导程序正常工作的矢量。

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

注:在地层中的说法,你得重新指定数据框

+0

非常感谢agenis,我会按照您的建议尝试! – 2015-03-14 12:27:29

+0

@GuillermoFriis欢迎您。如果它解决了您的问题,请考虑接受答案,以便其他人可以从中受益。 – agenis 2015-03-19 10:57:08