Почти во всей аналитической работе, которую я когда-либо делал, я использую:
set.seed(42)
Это дань уважения Путеводителю Автостопом по Галактике . Но мне интересно, создаю ли я смещение, используя одно и то же семя снова и снова.
Почти во всей аналитической работе, которую я когда-либо делал, я использую:
set.seed(42)
Это дань уважения Путеводителю Автостопом по Галактике . Но мне интересно, создаю ли я смещение, используя одно и то же семя снова и снова.
Ответы:
Нет предвзятости, если ГСЧ это хорошо. Однако, всегда используя одно и то же семя, вы создаете сильную взаимозависимость между всеми симуляциями, которые вы выполняете в своей карьере. Это создает необычный вид риска.
Используя каждый раз одно и то же начальное число, либо вы всегда получаете довольно хорошую псевдослучайную последовательность, и вся ваша работа идет хорошо, либо - с очень низкой, но ненулевой вероятностью - вы всегда используете довольно плохую последовательность, и ваши симуляции не как представитель основных дистрибутивов, как вы думаете, они могут быть. Либо вся ваша работа довольно хорошая, либо вся она довольно паршивая!
Сравните это с использованием действительно случайных стартовых семян каждый раз. Однажды очень долго вы можете получить последовательность случайных значений, которая не является репрезентативной для распределения, которое вы моделируете, но большую часть времени у вас все будет в порядке. Если вы никогда не пытались воспроизвести свою собственную работу (с новым семенем), то один или два раза в вашей карьере вы можете получить вводящие в заблуждение результаты, но в подавляющем большинстве случаев вы будете в порядке.
Существует простое и очевидное лекарство: всегда, всегда проверяйте свою работу, перезапускаясь с другим семенем. Практически невозможно, чтобы два семени случайно дали обманчивые результаты таким же образом.
С другой стороны, есть необычайная заслуга в том, чтобы иметь хорошо известное «личное семя»: оно показывает миру, что вы честны. Хитрый, тонкий способ лгать с симуляциями - повторять их, пока они не дадут вам заранее определенный результат. Вот рабочий R
пример, чтобы «продемонстрировать», что даже честная монета с высокой вероятностью будет попадать в головы более половины времени:
n.flips <- 100
seeds <- 1:10^3
#
# Run some preliminary simulations.
#
results <- sapply(seeds, function(seed) {
set.seed(seed)
mean(runif(n.flips) > 1/2)
})
#
# Now do the "real" simulation.
#
seed <- seeds[which.max(results)]
set.seed(seed)
x <- mean(runif(n.flips) > 1/2)
z <- (x - 1/2) * 2 * sqrt(n)
cat("Mean:", x, "Z:", z, "p-value:", pnorm(z, lower.tail=FALSE), "\n")
Последствия могут быть увлекательными и важными. Например, если я заранее знал, кого я буду привлекать к рандомизированному двойному слепому контролируемому испытанию, и в каком порядке (который я мог бы контролировать, как профессор университета, тестирующий группу студентов-выпускников или лабораторных крыс), то заранее я мог провести такой набор симуляций, чтобы найти семя, которое группирует студентов больше по моему вкусу, чтобы отдать предпочтение тому, что я надеялся «доказать». Я мог бы включить запланированный заказ и это семя в свой экспериментальный план допроведение эксперимента, тем самым создавая процедуру, которую ни один критический рецензент не мог бы привлечь к ответственности, но тем не менее складывая колоду в мою пользу. (Я полагаю, что есть целые ветви лженауки, которые используют какой-то вариант этого трюка, чтобы завоевать доверие. Вы поверите, что я на самом деле использовал ESP для управления компьютером? Я тоже могу сделать это на расстоянии от вас!)
Кто-то, чье семя по умолчанию известно, не может играть в эту игру.
Мое личное семя - 17 , что подтверждается большой долей моих постов (в настоящее время 155 из 161 поста, которые устанавливают семя, используют это). С R
ним трудно работать, потому что (как выясняется) большинство небольших наборов данных, которые я создаю, имеют сильный выброс. Это не плохая характеристика ...
R
Поведение чисто случайное.
Как указано выше, хороший RNG не будет вызывать смещения при использовании того же семени. Однако между результатами будет корреляция. (Одно и то же псевдослучайное число будет запускать каждое вычисление.) Вопрос не в том, математика ли это.
Время от времени можно использовать одно и то же начальное число: для отладки или когда вы знаете, что хотите получить коррелированные результаты.