当我们有自举和中心极限定理时,为什么仍然使用假设检验?

机器算法验证 r 估计 推理 意思是 引导程序
2022-01-21 06:33:35

当我们有自举中心极限定理时,为什么仍然使用假设检验

为了给我的问题提供背景信息,我简要介绍了中心极限定理并说明了一个使用R编程语言的模拟示例。

中心极限定理的维基百科页面提供了对该定理的一些很好的解释:

如果从总体均值和有限方差随机样本,并且如果是样本均值,则分布是标准正态分布。X1,X2,...,XNnμσ2X¯nZ=limn+n(X¯nμσ)

我的理解如下:

1)从任何分布中抽取许多随机样本

2)对于这些随机样本中的每一个,计算它们的平均值

3)这些均值的分布将遵循正态分布(这个结果对于推断特别有用,例如假设检验和置信区间)。

导致样本均值高斯分布的中心极限定理的说明

我试图通过使用 R 编程语言创建两个示例来查看我是否正确理解了中心极限定理。我模拟了非正态数据并从这些数据中随机抽取样本,试图查看与这些随机样本分布相对应的“钟形曲线形状”。

1)非参数引导

在此示例中,假设有一个城镇,您对居住在该城镇的人们的工资感兴趣:具体而言,您想知道是否有 20% 的人口收入超过 80,000.00 美元。这是这个城镇的工资分布(在现实生活中,你不会知道这个分布的样子——你只能从这个分布中取样):

set.seed(123)
a = rnorm(100000, 20000, 1000)

a2 = rnorm(100000, 40000, 10000)

a1 = rnorm(100000, 100000, 10000)

salary = c(a, a1, a2)
id = 1:length(salary)
my_data = data.frame(id, salary)


###plot

par(mfrow=c(1, 2))
hist(my_data$salary, 1000, ylab = "Number of People", xlab = " Salary ", main="Distribution for the Salaries of All People in Some Town: 300,000 People")
hist(our_sample$salary, 1000, ylab = "Number of People", xlab = " Salary ", main="Sample of the Full Data that we have Access to: 15,000 People")

在此处输入图像描述

假设我们可以获得这个城镇 5% 的人的工资(假设这些是随机选择的):

library(dplyr)
our_sample <- sample_frac(my_data, 0.05)

接下来,我们将从我们访问的 5% 的人口中随机抽取 1000 个样本,并检查有多少公民的收入超过 80,000 美元。然后我将绘制这些比例的分布 - 如果我做得正确,我应该会看到“钟形曲线形状”:

library(dplyr)

results <- list()
    for (i in 1:1000) {

        train_i <- sample_frac(our_sample, 0.70)
        sid <- train_i$row
        train_i$prop = ifelse(train_i$salary >80000, 1, 0)

        results[[i]] <- mean(train_i$prop)
    }

results

results_df <- do.call(rbind.data.frame, results)

colnames(results_df)[1] <- "sample_mean"

hist(results_df$sample_mean)

在此处输入图像描述

正如我们所看到的,原始数据显然是非正态的,但是来自这些非正态数据的随机样本的均值分布看起来“有点正常”:

par(mfrow=c(1, 3))
hist(my_data$salary, breaks = 10000, main = "full data")
hist(our_sample$salary, breaks = 10000, main = "sample of the full data that we have access too")
hist(results_df$sample_mean, breaks = 500, main = "resampled data by bootstrap from the data we hace access to")

在此处输入图像描述

置信区间

  • 实际上,该镇 32.5% 的居民收入超过 80,000 美元

    my_data$prop = ifelse(my_data$salary > 80000, 1, 0)
          mean(my_data$prop)
    
          [1] 0.3258367
    
  • 令人惊讶的是,根据重新抽样的引导数据,只有 32.5% 的公民收入超过 80,000 美元

    mean(results_df$sample_mean)
      [1] 0.3259046
    

置信区间计算如下:

在此处输入图像描述

    results_df$delta = abs(mean(results_df$sample_mean) - results_df$sample_mean)

sorted_results = results_df[order(- results_df$delta), ]

quantile(sorted_results$delta,  probs = c(0.1, 0.9))

        10%         90%
0.000495400 0.005977933

这意味着收入超过 80,000 美元的公民比例的置信区间介于 32.59% 之间 - 但实际上可以介于 (32.59 - 0.0495400 %) 和 (32.59 - 5.97%) 之间

结论:据我了解,中心极限定理指出,对于任何分布,随机样本的均值分布仍将遵循正态分布。此外,非参数引导程序还允许您评估总体推断和置信区间 - 无论总体的真实分布如何。因此,为什么我们仍然使用经典的假设检验方法?我能想到的唯一原因是样本量较小时。但是还有其他原因吗?

