R语言 使用模拟计算P值

vlurs2pr  于 2023-03-05  发布在  其他
关注(0)|答案(1)|浏览(254)

假设我们想测试一辆汽车每加仑汽油的平均英里数是否等于22,则H0:mu = 22与H1:mu =/= 22。并且假设从样本观察到的平均值(观察到的检验统计量,x_bar)是20.09。
我想使用模拟计算p值。
在这种情况下,我是否需要使用22(mu)或20(x_bar)的平均值来模拟样本平均值?
就是说

## Method 1:
samp <- replicate(n_samples, mean(rnorm(n = 30, mean = 22, sd = 3)))
two.sided.pval <- 2*min(c(prop(samp >= 20), prop(samp <= 20)))

## Method 2:
samp <- replicate(n_samples, mean(rnorm(n = 30, mean = 20, sd = 3)))
two.sided.pval <- 2*min(c(prop(samp >= 22), prop(samp <= 22)))

根据p值的定义(即,p值是观察到检验统计量实际观察到的检验统计量一样极端或更极端的概率,假定零假设为真),我认为我需要使用mu获得样本。(= 22)以获得零分布。也就是说,实际观察到的检验统计量为20,而检验统计量来自均值为22的正态分布。
然而,在我现在阅读的教程中,样本均值是使用观测均值(x_bar = 20)和获得的,并且它根据这些样本均值是否〉mu(= 22)来计算p值。(基本方法2)它不应该是另一种方式吗?

2wnc66cl

2wnc66cl1#

你问:"测试一辆汽车每加仑汽油的平均英里数是否等于22,然后H0:mu = 22与H1:mu =/= 22 "。这意味着观察到的高于或低于假设的平均值将构成对H0的拒绝。您想知道H0:当样本平均值为样本平均值22.09时,将被拒绝。(我们现在将22作为H0和22.09作为HA的角色互换。
您既没有给出这些模拟实验的样本量,也没有给出样本标准差,但您的工作编码似乎是针对样本量为30且标准差为3的情况。因此,让我们运行1000次采样实现,平均值为22.09,标准差为3,看看H)平均值= 22在95%双侧CI内的频率。

> res <- replicate( 1000, 
+                                 { x <-  rnorm(30, 22.09, 3)
+                                            t.test(x, mu=22)$p.value })
> sum(res <0.05)
[1] 48

因此,1000次中有48次,即p值为0.048,在这种情况下,使用未指定的R随机数生成器种子,零假设将被拒绝。这是[1] 0.048的比例,非常非常接近0.05。这是零假设的模拟拒绝。那么,接下来的几次模拟会发生什么?

> res <- replicate( 1000, 
+                                 { x <-  rnorm(30, 22.09, 3)
+                                            t.test(x, mu=22)$p.value })
> sum(res <0.05)
[1] 65    # p-value accepted
> res <- replicate( 1000, 
+                                 { x <-  rnorm(30, 22.09, 3)
+                                            t.test(x, mu=22)$p.value })
> sum(res <0.05)
[1] 62   # p-value again accepted

这两个都"失败"拒绝零假设,所以我们真的接近决定H0是否被拒绝或不假设指定参数的"边缘(平均值= 22)和假设值(n = 30,sd = 3)。我不知道这是不是家庭作业。我也不知道是什么观点(费希尔、NP或贝叶斯)你的教授可能正在公布,但我认为这是一个"有用"的答案,可以证明统计计算的"理想/理论"和"模拟"方法的二重性。

相关问题