2009-11-05 4 views
11

Есть ли способ случайного генерации набора положительных чисел, чтобы они имели желаемое среднее и стандартное отклонение?Создание гауссовского распределения только с положительными номерами

У меня есть алгоритм для генерации чисел с гауссовским распределением, но я не знаю, как обращаться с отрицательными числами так, чтобы сохранить среднее и стандартное отклонение.
Похоже, что распределение пуассонов может быть хорошим приближением, но для этого требуется только среднее.

EDIT: В ответах было некоторое замешательство, поэтому я попытаюсь уточнить.

У меня есть набор чисел, которые дают мне среднее и стандартное отклонение. Я хотел бы создать набор чисел одинакового размера с эквивалентным средним и стандартным отклонением. Обычно для этого нужно использовать гауссовый дистрибутив, однако в этом случае у меня есть дополнительное ограничение, чтобы все значения были больше нуля.

Алгоритм, который я ищу, не обязательно должен быть основан на гауссовом (судя по комментариям, он, вероятно, не должен быть) и не должен быть идеальным. Не имеет значения, имеет ли результирующий набор чисел несколько другое среднее/стандартное отклонение - я просто хочу что-то, что обычно будет в футбольном поле.

+0

Возможно, это поможет, если вы сможете опубликовать алгоритм, который у вас есть. – schnaader

+3

не является гауссовым распределением по определению, также включают отрицательные числа, т. Е. Независимо от того, насколько велика (положительная) ваша средняя, ​​левый хвост всегда будет охватывать отрицательную бесконечность? – netzwerg

+0

@netzwerg: Вы правы. Вот почему я пытаюсь найти другой метод. – Whatsit

ответ

6

Возможно, вы ищете лог-нормальное распределение, как предположил Дэвид Норман, или, может быть, exponential, binomial или какой-либо другой дистрибутив. Если у вас есть алгоритм для генерации одного дистрибутива, он, вероятно, не подходит для генерации чисел, соответствующих другому дистрибутиву. Но только вы знаете, как ваши номера действительно распределены.

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

Различные распределения также имеют уникальные свойства, например, с распределением Пуассона, стандартные отклонения всегда равны среднему значению. (Вот почему ваша функция библиотеки не запрашивает параметр стандартного отклонения, а только среднее значение).

В худшем случае вы можете создать случайное действительное число между 0 и 1 и вычислить функцию плотности вероятности по своему усмотрению. (В зависимости от распределения это может быть гораздо проще сказать, чем сделать).

+0

++ Простейший способ сделать это: 1) взять журнал каждой исходной точки данных, 2) получить среднее и сигма этого, 3) генерировать гауссовские нормальные случайные числа с этим значением и сигмой и 4) принимать exp каждого числа. Результаты должны быть похожими на то, с чего вы начали. (Чтобы создать гауссовое случайное число, простой способ состоит в том, чтобы добавить 12 равномерных случайных чисел в диапазоне +/- 0,5.) –

8

Во-первых, вы не можете генерировать только положительные значения из распределения Гаусса.

Во-вторых, правильно ли я понимаю, что вы пытаетесь создать случайное распределение с заданным средним и стандартным отклонением? Будет ли какое-либо распространение? Если это так, пусть значение = m и стандартное отклонение = s. Я предполагаю, что m - s > 0.

let n = random integer modulo 2; 
if n equals 0 return m - s 
else return m + s 

Значение, возвращаемое этот процесс будет иметь среднее m и стандартное отклонение s.

+0

Я сомневаюсь, что ваше предложение удовлетворит его потребности, но Я должен дать ему +1 для интересного ответа на вопрос. При этом ваш ответ имеет недостаток: если m Mathias

+1

@Mathias: Я сделал заявление: «Я предполагаю, что' m - s> 0'. " – jason

+0

Это интересный ответ. К сожалению, в моем случае не всегда верно, что m> s. Мне также хотелось бы немного изменить вариации к сгенерированным значениям, хотя я не упоминал об этом в вопросе. +1 для нового решения. – Whatsit

