Создание нового списка с тем же стандартом и средним значением

Как создать новый список из случайных чисел, которые имеют то же среднее значение и стандартное отклонение, что и исходный список?

Я пробовал newlist = mean(list) + std(list)*randn(100,1); который я нашел на веб-сайте Matlab, но он генерировал несколько разные стандартные и средние значения по сравнению с оригиналом, поскольку новое среднее значение всегда больше.


person Charalampos Chaliakopoulos    schedule 15.04.2011    source источник
comment
100 баллов, вероятно, недостаточно, чтобы получить точно такое же среднее значение и стандартное отклонение. Попробуйте с большим количеством очков.   -  person mor22    schedule 15.04.2011


Ответы (2)


Хитрость заключается в том, чтобы генерировать случайные числа со средним значением 0 и стандартным отклонением 1. Мы делаем это, генерируя любые старые случайные числа, а затем фиксируя среднее значение и стандартное отклонение.

% generate your random numbers
r = randn(100, 1);

% scale the variance
r2 = r / std(r);

% shift the mean
r3 = r2 - mean(r2);

%check your answer
abs(mean(r3)) < sqrt(eps)
abs(std(r3) - 1) < sqrt(eps)

Теперь newlist = mean(list) + std(list) * r3 должен дать вам то, что вам нужно.

person Richie Cotton    schedule 15.04.2011

Извините, что отвечаю вопросом на вопрос, но я вынужден спросить...

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

Если я запускаю симуляцию Монте-Карло или что-то в этом роде, я пытаюсь выяснить, что может произойти. Если вы скорректируете свои случайные числа так, чтобы среднее значение было точно X, а стандартное отклонение было точно Y, вы уменьшите вероятность того, что ваша симуляция будет содержать экстремальное событие. В свою очередь, это означает, что меньше вероятность того, что что-то пойдет не так.

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

  1. Вы побеждаете всю цель вашей симуляции
  2. Если ваши методы настолько чувствительны, что они не будут работать, среднее значение и стандартное отклонение отклоняются на какую-то сколь угодно малую величину, это само по себе должно вам о чем-то говорить.
person richard willey    schedule 15.04.2011