วิธีเลือกตัวอย่างสุ่มใน r: พร้อมตัวอย่าง
ในการเลือก ตัวอย่างแบบสุ่ม ใน R เราสามารถใช้ฟังก์ชัน Sample() ซึ่งใช้ไวยากรณ์ต่อไปนี้:
ตัวอย่าง (x, ขนาด, แทนที่ = FALSE, prob = NULL)
ทอง:
- x: เวกเตอร์ขององค์ประกอบต่างๆ ให้เลือก
- ขนาด: ขนาดตัวอย่าง
- แทนที่: ไม่ว่าจะสุ่มตัวอย่างด้วยการเปลี่ยนหรือไม่ก็ตาม ค่าเริ่มต้นเป็นเท็จ
- prob: เวกเตอร์ของน้ำหนักความน่าจะเป็นเพื่อให้ได้องค์ประกอบจากเวกเตอร์ ค่าเริ่มต้นคือ NULL
บทช่วยสอนนี้จะอธิบายวิธีใช้ฟังก์ชันนี้เพื่อเลือกตัวอย่างแบบสุ่มใน R จากทั้งเวกเตอร์และกรอบข้อมูล
ตัวอย่างที่ 1: ตัวอย่างสุ่มจากเวกเตอร์
รหัสต่อไปนี้แสดงวิธีการเลือกตัวอย่างแบบสุ่มจากเวกเตอร์ โดยไม่ต้องเปลี่ยน :
#create vector of data data <- c(1, 3, 5, 6, 7, 8, 10, 11, 12, 14) #select random sample of 5 elements without replacement sample(x=data, size=5) [1] 10 12 5 14 7
รหัสต่อไปนี้แสดงวิธีการเลือกตัวอย่างแบบสุ่มจากเวกเตอร์ ที่มีการแทนที่ :
#create vector of data data <- c(1, 3, 5, 6, 7, 8, 10, 11, 12, 14) #select random sample of 5 elements with replacement sample(x=data, size=5, replace= TRUE ) [1] 12 1 1 6 14
ตัวอย่างที่ 2: สุ่มตัวอย่างจากกลุ่มข้อมูล
รหัสต่อไปนี้แสดงวิธีการเลือกตัวอย่างแบบสุ่มจากกรอบข้อมูล:
#create data frame df <- data.frame(x=c(3, 5, 6, 6, 8, 12, 14), y=c(12, 6, 4, 23, 25, 8, 9), z=c(2, 7, 8, 8, 15, 17, 29)) #view data frame df X Y Z 1 3 12 2 2 5 6 7 3 6 4 8 4 6 23 8 5 8 25 15 6 12 8 17 7 14 9 29 #select random sample of three rows from data frame rand_df <- df[ sample ( nrow (df), size= 3 ), ] #display randomly selected rows rand_df X Y Z 4 6 23 8 7 14 9 29 1 3 12 2
นี่คือสิ่งที่เกิดขึ้นในโค้ดชิ้นนี้:
1. ในการเลือกชุดย่อยของกรอบข้อมูลใน R เราใช้ไวยากรณ์ต่อไปนี้: df[rows, columns]
2. ในโค้ดข้างต้น เราสุ่มเลือกตัวอย่าง 3 แถวจากกรอบข้อมูลและคอลัมน์ ทั้งหมด
3. ผลลัพธ์สุดท้ายคือชุดย่อยของกรอบข้อมูลที่มีการสุ่มเลือก 3 แถว
สิ่งสำคัญคือต้องทราบว่าทุกครั้งที่เราใช้ฟังก์ชัน ตัวอย่าง () R จะเลือกตัวอย่างอื่นเนื่องจากฟังก์ชันจะเลือกค่าแบบสุ่ม
ในการสร้างผลลัพธ์ของการวิเคราะห์บางอย่างอีกครั้ง ต้องแน่ใจว่าใช้ set.seed(ตัวเลขบางตัว) เพื่อให้ฟังก์ชัน Sample() เลือกตัวอย่างสุ่มที่เหมือนกันในแต่ละครั้ง ตัวอย่างเช่น:
#make this example reproducible set.seed(23) #create data frame df <- data.frame(x=c(3, 5, 6, 6, 8, 12, 14), y=c(12, 6, 4, 23, 25, 8, 9), z=c(2, 7, 8, 8, 15, 17, 29)) #select random sample of three rows from data frame rand_df <- df[ sample ( nrow (df), size= 3 ), ] #display randomly selected rows rand_df X Y Z 5 8 25 15 2 5 6 7 6 12 8 17
แต่ละครั้งที่คุณรันโค้ดด้านบน กรอบข้อมูล 3 แถวเดียวกันจะถูกเลือกในแต่ละครั้ง
แหล่งข้อมูลเพิ่มเติม
การสุ่มตัวอย่างแบบแบ่งชั้นใน R (พร้อมตัวอย่าง)
การสุ่มตัวอย่างอย่างเป็นระบบใน R (พร้อมตัวอย่าง)
การสุ่มตัวอย่างคลัสเตอร์ใน R: พร้อมตัวอย่าง