2016-04-10 3 views
1

Я пытаюсь создать грубую модель распределения населения США для генерации случайных возрастов для выборочной совокупности со следующим изображением в качестве источника.Распределение распределения трассы для распределения по возрасту

US Population Distribution

Я чувствую, что это может быть наиболее просто моделируется трапецеидальным распределением, что не остается равномерным, пока прерывают в возрасте около 50 лет, однако, кажется, что NumPy не дает возможность использовать эту функцию распределения , Из-за этого мне было интересно, можно ли «объединить» две функции распределения (в этом случае равномерную функцию распределения с максимальным значением 50 и треугольную функцию распределения с минимумом 51 и максимум 100) , Возможно ли это, и есть ли способ прямого выражения трапецеидальной функции распределения в python?

+0

FYI: Скоро в SciPy рядом с вами: https://github.com/scipy/scipy/pull/6030 –

+0

@Warren есть все, что я могу сделать, пока следующий выпуск? – Paradoxian

ответ

1

Да, вы можете объединить образцы произвольно. Просто используйте np.concatenate

import numpy as np 
import matplotlib.pyplot as p 
%matplotlib inline 

def agedistro(turn,end,size): 
    pass 
    totarea = turn + (end-turn)/2 # e.g. 50 + (90-50)/2 
    areauptoturn = turn    # say 50 
    areasloped = (end-turn)/2  # (90-50)/2 
    size1= int(size*areauptoturn/totarea) 
    size2= size- size1 
    s1 = np.random.uniform(low=0,high=turn,size= size1) # (low=0.0, high=1.0, size=None) 
    s2 = np.random.triangular(left=turn,mode=turn,right=end,size=size2) #(left, mode, right, size=None) 
      # mode : scalar- the value where the peak of the distribution occurs. 
      #The value should fulfill the condition left <= mode <= right. 
    s3= np.concatenate((s1,s2)) # don't use add , it will add the numbers piecewise 
    return s3 

s3=agedistro(turn=50,end=90,size=1000000)  
p.hist(s3,bins=50) 
p.show() 

enter image description here

+0

Вау, это действительно полезно. Благодаря! – Paradoxian

Смежные вопросы