【问题标题】:repeated random sampling (sub population)重复随机抽样(亚群)
【发布时间】:2018-09-20 13:56:49
【问题描述】:

我想进行 400 个样本大小为 90 的重复随机抽样(即 400 个不同的抽样结果)。但是,问题变得复杂,因为 1800 (n_pop) 的总人口由 3 个不同的子人口(300、500、 1000) 每个正态分布在各自的标准差和平均值附近,如 (std_list) 和 (mean_list)。

即300 的子群体(sub_pop = 300)通常分布在标准差 40 和平均值 50 左右,依此类推。此外,样本大小中每个子群体的比例必须与我已经硬编码为 samplesize = [10, 30, 50] 的总群体 (n_pop) 中的比例成比例。

即我想要从 sub_pop 300 随机生成的样本大小为 10,从 sub_pop 500 中随机生成的样本大小为 30,依此类推。所以我在这里要做的是生成一个列表来保存 400 个大小为 90 的重复随机样本的输出。这就是我到目前为止所做的:

import numpy as np
n_pop = 1800 #total population (300+500+1000=1800)
obs_size = 90 #sample size
sub_pop = [300, 500, 1000] #sub population
samplesize = [10, 30, 50]  #sub sample size (10+30+50=90)
std_list = [40, 50, 60] #standard deviation
mean_list = [50, 60, 70] #mean

list = []
for i in range(300):
    list += np.random.normal(loc = 50, scale = 40, size = 10).tolist()

for i in range(500):
    list += np.random.normal(loc = 60, scale = 50, size = 30).tolist()

for i in range(1000):
    list += np.random.normal(loc = 70, scale = 60, size = 50).tolist()

我不确定如何将上述重复执行 400 次,然后将结果添加到列表中。

【问题讨论】:

    标签: python statistics


    【解决方案1】:

    你的代码就快到了:

    import numpy as np
    n_pop = 1800 #total population (300+500+1000=1800)
    obs_size = 90 #sample size
    sub_pop = [300, 500, 1000] #sub population
    samplesize = [10, 30, 50]  #sub sample size (10+30+50=90)
    std_list = [40, 50, 60] #standard deviation
    mean_list = [50, 60, 70] #mean
    
    all_samples = []
    for _ in range(400):
        list = []
        list += np.random.normal(loc = 50, scale = 40, size = 10).tolist()
        list += np.random.normal(loc = 60, scale = 50, size = 30).tolist()
        list += np.random.normal(loc = 70, scale = 60, size = 50).tolist()
        all_samples.append(list)
    

    您已经在 np.random 中描述了子种群,因此无需重复 300 次。

    【讨论】:

    • 非常感谢,我会检查一下!有没有更简洁的方法来做到这一点?
    • 我会将每个种群定义为具有sub_pop, std, mean,etc 属性的类,然后针对您的种群范围执行np.random.normal(loc=pop.loc, scale=pop.scale,side=pop.size).tolist() 之类的操作
    • 我有一个问题,np.random.normal 函数中是否不需要包含子种群?那么python如何识别我想从300个子群体中抽取随机样本?
    • 如果您查看文档docs.scipy.org/doc/numpy-1.13.0/reference/generated/…,则正常的函数根本不会考虑人口规模。
    猜你喜欢
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 2021-09-27
    • 2016-09-06
    • 1970-01-01
    相关资源
    最近更新 更多