Создаю ли я смещение, используя одно и то же случайное семя снова и снова?


31

Почти во всей аналитической работе, которую я когда-либо делал, я использую:

set.seed(42) 

Это дань уважения Путеводителю Автостопом по Галактике . Но мне интересно, создаю ли я смещение, используя одно и то же семя снова и снова.


9
Как вы используете семена? В зависимости от вашего типичного варианта использования ответ варьируется от да до нет.
Момо

Брэндон, что если люди ответят тебе ДА? Что ты бы сделал? Я боюсь
ttnphns

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

@ttnphns Рассматривать это как урок?
Брэндон Бертельсен

Это нормально для целей воспроизведения результатов, независимо от того, являются ли они предвзятыми или нет. Но если размер вашей выборки (количество независимых экспериментов или наблюдений), произведенных под этим семенем, не приблизится к бесконечности, некоторое смещение будет сохраняться. Обратите внимание на еще две важные вещи: мы обычно используем псевдослучайные генераторы, что усложняет для вас последствия. Последствия также зависят от того, какой тип генератора случайных чисел вы используете (например, твистер Мерсенна или что?). Таким образом, для серьезных испытаний чего-то случайного всегда лучше установить начальное значение в случайное.
ttnphns

Ответы:


31

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

  • Используя каждый раз одно и то же начальное число, либо вы всегда получаете довольно хорошую псевдослучайную последовательность, и вся ваша работа идет хорошо, либо - с очень низкой, но ненулевой вероятностью - вы всегда используете довольно плохую последовательность, и ваши симуляции не как представитель основных дистрибутивов, как вы думаете, они могут быть. Либо вся ваша работа довольно хорошая, либо вся она довольно паршивая!

  • Сравните это с использованием действительно случайных стартовых семян каждый раз. Однажды очень долго вы можете получить последовательность случайных значений, которая не является репрезентативной для распределения, которое вы моделируете, но большую часть времени у вас все будет в порядке. Если вы никогда не пытались воспроизвести свою собственную работу (с новым семенем), то один или два раза в вашей карьере вы можете получить вводящие в заблуждение результаты, но в подавляющем большинстве случаев вы будете в порядке.

Существует простое и очевидное лекарство: всегда, всегда проверяйте свою работу, перезапускаясь с другим семенем. Практически невозможно, чтобы два семени случайно дали обманчивые результаты таким же образом.

С другой стороны, есть необычайная заслуга в том, чтобы иметь хорошо известное «личное семя»: оно показывает миру, что вы честны. Хитрый, тонкий способ лгать с симуляциями - повторять их, пока они не дадут вам заранее определенный результат. Вот рабочий 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")

11061007550p=0.000004

Последствия могут быть увлекательными и важными. Например, если я заранее знал, кого я буду привлекать к рандомизированному двойному слепому контролируемому испытанию, и в каком порядке (который я мог бы контролировать, как профессор университета, тестирующий группу студентов-выпускников или лабораторных крыс), то заранее я мог провести такой набор симуляций, чтобы найти семя, которое группирует студентов больше по моему вкусу, чтобы отдать предпочтение тому, что я надеялся «доказать». Я мог бы включить запланированный заказ и это семя в свой экспериментальный план допроведение эксперимента, тем самым создавая процедуру, которую ни один критический рецензент не мог бы привлечь к ответственности, но тем не менее складывая колоду в мою пользу. (Я полагаю, что есть целые ветви лженауки, которые используют какой-то вариант этого трюка, чтобы завоевать доверие. Вы поверите, что я на самом деле использовал ESP для управления компьютером? Я тоже могу сделать это на расстоянии от вас!)

Кто-то, чье семя по умолчанию известно, не может играть в эту игру.

Мое личное семя - 17 , что подтверждается большой долей моих постов (в настоящее время 155 из 161 поста, которые устанавливают семя, используют это). С Rним трудно работать, потому что (как выясняется) большинство небольших наборов данных, которые я создаю, имеют сильный выброс. Это не плохая характеристика ...


5
17

4
@ Matthew Это восходит к группе школьников с общим интересом к математике, которые изучали теорию чисел давным-давно. Один, насколько я помню, в шутку предложил 17 в качестве архетипического целого числа, и наша группа быстро нашла для этого множество объяснений, некоторые из которых представляли собой математический интерес, а некоторые - просто с юмором (по крайней мере, с точки зрения математического ботаника). Есть интересные математические и исторические свойства этого числа, которые выделяют его для внимания, такие как открытие Гауссом конструктивности 17-гонов. RПоведение чисто случайное.
whuber

4
@ Матвей Кстати, мое семя связано с Брэндоном: есть ровно 42 упорядоченные пары различных целых простых чисел размером 17 или меньше :-).
whuber

8
Я имел обыкновение строить 17-гон с линейкой и компасом как трюк для вечеринки. Ну, для правильного определения партии я думаю ...
Мэтью Друри

1
@MatthewDrury, они надувают бутылки на твоей вечеринке.
Брэндон Бертельсен

2

Как указано выше, хороший RNG не будет вызывать смещения при использовании того же семени. Однако между результатами будет корреляция. (Одно и то же псевдослучайное число будет запускать каждое вычисление.) Вопрос не в том, математика ли это.

Время от времени можно использовать одно и то же начальное число: для отладки или когда вы знаете, что хотите получить коррелированные результаты.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.