【发布时间】:2017-12-09 05:19:09
【问题描述】:
我有一个看起来像这样的数据框,但显然还有更多行等:
df <- data.frame(id=c(1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2),
cond=c('A', 'A', 'B', 'B', 'A', 'A', 'B', 'B', 'A', 'A', 'B', 'B', 'A', 'A', 'B', 'B'),
comm=c('X', 'Y', 'X', 'Y', 'X', 'Y', 'X', 'Y','X', 'Y', 'X', 'Y', 'X', 'Y', 'X', 'Y'),
measure=c(0.8, 1.1, 0.7, 1.2, 0.9, 2.3, 0.6, 1.1, 0.7, 1.3, 0.6, 1.5, 1.0, 2.1, 0.7, 1.2))
所以我们有 2 个因子(每个因子有 2 个水平,因此有 4 个组合)和一个连续测量。我们还有一个重复测量设计,每个单元格中有多个measure,对应于相同的id。
我尝试先解决 groupby 问题,然后解决引导问题,然后将两者结合起来,但几乎陷入困境......
统计数据,按 2 个因素分组
我可以通过以下方式获得 4 个单元格中每个单元格的多个汇总统计信息:
summary_stats <- aggregate(df$measure,
by = list(df$cond, df$comm),
function(x) c(mean = mean(x), median = median(x), sd = sd(x)))
print(summary_stats)
导致
Group.1 Group.2 x.mean x.median x.sd
1 A X 0.85000000 0.85000000 0.12909944
2 B X 0.65000000 0.65000000 0.05773503
3 A Y 1.70000000 1.70000000 0.58878406
4 B Y 1.25000000 1.20000000 0.17320508
这很棒,因为我们可以为 4 个单元格中的每一个单元格获取多个统计信息。
但我真正想要的是 95% 的引导 CI,对于每个统计数据,对于 4 个单元格中的每一个。 我不介意我是否必须运行一次最终解决方案统计数据(例如平均值、中位数等),但一次性完成所有操作的奖励积分。
引导重复测量
不能完全完成这项工作,但我想要的是 95% 的引导 CI,以适合这种重复测量设计的方式完成。除非我弄错了,否则我想根据id(不是基于数据框的行)选择引导样本,然后计算一个汇总度量(例如mean) 4 个单元格中的每一个。
library(boot)
myfunc <- function(data, indices) {
# select bootstrap sample to index into `id`
d <- data[data$id==indicies,]
return(c(mean=mean(d), median=median(d), sd = sd(d)))
}
bresults <- boot(data = CO2$uptake, statistic = myfunc, R = 1000)
Q1:我在通过id 选择引导样本时遇到错误,即d <- data[ data$id==indicies, ] 行
结合 bootstrap 和 groupby 2 个因素
Q2:我不知道如何将这两种方法结合在一起以达到最终的预期结果。我唯一的想法是将aggregate 调用放在myfunc 中,以重复计算每个引导复制下的单元格统计信息,但我在这里使用R 超出了我的舒适区。
【问题讨论】:
标签: r dataframe statistics