【发布时间】:2014-08-31 20:02:54
【问题描述】:
我正在尝试引导 7 个人的饮食项目的比例出现并计算 sd()
假设菜单上有 9 个猎物。
Diet <- c("Beaver","Bird", "Bobcat","Coyote", "Deer", "Elk",
"Porcupine", "Raccoon", "SmMamm")
这些猎物被同一物种的 7 个不同个体吃掉
Inds <- c("P01", "P02", "P03", "P04", "P05", "P06", "P07")
我的目标是引导每个人的每个饮食项目的比例发生。
下面的循环为每个个体生成了五种饮食(每个饮食包含 N = 20 次喂食),并对其进行替换采样。数据以个体列表的形式存储,每个个体都包含一个样本饮食列表。
BootIndDiet <- list()
IndTotboot <- list()
for(i in Inds){
for(j in 1:5){
BootIndDiet[[j]] <- prop.table(table(sample(Diet, 20 ,replace = T)))
}
IndTotboot[[i]] <- BootIndDiet
}
下面我将个人 P07 的前两种饮食作为循环结果的示例
$P07
$P07[[1]]
Beaver Bird Bobcat Deer Elk
0.05 0.15 0.20 0.10 0.15
Porcupine Raccoon SmMamm
0.15 0.15 0.05
$P07[[2]]
Beaver Bird Bobcat Coyote Deer
0.15 0.10 0.20 0.05 0.05
Elk Porcupine Raccoon SmMamm
0.05 0.20 0.10 0.10
然后我想计算每个个体的每个物种的比例的 sd()。模棱两可地,对于每个人 (P01 - P07),我想要在 5 种饮食中每种猎物物种的比例出现的sd()。
当我上面的循环运行时,我怀疑有更好的方法(可能使用 boot() 函数)来避免列表...
虽然我在这里只为每个人包含了 5 个样本(引导程序),但我希望生成 10000 个。
非常感谢有关不同策略或如何在子列表中应用 sd() 的建议。
【问题讨论】:
-
除非出现内存问题,否则您可以将数据存储在长格式“data.frame”中,其中包含-say- [ind, No_diet, prey, prop] 列,然后您可以调用
aggregate(prop ~ ind + prey, mydataframe, sd)。
标签: r apply nested-lists statistics-bootstrap