“Обратная” статистика: генерация данных на основе среднего и стандартного отклонения

Наличие набора данных и вычисление статистики от него легки. Как насчет наоборот?

Скажем, я знаю, что некоторая переменная имеет среднее число X, стандартное отклонение Y, и предположите, что это имеет нормальное (Гауссово) распределение. Каков был бы лучший способ генерировать "случайный" набор данных (произвольного размера), который будет соответствовать распределению?

Править: Это отчасти разрабатывает из этого вопроса; я мог сделать что-то на основе того метода, но я задаюсь вопросом, существует ли более эффективный способ сделать это.

13
задан Community 23 May 2017 в 11:54
поделиться

6 ответов

Вы можете сгенерировать стандартные нормальные случайные величины с помощью метода Бокса-Мюллера . Затем, чтобы преобразовать это, чтобы получить среднюю мю и сигму стандартного отклонения, умножьте ваши выборки на сигму и добавьте мю. Т.е. для каждого z из стандартной нормали вернуть mu + sigma * z.

12
ответ дан 1 December 2019 в 20:56
поделиться

Вы могли бы сделать это своего рода симуляцией Монте-Карло. Начните с широкого случайного «допустимого диапазона» и создайте несколько действительно случайных значений. Проверьте свою статистику и убедитесь, что среднее значение и дисперсия отключены. Отрегулируйте «допустимый диапазон» для случайных значений и добавьте еще несколько значений. Повторяйте до тех пор, пока не будете удовлетворены и ваши требования, и размер вашей выборки населения.

Просто подумайте, дайте мне знать, что вы думаете. : -)

1
ответ дан 1 December 2019 в 20:56
поделиться

Приведу пример с использованием R и 2-го алгоритма из списка здесь.

X<-4; Y<-2 # mean and std
z <- sapply(rep(0,100000), function(x) (sum(runif(12)) - 6) * Y + X)

plot(density(z))
> mean(z)
[1] 4.002347

> sd(z)
[1] 2.005114

> library(fUtilities)

> skewness(z,method ="moment")
[1] -0.003924771
attr(,"method")
[1] "moment"

> kurtosis(z,method ="moment")
[1] 2.882696
attr(,"method")
[1] "moment"
2
ответ дан 1 December 2019 в 20:56
поделиться

Это очень легко сделать в Excel с помощью функции norminv(). Пример:

=norminv(rand(), 100, 15)

создаст значение из нормального распределения со средним значением 100 и среднеквадратичным значением 15 (IQ человека). Перетащите эту формулу вниз по столбцу, и у вас будет столько значений, сколько вы захотите.

8
ответ дан 1 December 2019 в 20:56
поделиться

Существует несколько методов генерации гауссовских случайных величин. Стандартный метод - Box-Meuller, о котором упоминалось ранее. Немного более быстрая версия находится здесь:

http://en.wikipedia.org/wiki/Ziggurat_algorithm

Вот ссылка в Википедии по генерации гауссовских переменных

http://en.wikipedia.org/wiki/Normal_distribution #Generating_values_from_normal_distribution

2
ответ дан 1 December 2019 в 20:56
поделиться

Легко создать набор данных с нормальным распределением (см. http://en.wikipedia.org/wiki/Box%E2%80%93Muller_transform ).
Помните, что сгенерированный образец не будет иметь точного распределения N (0,1)! Вам нужно стандартизировать его - вычтите среднее значение, а затем разделите на стандартное отклонение. Затем вы можете преобразовать этот образец в нормальное распределение с заданными параметрами: умножить на стандартное отклонение, а затем добавить среднее значение.

0
ответ дан 1 December 2019 в 20:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: