สุ่ม number-Set.seed (N) ใน R [ซ้ำกัน]


37

คำถามนี้มีคำตอบอยู่ที่นี่แล้ว:

ฉันรู้ว่ามีคนใช้set.seed()R ในการสร้างตัวเลขสุ่มหลอก ฉันยังตระหนักว่าการใช้หมายเลขเดียวกันเช่นset.seed(123)ประกันคุณสามารถทำซ้ำผลลัพธ์

แต่สิ่งที่ฉันไม่ได้รับคือคุณค่าของตัวเองหมายถึงอะไร ฉันกำลังเล่นกับฟังก์ชั่นหลายและบางส่วนใช้set.seed(1)หรือหรือset.seed(300) set.seed(12345)หมายเลขนั้นหมายถึงอะไร (ถ้ามี) - และฉันควรใช้หมายเลขอื่นเมื่อใด

ตัวอย่างในหนังสือที่ฉันใช้งานอยู่พวกเขาใช้set.seed(12345)เมื่อสร้างชุดการฝึกอบรมสำหรับต้นไม้ตัดสินใจ จากนั้นในบทอื่นพวกเขาใช้set.seed(300)สำหรับสร้างป่าสุ่ม

แค่อย่ารับเบอร์


6
สิ่งนี้ช่วยได้ไหม? stackoverflow.com/questions/14684437/ … ยัง? set.seed () ภายใน R ให้ข้อมูลที่ดีงาม
doug.numbers

6
จุดหลักของการใช้เมล็ดพันธุ์คือการสามารถทำซ้ำลำดับของตัวเลข 'สุ่ม' โดยเฉพาะ โดยทั่วไปหากคุณไม่จำเป็นต้องทำเช่นนั้นคุณจะไม่ตั้งค่าเมล็ด ตัวเมล็ดเองไม่มีความหมายที่แท้จริงยกเว้นว่าเป็นวิธีบอกตัวสร้างตัวเลขแบบสุ่มว่าจะเริ่มจากตรงไหน คุณอาจนึกถึงความสัมพันธ์ระหว่างหมายเลข PIN กับบัญชีธนาคารของคุณเล็กน้อย PIN เกี่ยวข้องกับสตริงที่มีความยาว (หมายเลขบัญชีของคุณ) แต่ไม่ใช่ปริมาณที่สามารถตีความได้โดยธรรมชาติ (มีการตีความ แต่ในการตั้งค่าคุณจะไม่สนใจ)
Glen_b

4
สำหรับบันทึกแล้ว 42 เป็นเมล็ดพันธุ์ที่ถูกต้องเสมอ
Repmat

เพียงความคิดเห็น: ฉันแนะนำให้ตั้งค่าตัวสร้างแบบสุ่มเท่านั้น (i) เพื่อดีบักสคริปต์เพื่อค้นหาข้อผิดพลาดบางอย่าง ฯลฯ หรือ (ii) เพื่อส่ง / เผยแพร่ผลลัพธ์เพื่อให้สามารถตรวจสอบได้
AADF

คำตอบ:


38

หมายเลขเมล็ดพันธุ์ที่คุณเลือกเป็นจุดเริ่มต้นที่ใช้ในการสร้างลำดับของตัวเลขสุ่มซึ่งเป็นสาเหตุ (หากคุณใช้ตัวสร้างหมายเลขหลอกเทียมเดียวกัน) คุณจะได้รับผลลัพธ์เดียวกันกับหมายเลขเมล็ดเดียวกัน เท่าที่คำถามที่สองของคุณเกี่ยวข้องตัวอย่างสั้น ๆ นี้จากคำอธิบายของฟังก์ชันการทำงานที่เทียบเท่าใน Stata อาจเป็นประโยชน์:

เราไม่สามารถเน้นสิ่งนี้ได้มากพอ: อย่าตั้งเมล็ดบ่อยเกินไป หากต้องการดูว่าทำไมนี่จึงเป็นความคิดที่ไม่ดีลองพิจารณากรณีที่มีการ จำกัด : คุณตั้งค่าเมล็ดวาดหมายเลขหนึ่งปลอมเทียมรีเซ็ตเมล็ดวาดอีกครั้งและดำเนินการต่อไป ตัวเลขหลอกเทียมที่คุณได้รับจะไม่มีอะไรมากไปกว่าเมล็ดพันธุ์ที่คุณเรียกใช้ผ่านฟังก์ชันทางคณิตศาสตร์ ผลลัพธ์ที่คุณได้รับจะไม่ผ่านการสุ่มยกเว้นเมล็ดที่คุณเลือกผ่านสำหรับการสุ่ม หากคุณมีตัวเลขดังกล่าวอยู่แล้วทำไมคุณถึงต้องรำคาญที่จะใช้เครื่องกำเนิดหมายเลขเทียมหลอก?

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


15
ใครจะรู้ว่า Stata มีเอกสารที่น่าสนใจเช่น: "คนอื่น ๆ พยายามคิดเลขสุ่มคิดว่าพวกเขามีตัวเลขเพียงพอผลที่ได้ก็จะต้องสุ่มนี่คือรูปแบบของกฎห้าวินาทีสำหรับอาหารที่ถูกทิ้งและเรายอมรับ เพื่อใช้กฎทั้งสองนี้ "
เฮสเซสเสื่อมโทรม

4

ในระยะสั้นตัวเลขตัวเองไม่ได้มีความหมายอะไรเลย! หากคุณกำลังดูรหัสของบุคคลอื่น (เช่นในสองตัวอย่างที่คุณให้ไว้ข้างต้น) ตัวเลขจะไม่เปลี่ยนแปลงการทำงานของฟังก์ชัน ไม่มีตัวเลข "ดี" สำหรับฟังก์ชั่นเฉพาะ มันเป็นเพียงทางเลือกของผู้เขียน

นอกจากนี้หากคุณตั้งค่าเมล็ดเพียงครั้งเดียวในรหัสของคุณคุณสามารถเลือกหมายเลขที่คุณต้องการ สิ่งเดียวที่คุณต้องระวังนิดหน่อยก็คือถ้าคุณเชื่อมต่อกับฟังก์ชั่นอื่น ๆ ที่ใช้ตัวเลขสุ่มก็เป็นการดีที่จะเลือกเมล็ดที่ไม่ชัดเจน (ดังนั้นจึงมีโอกาสน้อยกว่าที่คุณทั้งสองจะใช้เมล็ดเดียวกัน )

อย่างไรก็ตามเนื่องจาก Corcovado ชี้ให้เห็นอย่างชัดเจนสำหรับบางแอปพลิเคชันคุณจำเป็นต้องระมัดระวังเกี่ยวกับตัวเลือกที่คุณเลือก หากคุณต้องการตัวเลขที่สร้างขึ้นโดยใช้คณิตศาสตร์ในทางคณิตศาสตร์คุณจะต้องไม่มีรูปแบบตัวเลขที่คุณเลือก


1

ฟังก์ชัน set.seed () ใน R รับอาร์กิวเมนต์จำนวนเต็ม (โดยพลการ) ดังนั้นเราสามารถโต้แย้งกันว่า 1 หรือ 123 หรือ 300 หรือ 12345 เพื่อรับตัวเลขสุ่มที่ทำซ้ำได้

นอกจากนี้ในแพ็คเกจ TeachingDemos, ฟังก์ชั่น char2seed ช่วยให้ผู้ใช้สามารถตั้งค่าเมล็ดพันธุ์ตามสตริงตัวอักษร

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.