повторная случайная выборка (субпопуляция) - PullRequest
0 голосов
/ 20 сентября 2018

Я хочу провести 400 повторных случайных выборок (т.е. 400 различных результатов выборки) с размером выборки 90. Однако вопрос усложняется, так как общая численность населения в 1800 человек (n_pop) состоит из 3 различных подгрупп населения (300, 500,1000) каждый обычно распределен вокруг своего собственного стандартного отклонения и среднего значения, как в (std_list) & (mean_list).

, то есть субпопуляция 300 (sub_pop = 300) обычно распределена вокруг стандартного отклонения 40 и среднего значения 50и так далее.Кроме того, пропорции каждой подгруппы в объеме выборки должны быть пропорциональны пропорции в общей популяции (n_pop), которую я уже жестко закодировал как samplesize = [10, 30, 50].

т.е.нужен случайный размер выборки 10 из sub_pop 300, размер выборки 30 из sub_pop 500 и так далее.поэтому я хочу создать список для хранения 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 раз, а затем добавить результат в список.

1 Ответ

0 голосов
/ 20 сентября 2018

вы почти у цели с кодом:

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 раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...