Menu
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

统计学 - 估计总体比例


总体比例是指一个总体中属于特定类别的个体所占的比例。

置信区间用于估计总体比例。


估计总体比例

使用来自样本的统计量来估计总体的参数。

参数最有可能的值是点估计

此外,我们可以计算估计参数的下限上限

误差范围是指点估计值与上下限之间的差值。

上下限共同定义了置信区间


计算置信区间

以下步骤用于计算置信区间

  1. 检查条件
  2. 找到点估计
  3. 决定置信水平
  4. 计算误差范围
  5. 计算置信区间

例如

  • 总体:诺贝尔奖获得者
  • 类别:出生在美国

我们可以抽取一个样本,看看有多少人出生在美国。

样本数据用于估计所有出生在美国的诺贝尔奖获得者的比例。

通过随机选择30位诺贝尔奖获得者,我们发现

样本中30位诺贝尔奖获得者中有6位出生在美国

根据这些数据,我们可以通过以下步骤计算置信区间。


1. 检查条件

计算比例置信区间的条件是

  • 样本是随机选择的
  • 只有两种选择
    • 属于该类别
    • 不属于该类别
  • 样本至少需要
    • 5个属于该类别的成员
    • 5个不属于该类别的成员

在我们的例子中,我们随机选择了6个出生在美国的人。

其余的人没有出生在美国,所以另外一类有24人。

在这种情况下,条件满足。

注意:即使没有5个属于每个类别,也可以计算置信区间。但需要进行特殊调整。



2. 找到点估计

点估计是样本比例(\(\hat{p}\))。

计算样本比例的公式是出现次数(\(x\))除以样本量(\(n\))

\(\displaystyle \hat{p} =\frac{x}{n}\)

在我们的例子中,30人中有6人出生在美国:\(x\)是6,\(n\)是30。

因此,比例的点估计是

\(\displaystyle \hat{p} = \frac{x}{n} = \frac{6}{30} = \underline{0.2} = 20\%\)

因此,样本中20%的人出生在美国。


3. 决定置信水平

置信水平用百分比或小数表示。

例如,如果置信水平是95%或0.95

那么剩余概率(\(\alpha\))是:5%,或1 - 0.95 = 0.05。

常用的置信水平是

  • 90% with \(\alpha\) = 0.1
  • 95% with \(\alpha\) = 0.05
  • 99% with \(\alpha\) = 0.01

注意:95%的置信水平意味着,如果我们抽取100个不同的样本,并为每个样本建立置信区间

真值参数将在100个置信区间中有95个位于置信区间内。

我们使用标准正态分布来找到置信区间的误差范围

剩余概率(\(\alpha\))被分成两半,使一半位于分布的每个尾部区域。

将尾部区域与中间部分隔开的z值轴上的值称为临界z值

以下是标准正态分布的图形,显示了不同置信水平的尾部区域(\(\alpha\))。

Standard Normal Distributions with two tail areas, with different sizes.


4. 计算误差范围

误差范围是指点估计值与上下限之间的差值。

比例的误差范围(\(E\))用临界z值标准误计算

\(\displaystyle E = Z_{\alpha/2} \cdot \sqrt{\frac{\hat{p}(1-\hat{p})}{n}} \)

临界z值 \(Z_{\alpha/2} \) 是根据标准正态分布和置信水平计算的。

标准误 \(\sqrt{\frac{\hat{p}(1-\hat{p})}{n}} \) 是根据点估计(\(\hat{p}\))和样本量(\(n\))计算的。

在我们的例子中,样本量为30,出生在美国的诺贝尔奖获得者为6,标准误为

\(\displaystyle \sqrt{\frac{\hat{p}(1-\hat{p})}{n}} = \sqrt{\frac{0.2(1-0.2)}{30}} = \sqrt{\frac{0.2 \cdot 0.8}{30}} = \sqrt{\frac{0.16}{30}} = \sqrt{0.00533..} \approx \underline{0.073}\)

如果我们选择95%作为置信水平,则\(\alpha\)为0.05。

因此,我们需要找到临界z值 \(Z_{0.05/2} = Z_{0.025}\)

