Apakah saya membuat bias dengan menggunakan benih acak yang sama berulang kali?

31

Di hampir semua pekerjaan analisis yang pernah saya lakukan, saya menggunakan:

set.seed(42) 

Ini adalah penghormatan bagi Hitchhiker's Guide to the Galaxy . Tapi saya bertanya-tanya apakah saya membuat bias dengan menggunakan benih yang sama berulang-ulang.

Brandon Bertelsen
sumber
9
Bagaimana Anda menggunakan benih? Tergantung pada kasus penggunaan umum Anda, jawabannya berkisar dari ya hingga tidak.
Momo
Brandon, bagaimana jika orang membalas YA? Apa yang akan kamu lakukan? Saya merasa khawatir.
ttnphns
@Momo Anggap saja saya selalu mengaturnya, karena takut lupa dan tidak bisa mereproduksi hasil saya. Ini melintasi berbagai jenis pengalaman yang independen dan berbeda. Saya sangat menghargai memahami kasus ya dan tidak.
Brandon Bertelsen
@ttnphns Perlakukan itu seperti pelajaran yang dipetik?
Brandon Bertelsen
Tidak masalah untuk tujuan mereproduksi hasil, apakah itu bias atau tidak. Tetapi kecuali ukuran sampel Anda (jumlah percobaan atau pengamatan independen) yang dihasilkan di bawah benih mendekati infifnitas, beberapa bias akan tetap ada. Catat dua hal yang lebih penting: kami biasanya menggunakan generator acak semu yang mempersulit konsekuensi untuk Anda. Konsekuensinya juga tergantung pada jenis generator acak apa yang Anda gunakan (mis. Mersenne twister atau apa?). Jadi, untuk percobaan serius terhadap sesuatu yang acak, selalu lebih baik untuk mengatur seed menjadi acak.
ttnphns

Jawaban:

31

Tidak ada bias jika RNG bagus. Namun, dengan selalu menggunakan seed yang sama, Anda menciptakan saling ketergantungan yang kuat di antara semua simulasi yang Anda lakukan dalam karier Anda. Ini menciptakan jenis risiko yang tidak biasa.

  • Dengan menggunakan seed yang sama setiap kali, baik Anda selalu mendapatkan urutan pseudorandom yang cukup bagus dan semua pekerjaan Anda berjalan dengan baik atau - dengan probabilitas sangat rendah tetapi tidak nol - Anda selalu menggunakan urutan yang sangat buruk dan simulasi Anda tidak sebagai perwakilan dari distribusi yang mendasarinya seperti yang Anda pikirkan. Entah semua pekerjaan Anda cukup bagus atau semuanya sangat buruk!

  • Bandingkan ini dengan menggunakan benih awal yang benar-benar acak setiap kali. Sekali dalam waktu yang sangat lama Anda mungkin mendapatkan urutan nilai acak yang tidak mewakili distribusi yang Anda modelkan, tetapi sebagian besar waktu Anda akan baik-baik saja. Jika Anda tidak pernah mencoba mereproduksi karya Anda sendiri (dengan benih baru), maka sekali atau dua kali dalam karir Anda, Anda mungkin mendapatkan hasil yang menyesatkan, tetapi sebagian besar waktu Anda akan baik-baik saja.

Ada obat sederhana dan jelas: Selalu, selalu periksa pekerjaan Anda dengan memulai kembali dengan seed lain. Hampir mustahil bahwa dua biji secara tidak sengaja akan memberikan hasil yang menyesatkan dengan cara yang sama.

Di sisi lain, ada manfaat luar biasa dalam memiliki "benih pribadi" yang terkenal: itu menunjukkan kepada dunia Anda jujur. Cara licik dan licik untuk berbohong dengan simulasi adalah mengulanginya sampai mereka memberi Anda hasil yang telah ditentukan. Berikut ini adalah Rcontoh kerja untuk "menunjukkan" bahwa koin yang adil pun kemungkinan besar akan mendarat lebih dari separuh waktu:

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

Implikasinya bisa menarik dan penting. Misalnya, jika saya tahu sebelumnya siapa yang akan saya rekrut ke dalam uji coba terkontrol double-blind secara acak, dan dalam urutan apa (yang mungkin bisa saya kendalikan sebagai profesor universitas yang menguji sekelompok mahasiswa yang menjadi tawanan sarjana atau tikus lab), maka sebelumnya saya bisa menjalankan serangkaian simulasi untuk menemukan benih yang mengelompokkan siswa lebih yang saya sukai untuk mendukung apa pun yang saya harapkan untuk "membuktikan." Saya dapat memasukkan urutan yang direncanakan dan benih itu dalam rencana eksperimental saya sebelumnyamelakukan percobaan, dengan demikian menciptakan prosedur yang tidak bisa dilakukan oleh peninjau kritis - namun demikian, tumpukan tumpukan itu menguntungkan saya. (Saya percaya ada seluruh cabang pseudosain yang menggunakan beberapa varian trik ini untuk mendapatkan kredibilitas. Apakah Anda yakin saya benar-benar menggunakan ESP untuk mengendalikan komputer? Saya juga bisa melakukannya dari jarak dengan Anda!)

Seseorang yang benih default-nya diketahui tidak dapat memainkan game ini.

Unggulan pribadi saya adalah 17 , karena sebagian besar postingan saya membuktikan (saat ini 155 dari 161 posting yang menetapkan unggulan gunakan yang ini). Di Rdalamnya adalah benih yang sulit untuk dikerjakan, karena (ternyata) sebagian besar dataset kecil yang saya buat dengannya memiliki pencilan yang kuat. Itu bukan karakteristik yang buruk ....

whuber
sumber
5
17
4
@ Matthew Ini kembali ke sekelompok siswa sekolah menengah dengan minat yang sama dalam matematika yang mempelajari teori bilangan satu musim panas yang lalu. Satu, seingat saya, dengan bercanda mengusulkan 17 sebagai bilangan bulat pola dasar dan kelompok kami dengan cepat menemukan banyak rasionalisasi untuk ini, beberapa minat matematis dan beberapa hanya lucu (setidaknya dari sudut pandang seorang kutu buku matematika). Ada sifat-sifat matematika dan historis yang menarik dari angka ini yang memilihnya untuk diperhatikan, seperti penemuan Gauss tentang konstribilitas 17-gon. RPerilaku ini murni tidak disengaja.
whuber
4
@ Matius BTW, benih saya terkait dengan Brandon: ada tepat 42 pasang prima terpisahkan yang berbeda dari ukuran 17 atau kurang :-).
whuber
8
Saya dulu bisa membuat 17-gon dengan penggaris dan kompas sebagai trik pesta. Ya, untuk definisi yang tepat tentang pesta, kurasa ...
Matthew Drury
1
@MatthewDrury mereka membuka botol di pestamu.
Brandon Bertelsen
2

Seperti yang dinyatakan di atas, RNG yang baik tidak akan menghasilkan bias karena menggunakan benih yang sama. Namun, akan ada korelasi di antara hasilnya. (Nomor pseudo-acak yang sama akan memulai setiap perhitungan.) Apakah ini penting bukan masalah matematika.

Kadang-kadang menggunakan seed yang sama: untuk debugging atau ketika Anda tahu Anda ingin hasil yang berkorelasi.

ttw
sumber