1

Если вы правильно поняли, что хотите генерировать случайные числа из дистрибутива с положительной поддержкой. Есть много возможных вариантов.Наиболее простым является

хи-квадрат: http://en.wikipedia.org/wiki/Chi-square_distribution (это просто сумма двух квадратов гауссианов)

Все АСИММЕТРИЧЕСКИЙ распределение (экспоненциальный, Вейбулла, парето, Inverse Gaussian, логнормальное, Gamma)

Все дистрибутивы от косого Familly (Косонормальный, косые студент, ...)

Все вышеперечисленные функции таковы, что любое случайное число извлечь из любого из них будет ВСЕГДА быть положительным.

4

Я не мог устоять - мне очень понравился угол Джейсона, но он не был доволен, что его ответ охватывает только случаи, когда m> s, поэтому я разработал общее решение, следуя его идее.
Самое простое распределение с заданной M, S и положительных слагаемых

с вероятностью р, возвращают 0
с вероятностью (1-р), возврат м/(1-р)
где (1 -p) = м^2/(м^2 + з^2)

Доказательство для распределения X с двумя результатами lowX с вероятностью р и highX с вероятностью (1-р),
т = E [X] = px lowX + (1-p) x highX
s^2 = Отклонение (X) = E [X^2] - E [X]^2 = p x lowX^2 + (1-p) x highX^2 - m^2

Установите lowX в 0 и разрешите в highX и p.

+0

Это красиво. – jason

+0

Спасибо - учитывая дух вашего ответа, я думал, что вы оцените :) – Mathias

4

Почему бы не использовать метод передискретизации? Если у вас есть n номеров в вашем примере, просто возьмите n случайные ничьи из образца, с заменой. Результирующий набор будет иметь ожидаемое среднее значение и дисперсию примерно так же, как и исходный образец, но он обычно будет немного отличаться.

Это сказало, не зная, зачем вам нужны более случайные числа, невозможно сказать, что такое правильный ответ. Один задается вопросом, пытаетесь ли вы решить неправильную проблему ...

+1

Повторная выборка - интересное предложение. В своем первоначальном заявлении «Whatsit» не сказал, что у него есть образец, он только упомянул, что у него была средняя + разница. Опрос из образца не только повторит среднее значение и дисперсию, но и по определению будет соответствовать форме распределения ... Было бы неплохо, если Whatsit хочет запускать моделирование. – Mathias

2

Вы можете использовать любой дистрибутив, который имеет положительную поддержку И может быть задан средним значением и дисперсией. Например,

  • Однопараметрические распределения не будут работать вообще. Например, хи-квадрат не будет работать, если ваше отклонение всегда удваивает его среднее значение. Аналогично экспоненциальная функция не будет работать, если ваша дисперсия не будет равна вашему среднему квадрату.
  • В некоторых случаях некоторые двухпараметрические распределения не будут работать. Биномиальное распределение не будет работать, если дисперсия меньше вашего значения. Точно так же нецентральный хи-квадрат не будет работать, если ваше отклонение больше, чем в 2 раза больше вашего среднего значения и менее чем в 4 раза больше вашего значения!
  • Однако log-normal и гамма будут работать во всех случаях.
-5

, о чем вы говорите, клоуны? стандартная нормаль имеет ноль, но это частный случай распределения Гаусса, который имеет средние значения и стандартное отклонение. при увеличении среднего с постоянной sd вероятность генерации любых чисел ниже нуля уменьшается до нуля. вы можете получить гауссовское распределение без отрицательных чисел.

+0

Да для фиксированного sd и возрастающего среднего вероятность приближается к 0, но она никогда не 0. По дизайну логнормальное и гамма-распределения никогда не будут генерировать отрицательное число. –

+0

Пользователь хочет, чтобы средний \ sd сохранялся без отрицательных чисел, вы не можете сдвигать кривую. Log-normal - альтернативное распределение, которое можно рассмотреть – user425678

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