参考

4个回答

仍然使用假设检验,因为它们的动机与统计推断的不同需求相比,区间估计的动机不同。

假设检验的目的是决定是否有证据表明替代假设对总体参数的表达。

置信区间有不同的用途:它们提供了总体参数的合理估计范围。

除了关于估计的所有技术细节(精确与近似、引导与非概率封闭式估计量、区间、测试统计和p值等)之外,上述内容代表了统计推断中根本不同的动机。


另外:有时置信区间覆盖率与假设检验相当直接的对应关系(它是否覆盖了空值),但情况并非总是如此,并且在我看来,习惯性地为此目的使用置信区间会掩盖上面区分“让我们对替代假设的证据做出决定”和“让我们估计一个参数值的合理范围”。

使用传统假设检验方法(当它们可以使用时)的一个原因是,与引导抽样相比,这样做在计算上是有效的。根据数据中的维数,估计 p 值(或置信区间)所需的引导样本数可能非常大。

中心极限定理并不总是适用。当然,大量 iid 随机变量的平均值会导致正态分布。问题是什么是的。此外,问题在于它不仅仅是您感兴趣的人群的平均值;在 CLT 不适用的情况下,您还需要估计其他参数。同样,我们有渐近正态性来拯救(我不会在这里详细介绍),但它也需要一个大样本。再次,什么是的。请注意,渐近正态性需要其他技术条件来满足,而这些条件并不总是成立。

编辑: CLT 不适用的一个例子是时间序列具有长期持续性,这意味着自相关消亡非常缓慢。这里违反了独立性假设,以至于 CLT 对于数千个样本甚至都不是近似有效的。再次在这里,您将不必求助于经典的抽样分布进行假设检验。

另一点(正如亚历克西斯所详述的那样)是假设检验用于拒绝观察到的现象的合理解释(模型)。因此,无论使用何种方法来检验假设,假设检验本身都将保持相关性。

让我们看看您的示例实际发生了什么

  • 您从三个正态分布的混合开始,其中超过的概率约为$80k0.32576
  • 的人口,其中案例超过,比例约为30000097751$80k0.32587
  • 人口中个样本而不进行替换,个案例超过,比例约为这是总体和原始混合分布比例的自然估计值150003000004865$80k0.3243p^
  • 然后,您次采样而不进行替换,并查看了超过 8 万美元的案例范围从平均约为,因此比例范围从平均约为(您似乎报告平均值为,但我没有得到运行您的代码 - 只有次重复,差异并不显着)10001050015000$80k331734913405.80.31590.33250.32440.32591000

最后一步不是传统的自举,而是涉及从原始样本中替换(或者可能是,并进行多次。不管。真正的要点是,在第三步之后,您所做的任何事情都无法提高个样本的知识。bootstrapping 所做的是允许对理论上难以计算的统计数据进行估计,但比例并非如此。15000285000486515000$80k

特别是你不能确保你通过引导来改进,尽管有一些理论论据支持使用有偏估计而不是至于置信区间,有很多理论建议,至少对于原始混合分布而言,并且这里的自举不会改善这些(并且会有所不同,因为每组自举会有所不同)。在这里很容易将这些扩展到总体的置信区间,记住总体是有限的,并且您已经知道个值。p^4865+1215000+14865+115000+24865+215000+448651500015000

此外,非参数引导程序还允许您评估总体推断和置信区间 - 无论总体的真实分布如何。因此,为什么我们仍然使用经典的假设检验方法?我能想到的唯一原因是样本量较小时。但是还有其他原因吗?

如果您有一个大样本,那么您可以根据经验分布很好地估计总体。

但是,它可以通过简单的计算更快地完成,而不是自举如果的样本中 ,则估计值中的标准误差估计值为p=0.3258367n=15000p^

σp^p(1p)n

对于 80% 的置信区间

CI=p^±1.281552σp^

给予

CI=0.3258367±0.004904255

优势直接计算/劣势引导

  • 所以这个计算不需要你需要做的所有重采样。

  • 它也比您给出的结果更准确*。

  • 此外,自举是一个黑匣子。它只给你一个输出,但没有关于更深层次关系的信息。

    例如,使用直接计算公式,您可以看到最终结果的依赖性。如果您想确定特定精度的最佳样本量,这很有用。使用引导程序,您将无法直接看到这一点,您必须模拟许多情况。1/n


*由于“介于 (32.59 - 0.0495400 %) 和 (32.59 - 5.97%) 之间”是错误的,因此您的计算中一定会出现一些错误。您应该得到类似 (32.59 - 0.49 %) 和 (32.59 + 0.49 %) 的结果,因此正确的区间大小仅为 1% 左右。