可以使用Z表或编程语言函数来找到临界z值。

示例

使用Python的Scipy Stats库的norm.ppf()函数找到\(\alpha\)/2 = 0.025的Z值

import scipy.stats as stats
print(stats.norm.ppf(1-0.025))
自己试试 »

示例

使用R的内置qnorm()函数找到\(\alpha\)/2 = 0.025的Z值

qnorm(1-0.025)
自己试试 »

使用任何一种方法,我们都可以发现临界Z值 \( Z_{\alpha/2} \) 为 \(\approx \underline{1.96} \)

标准误 \(\sqrt{\frac{\hat{p}(1-\hat{p})}{n}}\) 为 \( \approx \underline{0.073}\)

因此,误差范围(\(E\))为

\(\displaystyle E = Z_{\alpha/2} \cdot \sqrt{\frac{\hat{p}(1-\hat{p})}{n}} \approx 1.96 \cdot 0.073 = \underline{0.143}\)


5. 计算置信区间

置信区间的上下限是通过从点估计(\(\hat{p}\))中减去和加上误差范围(\(E\))来找到的。

在我们的例子中,点估计为0.2,误差范围为0.143,则

下限为

\(\hat{p} - E = 0.2 - 0.143 = \underline{0.057} \)

上限为

\(\hat{p} + E = 0.2 + 0.143 = \underline{0.343} \)

置信区间为

\([0.057, 0.343]\) or \([5.7 \%, 34.4 \%]\)

我们可以总结置信区间,如下所示

出生在美国的诺贝尔奖获得者比例的95%置信区间介于5.7%和34.4%之间


使用编程计算置信区间

可以使用许多编程语言来计算置信区间。

对于更大的数据集,使用软件和编程来计算统计量更为常见,因为手动计算会变得很困难。

示例

使用Python的scipy和math库来计算估计比例的置信区间。

这里,样本量为30,出现次数为6。

import scipy.stats as stats
import math

# 指定样本出现次数(x)、样本量(n)和置信水平
x = 6
n = 30
confidence_level = 0.95

# 计算点估计、alpha、临界z值、标准误和误差范围
point_estimate = x/n
alpha = (1-confidence_level)
critical_z = stats.norm.ppf(1-alpha/2)
standard_error = math.sqrt((point_estimate*(1-point_estimate)/n))
margin_of_error = critical_z * standard_error

# 计算置信区间的下限和上限
lower_bound = point_estimate - margin_of_error
upper_bound = point_estimate + margin_of_error

# 打印结果
print("点估计值:{:.3f}".format(point_estimate))
print("临界Z值:{:.3f}".format(critical_z))
print("误差范围:{:.3f}".format(margin_of_error))
print("置信区间:[{:.3f},{:.3f}]".format(lower_bound,upper_bound))
print("总体比例的{:.1%}置信区间为:".format(confidence_level))
print("介于{:.3f}和{:.3f}之间".format(lower_bound,upper_bound))
自己试试 »

示例

使用R的内置数学和统计函数来计算估计比例的置信区间。

这里,样本量为30,出现次数为6。

# 指定样本出现次数(x)、样本量(n)和置信水平
x = 6
n = 30
confidence_level = 0.95

# 计算点估计、alpha、临界z值、标准误和误差范围
point_estimate = x/n
alpha = (1-confidence_level)
critical_z = qnorm(1-alpha/2)
standard_error = sqrt(point_estimate*(1-point_estimate)/n)
margin_of_error = critical_z * standard_error

# 计算置信区间的下限和上限
lower_bound = point_estimate - margin_of_error
upper_bound = point_estimate + margin_of_error

# 打印结果
sprintf("点估计值:%0.3f", point_estimate)
sprintf("临界Z值:%0.3f", critical_z)
sprintf("误差范围: %0.3f", margin_of_error)
sprintf("置信区间: [%0.3f,%0.3f]", lower_bound, upper_bound)
sprintf("总体比例的 %0.1f%% 置信区间为:", confidence_level*100)
sprintf("%0.4f 到 %0.4f 之间", lower_bound, upper_bound)
自己试试 »

×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.