วิธีสร้างตัวอย่างโดยใช้ฟังก์ชันตัวอย่างใน r


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

ไวยากรณ์พื้นฐานของฟังก์ชันตัวอย่าง () คือ:

ตัวอย่าง (x, ขนาด, แทนที่ = FALSE , prob = NULL )

x : ชุดข้อมูลหรือเวกเตอร์ที่ใช้เลือกตัวอย่าง
ขนาด : ขนาดตัวอย่าง
แทนที่ : ควรสุ่มตัวอย่างพร้อมเปลี่ยนหรือไม่? (นี่คือ FALSE โดยค่าเริ่มต้น)
prob : เวกเตอร์ของน้ำหนักความน่าจะเป็นเพื่อให้ได้องค์ประกอบของเวกเตอร์ตัวอย่าง

สามารถดูเอกสารฉบับเต็มสำหรับตัวอย่าง () ได้ที่นี่

ตัวอย่างต่อไปนี้สาธิตตัวอย่างการใช้งานจริงของตัวอย่าง ()

สร้างตัวอย่างจากเวกเตอร์

สมมติว่าเรามีเวกเตอร์ a ที่มีองค์ประกอบ 10 ตัว:

 #define vector a with 10 elements in it
a <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

ในการสร้างตัวอย่างสุ่มจาก 5 องค์ประกอบของเวกเตอร์ a โดยไม่มีการแทนที่ เราสามารถใช้ไวยากรณ์ต่อไปนี้:

 #generate random sample of 5 elements from vector a
sample(a, 5)

#[1] 3 1 4 7 5

สิ่งสำคัญคือต้องทราบว่าแต่ละครั้งที่เราสร้างตัวอย่างแบบสุ่ม มีโอกาสที่เราจะได้รับชุดสินค้าที่แตกต่างกันในแต่ละครั้ง

 #generate another random sample of 5 elements from vector a
sample(a, 5)

#[1] 1 8 7 4 2

หากเราต้องการที่จะจำลองผลลัพธ์ของเราและทำงานกับตัวอย่างเดียวกันในแต่ละครั้ง เราสามารถใช้ set.seed() ได้

 #set.seed(some random number) to ensure that we get the same sample each time
set.seed(122)

#define vector a with 10 elements in it
a <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

#generate random sample of 5 elements from vector a
sample(a, 5)

#[1] 10 9 2 1 4

#generate another random sample of 5 elements from vector a
sample(a, 5)

#[1] 10 9 2 1 4

นอกจากนี้เรายังสามารถใช้อาร์กิวเมนต์ การแทนที่ = TRUE เพื่อสุ่มตัวอย่างด้วยการแทนที่ ซึ่งหมายความว่าแต่ละองค์ประกอบของเวกเตอร์สามารถเลือกให้ปรากฏในตัวอย่างได้มากกว่าหนึ่งครั้ง

 #generate random sample of 5 elements from vector a using sampling with replacement
sample(a, 5, replace = TRUE)

#10 10 2 1 6

สร้างตัวอย่างจากชุดข้อมูล

การใช้ฟังก์ชัน Sample() ทั่วไปอีกอย่างหนึ่งคือการสร้างตัวอย่างแถวแบบสุ่มจากชุดข้อมูล สำหรับตัวอย่างต่อไปนี้ เราจะสร้างตัวอย่างสุ่ม 10 แถวจากชุดข้อมูล R ในตัว iris ซึ่งมีทั้งหมด 150 แถว

 #view first 6 rows of iris dataset
head(iris)

# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1 5.1 3.5 1.4 0.2 setosa
#2 4.9 3.0 1.4 0.2 setosa
#3 4.7 3.2 1.3 0.2 setosa
#4 4.6 3.1 1.5 0.2 setosa
#5 5.0 3.6 1.4 0.2 setosa
#6 5.4 3.9 1.7 0.4 setosa

#set seed to ensure that this example is replicable
set.seed(100)

#choose a random vector of 10 elements from all 150 rows in iris dataset
sample_rows <- sample(1:nrow(iris), 10)
sample_rows

#[1] 47 39 82 9 69 71 117 53 78 25

#choose the 10 rows of the iris dataset that match the row numbers above
sample <- iris[sample_rows, ]
sample

# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#47 5.1 3.8 1.6 0.2 setosa
#39 4.4 3.0 1.3 0.2 setosa
#82 5.5 2.4 3.7 1.0 versicolor
#9 4.4 2.9 1.4 0.2 setosa
#69 6.2 2.2 4.5 1.5 versicolor
#71 5.9 3.2 4.8 1.8 versicolor
#117 6.5 3.0 5.5 1.8 virginica
#53 6.9 3.1 4.9 1.5 versicolor
#78 6.7 3.0 5.0 1.7 versicolor
#25 4.8 3.4 1.9 0.2 setosa

โปรดทราบว่าหากคุณคัดลอกและวางโค้ดด้านบนลงในคอนโซล R ของคุณเอง คุณควรได้รับตัวอย่างเดียวกันทุกประการเนื่องจากเราใช้ set.seed(100) เพื่อให้แน่ใจว่าเราได้รับตัวอย่างเดียวกันทุกครั้ง

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *