Как нарисовать случайные числа из нормального распределения с учетом среднего, дисперсии, асимметрии и эксцесса - PullRequest
0 голосов
/ 31 августа 2018

Я пытаюсь нарисовать случайные числа из нормального распределения с учетом среднего , дисперсии , асимметрии и эксцесса .

Моя первая попытка состояла в том, чтобы использовать функцию numpy random.normal, однако, для этой функции, насколько я понимаю, я могу передать только местоположение ( означает ) и масштаб ( std ) параметр.

Вторая попытка - извлечь случайные числа из равномерного распределения в интервале [0,1] , а затем передать их через scipy.stats.norm метод ppf. Я вижу, что scipy обладает способностью лечить асимметрию и эксцесс, однако я не могу понять, как я могу передать значения асимметрии и эксцесс в функцию.

Если проблему нужно решить совершенно другим способом, пожалуйста, дайте мне знать.

Попытка 1:

import numpy as np

def draw_normal():
    return np.random.normal(loc=0, scale=1) # how to pass skew and kurtosis (excess kurtosis) to the function 

Попытка 2

import numpy as np
from scipy.stats import norm


def draw_uniform():
    return np.random.uniform(0,1)

def draw_normal_alt():
    return norm.ppf(draw_uniform(),loc=0, scale=1) #how to pass skew and kurtosis (excess kurtosis) to func

1 Ответ

0 голосов
/ 31 августа 2018

То, что вы хотите, больше не является нормальным распределением. Вы должны посмотреть на другие виды дистрибутивов.
Обратите внимание, что существует много распределений с одинаковым средним, дисперсией, асимметрией и эксцессом.
Для функции python, которая генерирует то, что вы хотите, см. this .

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