我从来没有得出任何结论:这个问题,所以我想我会改写它并再次问。
我想对我的数据集进行 10,000 次二次抽样,以便为我的每个响应生成均值和 95% 的 CI。
以下是数据集结构的示例:
x <- read.table(tc <- textConnection("
study expt variable value1 value2
1 1 A 1.0 1.1
1 2 B 1.1 2.1
1 3 B 1.2 2.9
1 4 C 1.5 2.3
2 1 A 1.7 0.3
2 2 A 1.9 0.3
3 1 A 0.2 0.5"), header = TRUE); close(tc)
我只想对每个研究/变量组合进行一次二次抽样。因此,例如,子集数据集将如下所示:
study expt variable value1 value2
1 1 A 1.0 1.1
1 2 B 1.1 2.1
1 4 C 1.5 2.3
2 1 A 1.7 0.3
3 1 A 0.2 0.5
请注意,第 3 行和第 6 行已经消失,因为它们都测量了一个变量两次(第一种情况是 B,第二种情况是 A)。
我想一次又一次地绘制二次抽样数据集,因此我可以推导出 value1 和 value2 的整体均值,每个变量的置信区间为 95%。所以在整个子采样例程之后我想要的输出是:
variable mean_value1 lower_value1 upper_value1 mean_value2 etc....
A 2.3 2.0 2.6 2.1
B 2.5 2.0 3.0 2.5
C 2.1 1.9 2.3 2.6
这是我必须获取子集的一些代码:
subsample<-function(x, B){
samps<-ddply(x, .(study,variable), nrow)[,3] #for each study/variable combination,
#how many experiments are there
expIdx<-which(!duplicated(x$study)) #what is the first row of each study
n<-length(samps) #how many studies are there
sapply(1:B, function(a) { #use sapply for the looping, as it's more efficient than for
idx<-floor(runif(n, rep(0,n), samps)) #get the experiment number-1 for each study
x$value[idx+expIdx] #now get a vector of values
})
任何帮助表示赞赏。我知道这很复杂,所以如果您需要澄清,请告诉我!