Почти во всей аналитической работе, которую я когда-либо делал, я использую:
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 не будет вызывать смещения при использовании того же семени. Однако между результатами будет корреляция. (Одно и то же псевдослучайное число будет запускать каждое вычисление.) Вопрос не в том, математика ли это.
Время от времени можно использовать одно и то же начальное число: для отладки или когда вы знаете, что хотите получить коррелированные результаты.