Referensi dan Praktik terbaik untuk menyetel benih di Generasi Angka Acak pseudo

11

Dalam dokumen ini , yang berkaitan dengan perintah "set seed", orang-orang Stata mendiskusikan masalah yang terkait dengan pengaturan benih ketika menghasilkan angka pseudo-acak.

Yang penting "jangan" adalah "jangan gunakan secara berurutan urutan bilangan asli sebagai biji, karena ini memiliki pola dan membahayakan keacakan semu".

Satu-satunya "do" bercanda seperempat bercanda , adalah untuk menetapkan hanya satu benih selama masa hidup Anda , dan kemudian merekam "keadaan" dari proses yang dihasilkan pada akhir setiap percobaan, sehingga percobaan berikutnya akan berlanjut pada titik dimana proses telah berhenti.

Jelas, saran di atas tergantung pada jumlah yang diharapkan dari angka pseudo-acak yang akan dihasilkan dalam penelitiannya seumur hidup. Mungkin twister Mersenne akan memenuhi kebutuhan seumur hidup banyak peneliti ...

Sekarang, saya tidak terlalu berpengalaman mengenai PRNG dalam teori atau dalam praktik, jadi saya tidak dapat berdebat tentang saran-saran ini - mereka harus terbukti valid atau tidak valid dengan alasan teoretis dan statistik matematika yang keras.

Jadi, pertanyaan saya adalah

1) Dapatkah Anda membantu menjelaskan atau membatalkan saran yang diberikan di atas, atau menunjuk ke referensi yang berkaitan dengan masalah seperti itu?

2) Dapatkah Anda memberikan referensi yang menawarkan "praktik terbaik" dalam menetapkan benih?

3) Bagaimana Anda melakukannya dalam pekerjaan Anda sendiri, dan mengapa?

mnPRNGmnmn

Utas terkait (meskipun jauh lebih fokus) adalah
Menetapkan seed sebelum setiap blok kode atau sekali per proyek?

Saya merasa ini mungkin harus menjadi komunitas wiki, para mod harap putuskan.

Alecos Papadopoulos
sumber
4
Halaman manual Stata itu membuat asumsi implisit penting tentang mengapa seseorang menggunakan seed. Alasan utama saya menggunakan benih (dalam posting saya di CV) adalah untuk membuat contoh yang dapat direproduksi. Untuk menunjukkan bahwa saya belum mengutak-atik benih sampai contohnya sesuai dengan keinginan saya (!), Saya (hampir) selalu menggunakan benih yang sama. Ini sangat bertentangan dengan saran Stata karena saya memiliki tujuan yang berbeda dari yang seharusnya ada dalam pikiran mereka (yang tidak disebutkan). Moral di sini adalah bahwa praktik terbaik bergantung pada tujuannya.
whuber
@whuber Perasaan saya adalah bahwa saran yang diberikan dalam dokumen yang saya sebutkan bertujuan untuk menjaga "keacakan" dan reproduksibilitas dari seri yang digunakan (melalui rekaman "keadaan" dari proses, seperti yang mereka katakan). Sasaran-sasaran ini nampak layak untuk diupayakan dalam pengaturan apa pun, apa pun tujuan penelitian, bukan?
Alecos Papadopoulos
1
Tentu mereka berharga - tetapi itu tidak membenarkan membuat mereka menjadi "dos" dan "tidak boleh dilakukan" sebagaimana diungkapkan oleh halaman manual itu. Masalah dengan diktta yang tidak kategorikal tersebut adalah bahwa orang lain - seperti pengacara - akan dituntun untuk berpikir bahwa setiap praktik yang bertentangan secara inheren salah, terlepas dari tujuan atau keadaan. Penting untuk meninggalkan ruang untuk penilaian dalam praktik statistik! Secara khusus, marilah kita tidak mengacaukan rekomendasi untuk penggunaan perangkat lunak dengan "praktik terbaik."
whuber
@whuber Fakta bahwa saya menggunakan "stimulus" dokumen yang ditautkan ke perangkat lunak tertentu tidak menjadikan pertanyaan saya tentang "rekomendasi untuk penggunaan perangkat lunak". Pertanyaan-pertanyaan yang diajukan jelas tentang kebijakan yang digunakan oleh para peneliti dalam melakukan penelitian statistik , jadi saya melihat tidak ada yang membingungkan di sini.
Alecos Papadopoulos
3
Anggap PRNG Anda baik, mengapa mengatur benih dengan pola membuat perbedaan, bukankah itu inti dari PRNG?
purple51

Jawaban:

3

Untuk apa nilainya, ini didasarkan pada pengalaman dan bukan pada analisis matematika:

Saya pikir bahwa kecuali Anda melakukan kriptografi, di mana pola-pola halus bisa sangat buruk, benih mana yang Anda tetapkan tidak membuat perbedaan, selama Anda menggunakan PRNG baik yang diterima seperti Mersenne Twister dan bukan yang lama seperti generator congruential linear. Sejauh yang saya tahu, tidak ada cara bahwa Anda dapat memberitahu apa nomor acak akan keluar dari benih yang diberikan tanpa benar-benar berjalan PRNG yang (dengan asumsi itu satu yang layak), jika tidak, anda hanya akan mengambil bahwa algoritma baru dan penggunaan yang sebagai Anda generator nomor acak.

Perspektif lain: apakah Anda berpikir bahwa ada pola halus dalam simulasi Monte-Carlo Anda yang kemungkinan besarnya lebih besar dari semua kesalahan pengukuran, perancu, dan kesalahan diperkenalkan oleh asumsi pemodelan lain?

Saya hanya akan menggunakan satu seed acak di awal untuk reproduktifitas, dan tidak menetapkan satu sebelum setiap panggilan, kecuali saya melakukan debugging, di mana saya perlu memastikan dua algoritma yang berbeda menghasilkan hasil yang sama untuk data input yang sama persis.

Penafian: jika Anda mensimulasikan reaktor nuklir atau sistem kendali rudal atau prakiraan cuaca, sebaiknya berkonsultasi dengan pakar domain, saya tidak bertanggung jawab dalam kasus itu.

ungu51
sumber