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

时间:2019-04-18 20:41:05

标签: r statistics hypothesis-test

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)

3 个答案:

答案 0 :(得分:1)

这是另一种方法:

    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

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

答案 1 :(得分:1)

另一种可能性是使用 this.chart = new Chart(this.chartRef.nativeElement, { type: 'doughnut', data: { datasets: [{ data: [ this.randomScalingFactor(), this.randomScalingFactor(), this.randomScalingFactor(), this.randomScalingFactor(), ], label: 'Dataset 1', backgroundColor: ["#3e95cd", "#8e5ea2","#3cba9f","#e8c3b9","#e8c3b9"], }], labels: [ '0.11 - 0.15 EUR', '0.16 - 0.20 EUR', '0.20 - 0.24 EUR', '0.24 - 0.28 EUR', ] }, options: { responsive: true, legend: { position: 'right' }, title: { display: true, text: 'Service desk in English' }, animation: { animateScale: true, animateRotate: true } } });

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

 <canvas #lineChart>{{ chart }}</canvas>

答案 2 :(得分:0)

另一种可能性是:

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的答案可能就是所要的。