我正在从人口普查数据中进行一些抽样模拟,我想分两个阶段进行抽样。
- 首先,我想对每个村庄的 25 个家庭进行抽样。
- 其次,我想从每个家庭中抽取 1 个人。
我的数据是长格式的,带有村庄标识符、家庭标识符和二进制疾病状态 ( 0 = healthy
, 1 = diseased
)。以下代码运行蒙特卡罗模拟,对每个村庄的 25 个人进行 3000 次抽样,并记录抽样的疟疾阳性个体的数量。
但是,我想从每个村庄的 25 个抽样家庭中抽取 1 个样本。我想不通。
d = read.table("data.txt", sep=",", header=TRUE)
villages = split(d$malaria, d$villageid)
positives = vector("list", 3000)
for(i in 1:3000) {
sampled = lapply(villages, sample, 25)
positives[[i]] = lapply(sampled, sum)
}