r - Bootstrapping 比较两组

标签 r statistics-bootstrap

在下面的代码中,我使用引导来计算 C.I.以及在零假设下的 p 值,即两种不同的肥料施用于番茄植物对植物产量没有影响(替代方案是“改良的”肥料更好)。第一个随机样本 (x) 来自使用标准肥料的植物,而“改进”的样本已用于第二个样本 (y) 来自的植物。

x <- c(11.4,25.3,29.9,16.5,21.1)
y <- c(23.7,26.6,28.5,14.2,17.9,24.3)
total <- c(x,y)
library(boot)
diff <- function(x,i) mean(x[i[6:11]]) - mean(x[i[1:5]])
b <- boot(total, diff, R = 10000)

ci <- boot.ci(b)
p.value <- sum(b$t>=b$t0)/b$R

我不喜欢上面的代码的是,重采样的完成好像只有一个包含 11 个值的样本(将前 5 个作为样本 x 分开,其余的样本 y)。
你能告诉我应该如何修改这段代码,以便从第一个样本中提取大小为 5 的重采样,并将大小为 6 的重采样与第二个样本分开,这样引导重采样将模仿产生原始数据?

最佳答案

编辑2:
Hack 删除了,因为这是一个错误的解决方案。相反,必须使用引导函数的参数层:

total <- c(x,y)
id <- as.factor(c(rep("x",length(x)),rep("y",length(y))))
b <- boot(total, diff, strata=id, R = 10000)
...

请注意,您甚至不会接近对 p.value 的正确估计:
x <- c(1.4,2.3,2.9,1.5,1.1)
y <- c(23.7,26.6,28.5,14.2,17.9,24.3)

total <- c(x,y)

b <- boot(total, diff, strata=id, R = 10000)
ci <- boot.ci(b)
p.value <- sum(b$t>=b$t0)/b$R
> p.value
[1] 0.5162

您如何解释两个样本的 p 值 0.51,其中第二个样本的所有值都高于第一个样本的最高值?

上面的代码可以很好地获得置信区间的偏倚估计,但是关于差异的显着性测试应该通过对完整数据集的排列来完成。

关于r - Bootstrapping 比较两组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3615718/

相关文章:

r - 我怎么知道每个加载的 R 包占用了多少内存?

r - 将函数的参数名称转换为字符串

R:从引导结果向量计算 BCa

R:删除嵌套的 for 循环以使自定义 Bootstrap 更有效

r - 根据 bootstrap GLM 列表计算 LC50

r - 将数据分为大小相等的组

r - 多列dplyr过滤器不起作用

R-如何从距离矩阵中获取匹配元素的行和列下标

大数据分组的 R 引导统计

r - 获取通过重采样计算的多重回归系数值