统计学中的抽样方法及python pandas编码实践
抽样在统计学、数据科学、机器学习等领域都很重要,因为很多时候处理总体数据的成本或时间非常高,通过抽样可以大大减小数据处理的开销。
简单随机抽样
实施方法
- 给每个总体单位分配一个唯一编号。
-
通过随机数生成器选择这些编号,确保每个单位有相等的概率被选中。
import pandas as pd
import numpy as np
data = pd.DataFrame({
'CustomerID': range(1, 201),
'PurchaseAmount': np.random.normal(100, 20, 200) # Normal distribution with mean=100, std=20
})
sample_random = data.sample(n=50, random_state=1)
mean_random_sample = sample_random['PurchaseAmount'].mean()
print("Mean Purchase Amount (Random Sample):", mean_random_sample)
分层抽样
实施方法
- 将总体按照特定特征(如年龄、性别、地理位置等)划分成若干个层。
- 在每一层中随机抽取样本,通常每层的样本量根据该层在总体中的比例确定。
data['SpendingCategory'] = np.where(data['PurchaseAmount'] > 100, 'High', 'Low')
# Performing stratified sampling
sample_stratified = data.groupby('SpendingCategory', group_keys=False).apply(lambda x: x.sample(25, random_state=1))
mean_stratified_sample = sample_stratified['PurchaseAmount'].mean()
print("Mean Purchase Amount (Stratified Sample):", mean_stratified_sample)
系统抽样
实施方法
- 将总体按某种顺序排列。
- 确定一个固定的间隔 k。
- 随机选择第一个样本起点,然后按固定间隔抽取后续样本。
自举法(Bootstrap Sampling)
实施方法
- 从样本数据中随机抽取若干样本,可以重复抽取(即每个样本有可能多次被抽取)。
- 每次抽样生成一个样本集,重复这一过程以生成多个样本集。
-
通过这些样本集计算统计量,并估计其分布。
bootstrap_means = []
for _ in range(1000): # Drawing 1000 bootstrap samples
bootstrap_sample = data.sample(n=50, replace=True)
bootstrap_means.append(bootstrap_sample['PurchaseAmount'].mean())
# Calculating the mean and 95% confidence interval of bootstrapped means
mean_bootstrap = np.mean(bootstrap_means)
ci_lower, ci_upper = np.percentile(bootstrap_means, [2.5, 97.5])
print("Bootstrap Mean Purchase Amount:", mean_bootstrap)
print("95% Confidence Interval for Mean Purchase Amount:", (ci_lower, ci_upper))
来源:小寒 小寒聊python
THE END