동일한 무작위 시드를 반복해서 사용하여 편견을 만들고 있습니까?


31

내가 한 거의 모든 분석 작업에서 다음을 사용합니다.

set.seed(42) 

Hitchhiker 's Guide to the Galaxy에 경의를 표합니다 . 그러나 동일한 시드를 반복해서 사용하여 편견을 만들고 있는지 궁금합니다.


9
씨앗은 어떻게 사용합니까? 일반적인 사용 사례에 따라 대답 범위는 예에서 아니요입니다.
Momo

브랜든, 사람들이 당신에게 대답한다면? 무엇을 하시겠습니까? 나는 불안감을 느낀다.
ttnphns

@Momo 잊어 버리고 결과를 재현 할 수 없다는 두려움 때문에 항상 설정했다고 가정 해 봅시다. 이것은 독립적이고 다른 유형의 실험에 걸쳐 있습니다. 예와 아니오를 모두 이해해 주셔서 감사합니다.
Brandon Bertelsen

@ttnphns 배운 교훈처럼 취급?
Brandon Bertelsen

편향 여부에 관계없이 결과를 재현하는 것이 좋습니다. 그러나 해당 시드에서 생성 된 표본 크기 (독립 실험 또는 관찰 횟수)가 50에 가까워지지 않으면 일부 편차가 지속됩니다. 두 가지 중요한 점에 유의하십시오. 일반적으로 의사 난수 발생기를 사용하여 결과를 복잡하게 만듭니다. 결과는 사용하는 임의 유형의 임의 생성기 (예 : Mersenne 트위스터 또는 무엇)에 따라 달라집니다. 따라서 무작위로 심각한 시험을하려면 종자를 무작위로 설정하는 것이 좋습니다.
ttnphns

답변:


31

RNG가 좋은 경우 편견이 없습니다. 그러나 항상 같은 시드를 사용함으로써 경력에서 수행하는 모든 시뮬레이션간에 강력한 상호 의존성을 만듭니다. 이것은 특별한 종류의 위험을 만듭니다.

  • 매번 같은 시드를 사용하면 항상 멋진 의사 난수 시퀀스를 얻을 수 있으며 모든 작업이 잘 진행되거나 매우 낮지 만 0이 아닌 확률로 항상 꽤 나쁜 시퀀스를 사용하고 시뮬레이션은 그렇지 않습니다. 당신이 생각하는 기본 배포판을 대표합니다. 모든 작업이 꽤 좋거나 모두 대충 엉망입니다!

  • 매번 진정으로 무작위로 시작하는 씨앗을 사용하는 것과 대조하십시오. 아주 오래 동안 모델링하고있는 분포를 나타내지 않는 임의의 값을 얻을 수 있지만 대부분은 괜찮을 것입니다. 만약 당신이 (새로운 씨앗으로) 자신의 작품을 재현하려고 시도하지 않았다면, 당신의 경력에서 한두 번 오해의 소지가있는 결과를 얻을 수 있지만 대부분의 시간은 괜찮을 것입니다.

간단하고 확실한 치료법이 있습니다. 항상 다른 시드로 다시 시작하여 항상 작업을 확인하십시오. 실수로 두 씨앗이 같은 방식으로 오도하는 결과를 낳는 것은 사실상 불가능합니다.

반면에 잘 알려진 "개인 종자"는 특별한 장점 이 있습니다. 정직한 세상을 보여줍니다. 시뮬레이션에 거짓말을하는 교묘하고 미묘한 방법은 미리 결정된 결과가 나올 때까지 반복하는 것입니다. 다음 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")

더 넓은 범위의 씨앗 ( 에서 )을 살펴보면, 나는 선천적 인 것을 찾을 수있었습니다 : 218134. 이것을 씨앗으로 시작할 때, 시뮬레이션 된 동전 뒤집기가 머리를 나타냅니다 ! 이는 예상 값 과 크게 다릅니다 ( ).10 6 100 75 50 P = 0.00000411061007550p=0.000004

그 의미는 매혹적이고 중요 할 수 있습니다. 예를 들어, 무작위 이중 맹검 대조 시험에 누가 모집 할 것인지, 그리고 어떤 순서로 (포로 학부 또는 실험실 쥐 그룹을 테스트하는 대학 교수로 통제 할 수 있는지) 미리 알 수 있다면 사전에 나는 "증명하기"를 원하는 것을 선호하기 위해 학생들을 그룹화하는 씨앗을 찾기 위해 이러한 일련의 시뮬레이션을 실행할 수있었습니다. 나는 계획 순서와 내 실험 계획에 그 씨앗 포함 할 수 있습니다 전에를실험을 수행함으로써 비판적 검토자가 절대로 탄핵 할 수없는 절차를 만들었지 만 그럼에도 불구하고 갑판을 쌓아 두었습니다. (신뢰를 얻기 위해이 트릭의 일부 변형을 사용하는 의사 과학의 모든 부분이 있다고 생각합니다. 실제로 컴퓨터를 제어하기 위해 ESP를 사용했다고 생각하십니까? 나도 당신과 함께 할 수 있습니다!)

기본 시드가 알려진 사람은이 게임을 할 수 없습니다.

내 개인 씨앗은 17 이며 많은 게시물이 증명합니다 (현재 씨앗을 설정하는 161 개의 게시물 중 155 개가 이것을 사용합니다). 에 R이 (가 밝혀으로) 내가 그것으로 만드는 가장 작은 데이터 세트가 강한 특이점을 가지고 있기 때문에, 작업 할 어려운 씨앗입니다. 그것은 나쁜 특성이 아닙니다 ....


5
17

4
@Matthew 1 년 전 여름에 수 이론을 공부하던 수학에 관심을 갖고있는 고등학생 그룹으로 돌아갑니다. 하나는 내가 기억 하듯이 농담으로 17을 고전적 정수로 제안했고 우리 그룹은 이것에 대한 많은 합리화를 발견했습니다. 17-gon의 시공성에 대한 Gauss의 발견과 같이이 수의 주목할만한 수학적 및 역사적 속성이 있습니다. R의 행동은 순전히 우연입니다.
whuber

4
@ Matthew BTW, 내 씨앗은 Brandon의 것과 관련이 있습니다. 크기가 17 이하인 별개의 완전한 소수의 정확히 42 쌍이 있습니다 :-).
whuber

8
나는 파티 트릭으로 통치자와 나침반으로 17-gon을 만들 수있었습니다. 음, 오른쪽 정의에 대한 같아요 ...
매튜 드 루리

1
@ MatthewDrury 그들은 파티에서 병을 팝핀합니다.
Brandon Bertelsen

2

위에서 언급했듯이, 좋은 RNG는 동일한 시드를 사용하여 바이어스를 생성하지 않습니다. 그러나 결과 간에는 상관 관계가 있습니다. (같은 의사 난수는 각 계산을 시작합니다.) 이것이 중요한지 수학의 문제가 아닌지.

같은 시드를 사용하는 것이 좋습니다 : 디버깅을 위해 또는 상관 된 결과를 원할 때.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.