Генерация нового списка с тем же стандартным и средним значением - PullRequest
3 голосов
/ 15 апреля 2011

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

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

Ответы [ 2 ]

2 голосов
/ 15 апреля 2011

Хитрость заключается в том, чтобы генерировать случайные числа со средним значением 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 должен дать вам то, что вам нужно.

0 голосов
/ 15 апреля 2011

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

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

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

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

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