重复随机抽样;样本中位数的抽样分布

时间:2018-09-15 15:29:51

标签: python matplotlib seaborn

需要反复抽样的帮助!给定人口规模,存在3个年龄组的10,000人:“ 1-10”年龄段的2000人,“ 11-20”年龄段的3000人和“ 21-30”年龄段的5000。每个年龄组的月薪通常按以下方式分配:年龄'1-10':平均值= 2000,方差= 500 ^ 2年龄'11 -20':平均值= 3000,方差= 600 ^ 2年龄'21- 30':平均值= 4000,方差= 700 ^ 2

注:样本的年龄组组成必须与人口的年龄组组成相同或接近,即“ 1-10”年龄组占样本的20%或0.2x50 =10。目标:重复进行随机从总体中抽取大小为50的样本,并找到样本中位数月薪的样本分布。说明:用400个重复的采样结果进行处理,并可视化模拟的采样分布。

这就是我所做的:

import pandas as pd
import matplotlib.pyplot as pet
import numpy as np
import seaborn as sns
sns.set()
population = 10000
repeat = 400
samplesize = 50
samplesize_list = [10, 15, 25]
label_list = ['1-10', '11-20', '21-30']
std_list = [500, 600, 700]
mean_list = [2000, 3000, 4000]
repeat_median = np.empty(repeat, dtype = float)
for j in range(Len(samplesize_list)):
    size = samplesize_list[j]
    for i in range(repeat):
        sample_data = np.random.normal(mean_list[i], std_list[i], size)
        repeat.median[I] = np.median(sample_data)
plt.subplot(len(samplesize_list), 1, j+1)
sns.distplot(repeat_median, colour = 'blue', label = label_list[j])
plt.legend(loc = "upper right")
plt.show()

不确定我的代码在哪里出错,但是我似乎无法获得想要的结果

1 个答案:

答案 0 :(得分:1)

您的代码中有很多错误。我对其进行了纠正,并在下面提供了工作代码。我没有显示定义数据的代码的初始行。我通过评论#突出显示了已修改的行。

仅需增加几个点:长度是使用len而不是Len计算的,用于指定颜色的正确拼写是color而不是colour

import matplotlib.pyplot as plt # You wrote plt as pet

for j in range(len(samplesize_list)): # Replaced Len by len
    size = samplesize_list[j]
    for i in range(repeat):
        sample_data = np.random.normal(mean_list[j], std_list[j], size) # replaced j-->i
        repeat_median[i] = np.median(sample_data) # Corrected
    plt.subplot(len(samplesize_list), 1, j+1)
    sns.distplot(repeat_median,  color='blue', label = label_list[j]) # Modified
    plt.legend(loc = "upper right")
plt.tight_layout() # Added for better adjustment of spacing

输出

enter image description here