在下面的代码中,我使用bootstrapping来计算CI.和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的重采样从第二个样本中分离出来,以便引导重采样将模仿产生原始数据的“单独样本”设计?
发布于 2010-09-01 15:30:32
EDIT2 :删除了Hack,因为这是一个错误的解决方案。取而代之的是必须使用boot函数的参数层:
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,其中第二个样本的所有值都高于第一个样本的最高值?
上面的代码可以很好地获得置信区间的有偏估计,但是关于差异的显着性测试应该通过对整个数据集进行排列来完成。
发布于 2010-09-02 00:34:45
虽然实际的土壤床可以被认为是一个分层变量,但在某些情况下,这不是其中之一。你只有一个操作,在植物组之间。因此,你的无效假设是它们确实来自完全相同的人群。在这种情况下,将这些项目视为来自一组11个样本的项目是正确的引导方式。
如果你有两个地块,并且在每个地块中以平衡的方式在不同的季节尝试不同的化肥,那么这些地块将是统计样本,你会希望这样对待它们。但这里的情况并非如此。
发布于 2013-06-04 10:26:55
跟随John,我认为使用bootstrap测试这两个不同群体的总和是否有显著差异的适当方法如下:
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)
b_x <- boot(x, sum, R = 10000)
b_y <- boot(y, sum, R = 10000)
z<-(b_x$t0-b_y$t0)/sqrt(var(b_x$t[,1])+var(b_y$t[,1]))
pnorm(z)因此,我们可以清楚地拒绝null,即它们是相同的总体。我可能错过了一定程度的自由度调整,我不确定bootstrapping在这方面是如何工作的,但这样的调整不会彻底改变你的结果。
https://stackoverflow.com/questions/3615718
复制相似问题