【问题标题】:python sampling from different distributions来自不同分布的python采样
【发布时间】:2018-09-17 03:18:27
【问题描述】:

我之前可能已经问过这个问题,但问题可能不清楚。 我正在尝试通过从 3 个不同的正态分布中抽取 50 个样本大小来进行 300 次重复随机抽样,从而创建样本中位数的样本分布:

subpop1: mean = 100, std dev = 40 (14 of the 50 sample from subpop1)
subpop2: mean = 200, std dev = 70 (20 of the 50 sample from subpop2)
subpop3: mean = 300, std dev = 80 (16 of the 50 sample from subpop3)

那么我该如何解决这个问题呢?这是我到目前为止所做的:

repeat = 300
samplesize_list = [14, 20, 16] ]
std_list = [40, 70, 80]
mean_list = [100, 200, 300]
repeat_median = np.empty(repeat, dtype = float)
for j in range(len(samplesize_list)):
    size = samplesize_list[j]
    for m in range(len(mean_list)):
        mean = mean_list[m]
        for z in range(len(std_list)):
            std = std_list[m]
            for i in range(repeat): 
                sample_data = np.random.normal(mean, std, size)
                repeat_median[i] = np.median(sample_data)
sns.distplot(repeat_median, color = 'blue')
plt.show()

我不确定自己哪里出错了,就像在 Python 入门课程中一样,我需要编码方面的帮助!

【问题讨论】:

    标签: python statistics sampling


    【解决方案1】:

    我不熟悉绘图,但就数学而言:

    import random
    import numpy as np
    
    groups = [
        {'label': 'sub_one', 'mean': 100, 'std_dev': 40, 'size': 14},
        {'label': 'sub_two', 'mean': 200, 'std_dev': 70, 'size': 20},
        {'label': 'sub_three', 'mean': 300, 'std_dev': 80, 'size': 16} 
    ]
    
    def median(mean, std_dev):
        data = np.random.normal(mean, std_dev)
        get_median = np.median(data)
        return get_median
    
    
    group_all = []
    
    for i in range(300):
        for i in range(groups[0]['size']):
            group_all.append(median(groups[0]['mean'], groups[0]['std_dev']))
    
        for i in range(groups[1]['size']):
            group_all.append(median(groups[1]['mean'], groups[1]['std_dev']))
    
        for i in range(groups[2]['size']):
            group_all.append(median(groups[2]['mean'], groups[2]['std_dev']))
    
    print(len(group_all))
    
    (xenial)vash@localhost:~/python/stack_overflow$ python3.7 median.py 
    15000
    

    【讨论】:

    • 你首先了解字典吗?
    • 在该行中,我正在运行函数 median 并从列表中传递值 groups ,每个组是 dictionary,第一个是 group[0],我使用它来传递group[0]['size'] 等,然后该函数返回一个value,我在每次运行它附加一个结果后将其附加到一个名为group_one 的新列表中,我们这样做了300 次
    • 如果您不熟悉字典,我可以在没有它们的情况下复制它
    • 哦,对了,我明白了!不过我不确定一点!假设我想对 50 个样本进行 300 次重复随机抽样(包含第 1 组的 14 个、第 2 组的 20 个和第 3 组的 16 个)
    • 那么有没有办法存储我可以从中获得的样本列表?
    最近更新 更多