如何迭代计算 t 检验的 p 值

Posted

技术标签:

【中文标题】如何迭代计算 t 检验的 p 值【英文标题】:How to iteratively compute p-values for t-test 【发布时间】:2019-09-09 05:30:59 【问题描述】:

a) 从 X ~ N (μX= 25, σX = 4) 生成 50 个值,从 Y ~ N (μY= 25, σY = 4) 生成 50 个值。使用 t 检验来检验均值是否相等。

c) 重复 (a) 部分 2500 次,并为 2500 次测试中的每一次保留 p 值。每次重复都应该为 x 生成一个新样本,为 y 生成一个新样本。不要打印 p 值。不要使用循环。

我解决了一个rnorm 样本的 A 部分,但我不知道从哪里开始获取 2500 个不同的 x 随机样本和 2500 个不同的 y 随机样本以获得 2500 个不同的 p 值。

我也不知道如何确保编写我的代码,以便我的教授得到与我相同的答案。我尝试设置种子,但这只会使 p 值使用我上面的代码都相同。

# Part A

set.seed(1081)
x = rnorm(50,25,4)
y = rnorm(50,25,4)

t.test(x,y)

#Part B
#The p-value is 0.3752.
#We do not reject the null hypothesis.

#Part C

x1 = sample(x, 2500, replace = T)
y1 = sample(y, 2500, replace = T)
pval = sample(t.test(x1,y1)$p.value, 2500, replace = T)

【问题讨论】:

【参考方案1】:

还有一种可能是:

set.seed(1081)
n <- 50
times <- 2500
x <- data.frame(matrix(rnorm(n*times, mean=25, sd=4), nrow=n))
y <- data.frame(matrix(rnorm(n*times, mean=25, sd=4), nrow=n))
pvals <- mapply(FUN = function(x,y) t.test(x,y)$p.value, x, y)
mean(pvals < .05)  # should be ~= .05

Loop simultaneously over two lists in R (jogo的评论)

但如果我们从字面上理解“每次重复都应该生成新样本”,@Cettt 的答案可能就是我们想要的。

【讨论】:

【参考方案2】:

另一种可能是使用replicate:

请注意,您必须在函数之外设置随机种子。

myfun <- function()
  x <- rnorm(50, 25, 4)
  y <- rnorm(50, 25, 4)

  return(t.test(x, y)$p.value)



set.seed(1)
p_vals <- replicate(2500, myfun())

【讨论】:

【参考方案3】:

另一种方法是这样的:

    library(MASS)       #load MASS library

    s <- 4*diag(2500)   #create the variance matrix for the simulation
    set.seed(123)        # seed to replicate results

    x <- mvrnorm( 50, m= rep(25,times=2500), Sigma=s)  #draw 50 values, 25000 times 

    y <- mvrnorm( 50, m = rep(25, times=2500), Sigma=s) #draw 50 values, 2500 times

    diff <- x - y

    test <- apply(diff,2,t.test) #do the t.tests

    names(test) #some of the results you can print

如果您对代码有任何疑问,可以问我。

【讨论】:

为什么要取 x 和 y 的差值? 当您想在两个样本之间执行 t 检验(因此 x,y)时,测试它们的差异是否为零是相同的。因此,为了进行一次 t 检验,您可以创建一个新样本 z ( z= x-y) 并进行测试,t.test(z, mu=0)。使用两个样本测试 t.test(x,y),您将得到几乎相同的结果。

以上是关于如何迭代计算 t 检验的 p 值的主要内容,如果未能解决你的问题,请参考以下文章

t检验和p值的关系

如何用spss进行单因素方差分析

统计学中t值p值是啥意思?怎么计算?

统计中t值和p值的区别

回归分析p值是啥意思?

f检验的p值和r值是啥意思?