Генерация эмпирического / определенного пользователем распределения с желаемым средним и стандартным значением
Я сгенерировал распределение спроса на основе фактических данных о спросе за один год. Это распределение ненормально или похоже на любые теоретические распределения. Я использую это эмпирическое распределение спроса для имитационного исследования.
In current empirical distribution:
mean = 1000
std = 600
Coefficient of variation (CV) = 0.6
Я хочу опираться на текущую модель / форму эмпирического распределения в качестве базового варианта для создания четырех дополнительных распределений.
dist1: Low volume, low variation -> mean:500, std:150, CV:0.3
dist2: Low volume, high variation -> mean:500, std:665, CV:1.33
dist3: High volume, low variation -> mean:2000, std:600, CV:0.3
dist4: High volume, high variation -> mean:2000, std:2660, CV:1.33
главная цель для этого состоит в том, чтобы исследовать, как изменения в объеме спроса и изменении спроса могут повлиять на моделируемую систему. Статистически возможно создать такие дистрибутивы (dist1-4 выше), или я должен перейти на нормальное распределение?
1 ответ
Ваша проблема недостаточно конкретизирована, но может быть достаточно применить соответствующую линейную функцию к вашему распределению.
поскольку E(aX+b) = aE(X) + b
а также StDev(aX+b) = |a|StDev(X)
, вы можете выбрать a
а также b
так что вы получите заданные целевые параметры.
Предположим, что у вас есть функция f()
который генерирует значения со средним 1000 и стандартным отклонением 600. Следующее определение будет генерировать случайные числа со средним m
и стандартное отклонение s
:
g(m,s) = (s/600)*f()+m-5*s/3
Быстрый тест в R:
> f <- function() rnorm(1,1000,600) #mock empirical f()
> g <- function(m,s) (s/600)*f()+m-5*s/3
> x <- replicate(1000,g(2000,300))
> mean(x)
[1] 1988.719
> sd(x)
[1] 300.7044