如何知道p值是增加还是减少

机器算法验证 假设检验 p 值
2022-03-22 00:15:51

你进行假设检验。在 100 次样本观察后,您观察到样本均值和样本标准差的值不会导致拒绝原假设,因为 p 值为 0.12。在观察 200 个样本观察后,您仍然会观察到相同的样本均值和标准差。p值会发生什么变化?

一个。增加
b. 减少
C. 保持不变
d. 可能增加或减少

我在一次采访中被问到这个问题,我很困惑。有人可以帮我回答这个问题。我认为答案应该是d,但我不确定。

2个回答

我相信可以增加更多的精度来准确地解决问题并知道我们在谈论什么测试。但是因为您谈论的是 1 个样本均值和 1 个标准差,所以我将假设一个经典的 Z 检验统计量。

您正在尝试查看样本显着不同“平均精度”由表示为的标准差给出:所有这些都可以在这里找到https://en.wikipedia.org/wiki/Z-testx¯μσ/n

可以看到,添加的样本越多,估计的方差就会缩小得越多。根据以下公式,这反过来意味着 Z 值更高,因此 p 值更低:

Z=(x¯μ)(σ/n)

一种更直观的观察方式是,您抽取的样本越多,您对平均值的信心就越大,因为围绕该平均值的标准偏差越小。现在将有一个点,该平均值“足够精确”,与您试图与之比较的μ

在给定您的情况下,p 值会降低。

[编辑] 感谢 Sal Mangiafico 的精确度:在的情况下, p 值将保持不变并等于 1x¯=μ

我想我会添加一些代码,以便 OP 可以轻松地看到这种效果。这个答案支持@Romain,除了我使用单样本t检验而不是单样本Z检验。那不会有太大的不同。

A是 100 个观测值的样本,平均值约为 10,标准差约为 3。(这些可以在rnorm函数中更改。)

B将是 200 个观测值的类似样本。 A并且B具有完全相同的意思。由于样本标准偏差的计算方式,它们的样本标准偏差将略有不同。

此代码可以在 R 或rdrr.io/snippets中运行。代码有点复杂,但输出很容易阅读。您可以多次运行它以查看从不同样本开始的p值的行为。

Funny = function(){
  A   = rnorm(100, 10, 3)
  lA  = length(A)
  mA  = mean(A)
  sdA = sd(A)
  pA  = t.test(A, mu=10)$p.value
  
  B   = c(A,A)
  lB  = length(B)
  mB  = mean(B)
  sdB = sd(B)
  pB  = t.test(B, mu=10)$p.value
  
  Out = data.frame(Statistic=rep("A", 8), Value = rep(0.00, 8))
  Out$Statistic = c("n for A", "Mean of A", 
                    "Standard deviation of A", "t-test p-value for A", 
                    "n for B", "Mean of B", 
                    "Standard deviation of B", "t-test p-value for B")
  Out$Value = c(signif(lA,3), signif(mA,3), signif(sdA,3), signif(pA,3),
                signif(lB,3), signif(mB,3), signif(sdB,3), signif(pB,3))
  
  return(Out)
}

Funny()

   ### Example output
   ###
   ###                 Statistic  Value
   ### 1                 n for A 100.000
   ### 2               Mean of A 10.200
   ### 3 Standard deviation of A  3.140
   ### 4    t-test p-value for A  0.518
   ### 5                 n for B 200.000
   ### 6               Mean of B 10.200
   ### 7 Standard deviation of B  3.140
   ### 8    t-test p-value for B  0.358