Генерировать нормально распределенные данные из базовых данных

У меня есть данные, которые выглядят примерно так:

Hit
77.77
55.55
100
44.44

Мне нужно сгенерировать другой набор данных, используя элементы из данных, приведенных выше. Данные должны быть нормально распределены. Можно ли это сделать в excel?? Если нет, могу ли я сделать это в r? Есть ли функция R, специально предназначенная для этого? В случае R я использовал предложения из следующего обсуждения: Сгенерируйте данные, используя существующий набор данных в качестве базового набора данных PS: это относится к первому ответу и второму шагу предлагаемого решения. Я не удалял дубликаты, и у меня нет пропущенных значений в моих базовых данных.

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


person Vatsal    schedule 05.08.2019    source источник
comment
Я не уверен, что понимаю, что вы ищете. Похоже, вы хотите выбрать из четырех значений (таким образом избегая получения значений, отличных от того, что есть в моем наборе данных). Как вы согласуете это с тем, что данные должны нормально распределяться?   -  person Jon Spring    schedule 05.08.2019
comment
Согласен с @JonSpring, уточните, пожалуйста. Похоже, то, что вы хотите, невозможно...   -  person Ben Bolker    schedule 05.08.2019
comment
@JonSpring Это был просто пример. У меня есть данные, содержащие 12 наблюдений за данными. Что я пытаюсь сделать, так это создать базу данных, в которой будут взяты наблюдения из этих 12 наблюдений. Результирующие данные должны быть нормально распределены с N = 30. Когда я следовал решениям в данном обсуждении, результирующий набор данных имел значения, которые отличались от наблюдений, которые я имел в базовой базе данных. По сути, я пытаюсь сделать случайную выборку из существующего набора данных.   -  person Vatsal    schedule 05.08.2019


Ответы (1)


См. sample(), как взять образец из вектора. Например, sample(Hit, 20, replace = T) даст вам вектор длины 30, выбрав из вашего списка. Сами данные не будут «нормально распределены», но из них может возникнуть нормальное распределение, если вы повторите аддитивный процесс на основе этих данных.

Например, для данного вектора:

Hit <- c(5, 10, 42, 2, 16, 19, 23, 4)

Вы можете нарисовать 30 образцов с заменой и построить гистограмму. Это не нормальное распределение.

set.seed(42)
Hit_30 <- sample(Hit, 30, replace = T)
Hit_30
# [1]  4  4 42 23 19 16 19 10 19 19  2 19  4 42  2  4  4  5  2 16  4 10  4  4  5 16  2  4  2 23
hist(Hit_30)

введите здесь описание изображения

Нормальное распределение возникнет, если мы повторим аддитивный процесс на основе этих данных. Например, если мы возьмем среднее значение 30 выборок, а затем повторим это 10 000 раз, результаты будут распределены нормально:

Hit_30sums <- replicate(10000, mean(sample(Hit, 30, replace = T)))
hist(Hit_30sums)

введите здесь описание изображения

person Jon Spring    schedule 05.08.2019
comment
так что в основном для получения нормально распределенных данных мне нужно увеличить размер выборки данных? - person Vatsal; 05.08.2019
comment
Нет; если вы извлечете миллиард раз из исходных данных, они будут иметь те же значения и распределение, что и исходные данные. Нормальное распределение возникло бы благодаря случайному добавлению выборок из этих данных. Например, если вы возьмете сумму или среднее значение выборки и повторите это много раз. - person Jon Spring; 05.08.2019