今天给大家分享统计学中的一个关键知识点,抽样。
抽样是指从一个大的总体中选取一个小的子集(即样本)的过程,以便推断或估计总体的一些特征或参数。
由于在很多实际问题中,我们无法对整个总体进行全面的研究,抽样为我们提供了一种通过样本推断总体特征的方法。
通过合理的抽样,可以减少研究的成本和时间,同时尽可能地保留对总体特征的代表性。
抽样的基本概念
- 总体
总体是指所有感兴趣的个体或元素的集合,通常是一个非常大的群体。
例如,某个国家的所有公民、所有产品的质量数据等。 - 样本
样本是从总体中选取的一个子集。 - 抽样方法
抽样方法是决定如何从总体中选取样本的规则和步骤。不同的抽样方法有不同的特性和适用场景。
抽样的基本流程
- 定义总体
首先,需要明确研究的对象,即总体。总体可以是一个具体的人群、物品或事件集合。 - 确定抽样目标
明确研究的目的和需要分析的总体特征。抽样的目的是通过样本来估计总体的某些统计量(如均值、方差等)。 - 选择抽样方法
根据研究的需要和总体的特点,选择合适的抽样方法。 - 抽取样本
根据选定的抽样方法,从总体中抽取样本。 - 数据收集和分析
对样本进行数据收集和分析,通过统计方法推断总体的特征。
抽样的类型
抽样方法可以分为两大类:概率抽样和非概率抽样。
概率抽样
在概率抽样中,每个个体有已知的、非零的概率被选中。
概率抽样的优点是可以确保样本的代表性,并且结果可以通过概率理论进行推断,具备更高的统计可靠性。
常见的概率抽样方法包括:
简单随机抽样
在简单随机抽样中,每个总体中的个体都有相同的概率被选中,且每次选择都不依赖于之前的选择。通过这种方法,样本具有最大的代表性。
特点:每个个体被选择的概率相等。
优点:统计推断简单,易于理解;样本选择过程简单,操作性强。
缺点:如果总体很大,简单随机抽样可能不够高效,可能会需要很大的样本量来得到可靠的结果。
import numpy as np
import pandas as pd
# 创建一个示例数据集
data = pd.DataFrame({
'id': np.arange(1, 101), # 100个样本
'value': np.random.randint(1, 100, size=100)
})
# 简单随机抽样,抽取10个样本
sample = data.sample(n=10, random_state=42)
print("简单随机抽样结果:")
print(sample)
系统抽样
系统抽样是一种通过从总体中选取第一个个体后,然后按照一定的间隔(例如每隔k个个体)抽取样本。适用于总体有规律性或排序的数据。
步骤
- 将总体按某种顺序排列。
- 从中随机选取一个起点。
- 然后按照固定间隔(如每隔k个个体)进行选择。
优点:比简单随机抽样更容易操作,尤其是当总体是一个顺序排列的列表时。
缺点:如果总体本身有某种周期性或规律,可能导致抽样偏差(例如,如果总体中有某种周期性的模式,可能使样本选择结果不具代表性)。
# 系统抽样,抽取每第10个样本
k = 10
sample = data.iloc[::k, :]
print("系统抽样结果:")
print(sample)
分层抽样
分层抽样是一种先将总体划分为不同的层(或群体),然后从每个层中独立抽取样本的抽样方法。
适用于每一层内部具有相似性,但层与层之间的个体差异较大。
步骤:
- 将总体根据某些特征(如年龄、性别、收入等)划分为不同的层。
- 从每个层中抽取一定数量的样本。
优点:比简单随机抽样更加精确,尤其是在层内部变异性较小的情况下。
缺点:如果层划分不当,可能会导致抽样偏差。
import numpy as np
import pandas as pd
from sklearn.model_selection import StratifiedShuffleSplit
# 创建一个示例数据集
np.random.seed(42)
data = pd.DataFrame({
'id': np.arange(1, 101), # 100个样本
'value': np.random.randint(1, 100, size=100),
'category': np.random.choice(['A', 'B'], size=100) # 分为两类:A 和 B
})
# 分层抽样,按 category 列进行分层
split = StratifiedShuffleSplit(n_splits=1, test_size=0.1, random_state=42)
for train_index, test_index in split.split(data, data['category']):
stratified_sample = data.iloc[test_index]
print("分层抽样结果:")
print(stratified_sample)
整群抽样
在整群抽样中,总体被划分为若干个群体(clusters),然后从这些群体中随机选取一些群体,再从选中的群体中抽取样本。
步骤:
- 将总体划分为若干个群体。
- 随机选择若干个群体。
- 从这些群体中抽取样本。
优点:适用于总体分布较广、无法全面列举每个个体的情况。
缺点:可能导致抽样误差较大。
import numpy as np
import pandas as pd
# 创建一个示例数据集
data = pd.DataFrame({
'id': np.arange(1, 101), # 100个样本
'value': np.random.randint(1, 100, size=100),
'cluster': np.random.choice([1, 2, 3, 4, 5], size=100) # 5个群组
})
# 整群抽样,抽取2个群组
selected_clusters = np.random.choice(data['cluster'].unique(), size=2)
cluster_sample = data[data['cluster'].isin(selected_clusters)]
# 输出抽取2个群组中的所有样本
print("整群抽样结果:")
print(cluster_sample)
多阶段抽样
多阶段抽样结合了上述几种抽样方法,通常在复杂的抽样框架中使用。可以通过不同阶段逐步抽取样本。
步骤:
- 第一级:采用某种抽样方法(如整群抽样)选取样本。
- 第二级:在已选中的群体中,使用不同的抽样方法(如简单随机抽样)进一步抽取样本。
优点:适用于较大且复杂的总体;灵活性高,能够结合不同的方法来满足需求。
缺点:复杂的设计和计算过程,可能增加误差。
非概率抽样
在非概率抽样中,样本的选取不依赖于随机选择,因此样本可能不具有完全的代表性。
虽然非概率抽样方法常用于探索性研究,但它的统计推断效果较差。
常见的非概率抽样方法包括:
方便抽样
研究者选择方便获得的样本进行研究,适用于初步调查,但可能存在严重的偏差。
优点:节省时间和资源,适合初步探索性的研究。
缺点:样本偏差较大,难以推断到整个群体。
判断抽样
判断抽样,也叫专家抽样,是根据研究者的判断或经验来选择样本。
在这种方法中,研究人员选择他们认为对研究最有代表性或最重要的个体或单位。
优点:快速且成本较低,适用于非常具体或少数的目标群体。
缺点:主观偏差较大,可能导致结果不具备普遍性。
配额抽样
将总体分成若干个类别,然后按比例选择每个类别中的样本,直到达到预定的样本数量。
这种方法在没有完全随机抽样的情况下,能够保证某些群体的代表性,但依然存在偏倚。
优点:可以确保样本中各子群体的比例符合研究的目标群体特征。
缺点:样本依然可能存在偏差,因为选择是人为控制的,且每个组内部的选择可能存在主观判断。
雪球抽样
滚雪球抽样是一种常用于难以接触到的群体(如特殊兴趣群体或少数群体)的非概率抽样方法。
在这种方法中,研究人员首先选择少数初始样本,然后通过这些初始样本推荐或引导其他样本,以此类推,样本逐渐增加,像滚雪球一样扩大样本量。
优点:对于难以接触的群体特别有效,能够帮助研究者找到难以触及的样本。
缺点:结果可能产生样本偏倚,因为个体的推荐可能不具有代表性,且群体内的相似性可能导致样本不足以代表总体。