كيفية إنشاء عينة باستخدام وظيفة العينة في r
تتيح لك الدالة Sample() في لغة R أخذ عينة عشوائية من العناصر من مجموعة بيانات أو متجه، مع أو بدون استبدال.
بناء الجملة الأساسي للدالة Sample() هو:
العينة (x، الحجم، استبدال = FALSE ، prob = NULL )
x : مجموعة بيانات أو متجه يتم اختيار العينة منه
الحجم : حجم العينة
الاستبدال : هل يجب أخذ العينات مع الاستبدال؟ (هذا خطأ افتراضيًا)
prob : متجه الأوزان الاحتمالية للحصول على عناصر المتجه الذي تم أخذ عينات منه
يمكن العثور على الوثائق الكاملة للنموذج () هنا .
توضح الأمثلة التالية أمثلة عملية لاستخدام Sample().
توليد عينة من ناقلات
لنفترض أن لدينا متجهًا يحتوي على 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 المدمجة، والتي تحتوي على 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) لضمان حصولنا على نفس العينة في كل مرة.