У меня никогда не было курса по статистике, поэтому я надеюсь, что задаю вопрос здесь.
Предположим, у меня есть только две данные, описывающие нормальное распределение: среднее и дисперсия . Я хочу использовать компьютер для случайной выборки из этого дистрибутива, чтобы я уважал эти две статистики.σ 2
Совершенно очевидно, что я могу справиться со средним значением, просто нормализовав значение около 0: просто добавьте к каждому семплу перед его выводом. Но я не вижу, как программно генерировать образцы, чтобы уважать .σ 2
Моя программа будет на обычном языке программирования; У меня нет доступа к статистическим пакетам.
Ответы:
Если вы можете произвести выборку из заданного распределения со средним значением 0 и дисперсией 1, то вы можете легко выполнить выборку из преобразования масштаба расположения этого распределения, которое имеет среднее значение и дисперсию . Если является выборкой из среднего распределения 0 и дисперсии 1, то является выборкой со средним значением и дисперсией . Итак, все, что вам нужно сделать, это масштабировать переменную по стандартному отклонению (квадратный корень из дисперсии), прежде чем добавить среднее .μ σ2 x
Как вы на самом деле получаете симуляцию из нормального распределения со средним 0 и дисперсией 1 - это отдельная история. Интересно и интересно узнать, как реализовать такие вещи, но используете ли вы статистический пакет или язык программирования или нет, я рекомендую вам получить и использовать подходящую функцию или библиотеку для генерации случайных чисел. Если вы хотите получить совет о том, какую библиотеку использовать, вы можете добавить конкретную информацию о том, какой язык (языки) вы используете.
Редактировать: В свете комментариев, некоторых других ответов и того факта, что Fixee принял этот ответ, я приведу некоторые подробности о том, как можно использовать преобразования однородных переменных для получения нормальных переменных.
В конце концов, правильно реализованный метод не лучше, чем используемый генератор псевдослучайных чисел. Лично я предпочитаю полагаться на специальные библиотеки, которые, на мой взгляд, заслуживают доверия. Я почти всегда полагаюсь на методы, реализованные в R, либо непосредственно в R, либо через API в C / C ++. Очевидно, что это решение не для всех, но я недостаточно знаком с другими библиотеками, чтобы рекомендовать альтернативы.
источник
Это действительно комментарий к ответу Майкла Лью и комментария Фикси, но он опубликован как ответ, потому что у меня нет репутации на этом сайте, чтобы комментировать.
источник
В дополнение к ответу NRH, если у вас все еще нет средств для генерации случайных выборок из «стандартного нормального распределения» N (0,1), ниже приведен хороший и простой способ (поскольку вы упоминаете, что у вас нет статистических данных). пакет, функции ниже должны быть доступны на большинстве стандартных языков программирования).
1. Сгенерируйте u и v как два равномерно распределенных случайных числа в диапазоне от -1 до 1
u = 2 r1 - 1
иv = 2 r2 - 1
2. рассчитать,
w = u^2 + v^2
если w> 1, вернуться к 13. вернуть u * z и y = v * z с
z= sqrt(-2ln(w)/w)
примером кода будет выглядеть так:затем используйте то, что MHR предложило выше, чтобы получить случайные отклонения от
N(mu, sigma^2)
.источник
Нормальное распределение возникает, когда складывается много случайных значений одинакового распределения (я имею в виду, что они похожи друг на друга). Если сложить десять или более равномерно распределенных случайных значений, то сумма будет распределена почти нормально. (Добавьте больше десяти, если хотите, чтобы оно было еще более нормальным, но десяти достаточно для почти всех целей.)
Скажем, что ваши равномерные случайные значения равномерно распределены между 0 и 1. Сумма будет тогда между 0 и 10. Вычтите 5 из суммы, и среднее значение полученного распределения будет 0. Теперь вы разделите результат на стандартное отклонение (почти) нормальное распределение и умножьте результат на требуемое стандартное отклонение. К сожалению, я не уверен, каково стандартное отклонение суммы десяти равномерных случайных отклонений, но если нам повезет, кто-то скажет нам в комментарии!
Я предпочитаю говорить со студентами о нормальном распределении в этих терминах, потому что полезность предположения о нормальном распределении во многих системах полностью вытекает из того свойства, что суммы многих случайных влияний приводят к нормальному распределению.
источник