Nomor acak-Set.seed (N) dalam R [duplikat]

38

Pertanyaan ini sudah ada jawabannya di sini:

Saya menyadari bahwa seseorang menggunakan set.seed()R untuk pembuatan angka pseudo-acak. Saya juga menyadari bahwa menggunakan nomor yang sama, seperti set.seed(123)memastikan Anda dapat mereproduksi hasil.

Tapi yang tidak saya dapatkan adalah apa arti nilai-nilai itu sendiri. Saya bermain dengan beberapa fungsi, dan beberapa menggunakan set.seed(1)atau set.seed(300)atau set.seed(12345). Apa artinya angka itu (jika ada) - dan kapan saya harus menggunakan yang berbeda.

Contoh, dalam buku yang saya kerjakan - mereka gunakan set.seed(12345)saat membuat set pelatihan untuk pohon keputusan. Kemudian di bab lain, mereka menggunakan set.seed(300)untuk membuat Hutan Acak.

Hanya saja, jangan mendapatkan nomornya.

mylesg
sumber
6
Apakah ini membantu? stackoverflow.com/questions/14684437/... Juga? set.seed () dalam R memberikan informasi yang cukup bagus.
doug.numbers
6
Poin utama menggunakan benih adalah untuk dapat mereproduksi urutan tertentu dari angka 'acak'. Secara umum, jika Anda tidak perlu bisa melakukan itu, Anda tidak akan mengatur seed. Benih itu sendiri tidak memiliki makna yang melekat kecuali itu adalah cara untuk memberitahu generator nomor acak 'di mana untuk memulai'. Anda mungkin menganggapnya sedikit seperti hubungan antara nomor PIN dan rekening bank Anda. PIN dikaitkan dengan string panjang nomor (nomor rekening Anda), tapi itu tidak inheren kuantitas diinterpretasi (ada sebuah interpretasi, tetapi dalam pengaturan itu, Anda mengabaikan itu).
Glen_b -Reinstate Monica
4
Sebagai catatan, 42 selalu merupakan unggulan yang tepat
Repmat
Hanya komentar: Saya sarankan untuk menetapkan generator acak saja (i) untuk men-debug skrip, untuk menemukan beberapa kesalahan tertentu, dll. Atau (ii) untuk mengirim / mempublikasikan hasil sehingga mereka dapat diperiksa.
AADF
Dijawab di sini: Apa sebenarnya benih dalam generator angka acak?
Pasang kembali Monica

Jawaban:

39

Nomor benih yang Anda pilih adalah titik awal yang digunakan dalam pembuatan urutan nomor acak, itulah sebabnya (asalkan Anda menggunakan generator nomor acak semu yang sama) Anda akan mendapatkan hasil yang sama dengan nomor benih yang sama. Mengenai pertanyaan kedua Anda, cuplikan singkat ini dari deskripsi fungsi yang setara di Stata mungkin membantu:

Kami tidak bisa cukup menekankan ini: Jangan mengatur benih terlalu sering. Untuk melihat mengapa ini adalah ide yang buruk, pertimbangkan kasus pembatas: Anda mengatur seed, menggambar satu nomor pseudorandom, mengatur ulang seed, menggambar lagi, dan seterusnya. Angka pseudorandom yang Anda peroleh tidak lebih dari biji yang Anda jalankan melalui fungsi matematika. Hasil yang Anda peroleh tidak akan lulus secara acak kecuali benih yang Anda pilih lulus secara acak. Jika Anda sudah memiliki nomor seperti itu, mengapa Anda repot-repot menggunakan generator nomor acak?

http://www.stata.com/manuals13/rsetseed.pdf

Corcovado
sumber
15
Siapa yang tahu Stata memiliki dokumentasi yang begitu menarik: "Yang lain mencoba membuat angka acak, memperkirakan jika mereka memasukkan angka yang cukup, hasilnya harus acak. Ini adalah variasi pada aturan lima detik untuk makanan yang dijatuhkan, dan kami akui untuk menggunakan kedua aturan ini "
degessate hessian
4

Singkatnya, angka-angka itu sendiri tidak benar-benar berarti apa-apa! Jika Anda melihat kode orang lain (seperti pada dua contoh yang Anda berikan di atas), angkanya tidak mengubah fungsi fungsi; juga tidak ada angka "baik" untuk fungsi tertentu. Itu hanya pilihan penulis.

Selanjutnya, jika Anda hanya pernah mengatur seed sekali dalam kode Anda, maka Anda dapat memilih nomor yang Anda suka. Satu-satunya hal yang Anda perlu sedikit berhati-hati adalah bahwa, jika Anda berinteraksi dengan fungsi lain yang juga menggunakan angka acak, maka ada baiknya memilih seed yang tidak jelas (sehingga kemungkinan Anda berdua menggunakan seed yang sama lebih kecil. ).

Namun, seperti yang ditunjukkan Corcovado dengan sangat baik, untuk beberapa aplikasi, Anda harus sangat berhati-hati dengan pilihan yang Anda buat. Jika secara matematis Anda memerlukan sejumlah angka yang dibuat secara acak, maka tidak mungkin ada pola pada angka yang Anda pilih.

KRS
sumber
1

Fungsi set.seed () di R mengambil argumen integer (arbitrer). Jadi kita dapat mengambil argumen apa pun, katakanlah, 1 atau 123 atau 300 atau 12345 untuk mendapatkan angka acak yang dapat direproduksi.

Juga, dalam paketTeachingDemos, fungsi char2seed memungkinkan pengguna untuk mengatur seed berdasarkan string karakter.

Dr Nisha Arora
sumber