كيفية حساب النسب المئوية بسهولة في لغة r (مع أمثلة)
النسبة المئوية n لمجموعة البيانات هي القيمة التي تقطع النسبة المئوية الأولى من قيم البيانات عند فرز جميع القيم من الأصغر إلى الأكبر.
على سبيل المثال، النسبة المئوية التسعون لمجموعة البيانات هي القيمة التي تفصل 90% من قيم البيانات عن أعلى 10% من قيم البيانات.
إحدى النسب المئوية الأكثر استخدامًا هي النسبة المئوية الخمسين، والتي تمثل القيمة المتوسطة لمجموعة البيانات: هذه هي القيمة التي تقع عندها 50٪ من جميع قيم البيانات أدناه.
يمكن استخدام النسب المئوية للإجابة على أسئلة مثل:
- ما هي الدرجة التي يحتاجها الطالب في اختبار معين ليكون ضمن أفضل 10%؟ للإجابة على هذا السؤال، سنوجد النسبة المئوية التسعين من جميع الدرجات، وهي القيمة التي تفصل بين أدنى 90% من أعلى 10%.
- ما الارتفاعات التي تشمل متوسط نصف طول الطلاب في مدرسة معينة؟ للإجابة على هذا السؤال نجد المئين 75 للارتفاعات والمئين 25 للارتفاعات، وهما القيمتان اللتان تحددان الحدود العليا والسفلى لـ 50% الوسطى من الارتفاعات.
كيفية حساب النسب المئوية في R
يمكننا بسهولة حساب النسب المئوية في R باستخدام الدالة quantile() ، والتي تستخدم الصيغة التالية:
الكمي (x، probs = seq(0، 1، 0.25))
- x: متجه عددي نريد إيجاد نسبه المئوية
- probs: متجه عددي للاحتمالات في [0,1] يمثل النسب المئوية التي نرغب في العثور عليها
العثور على النسب المئوية للمتجه
يوضح الكود التالي كيفية العثور على نسب مئوية مختلفة لمتجه معين في R:
#create vector of 100 random values uniformly distributed between 0 and 500 data <- runif(100, 0, 500) #Find the quartiles (25th, 50th, and 75th percentiles) of the vector quantile (data, probs = c(.25, .5, .75)) # 25% 50% 75% #97.78961 225.07593 356.47943 #Find the deciles (10th, 20th, 30th, ..., 90th percentiles) of the vector quantile (data, probs = seq(.1, .9, by = .1)) # 10% 20% 30% 40% 50% 60% 70% 80% #45.92510 87.16659 129.49574 178.27989 225.07593 300.79690 337.84393 386.36108 #90% #423.28070 #Find the 37th, 53rd, and 87th percentiles quantile (data, probs = c(.37, .53, .87)) # 37% 53% 87% #159.9561 239.8420 418.4787
العثور على النسب المئوية لعمود إطار البيانات
لتوضيح كيفية العثور على النسب المئوية لعمود إطار بيانات محدد، سنستخدم مجموعة البيانات المضمنة iris :
#view first six 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
يوضح التعليمة البرمجية التالية كيفية العثور على القيمة المئوية التسعين لعمود Sepal.Length :
quantile (iris$Sepal.Length, probs = 0.9)
#90%
#6.9
العثور على النسب المئوية لأعمدة إطار البيانات المتعددة
يمكننا أيضًا العثور على النسب المئوية لأعمدة متعددة مرة واحدة باستخدام الدالة application() :
#define columns we want to find percentiles for small_iris<- iris[, c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width')] #use apply() function to find 90th percentile for every column apply (small_iris, 2, function(x) quantile(x, probs = .9)) #Sepal.Length Sepal.Width Petal.Length Petal.Width #6.90 3.61 5.80 2.20
البحث عن النسب المئوية حسب المجموعة
يمكننا أيضًا العثور على النسب المئوية حسب المجموعة في R باستخدام الدالة group_by() من مكتبة dplyr .
يوضح التعليمة البرمجية التالية كيفية العثور على النسبة المئوية التسعين من Sepal.Length لكل من
ثلاثة أنواع في مجموعة بيانات القزحية:
#load dplyr library library(dplyr) #find 90th percentile of Sepal.Length for each of the three species iris %>% group_by (Species) %>% summarize (percent90 = quantile(Sepal.Length, probs = .9)) # A tibble: 3 x 2 #Speciespercent90 # #1 setosa 5.41 #2 versicolor 6.7 #3 virginica 7.61
يوضح الكود التالي كيفية العثور على النسبة المئوية التسعين لجميع المتغيرات حسب الأنواع:
iris %>% group_by (Species) %>% summarize (percent90_SL = quantile(Sepal.Length, probs = .9), percent90_SW = quantile(Sepal.Width, probs = .9), percent90_PL = quantile(Petal.Length, probs = .9), percent90_PW = quantile(Petal.Width, probs = .9)) # A tibble: 3 x 5 # Species percent90_SL percent90_SW percent90_PL percent90_PW # #1 setosa 5.41 3.9 1.7 0.4 #2 versicolor 6.7 3.11 4.8 1.51 #3 virginica 7.61 3.31 6.31 2.4
عرض النسب المئوية
لا توجد وظيفة مدمجة لتصور النسب المئوية لمجموعة البيانات في R، ولكن يمكننا إنشاء مخطط لتصور النسب المئوية بسهولة نسبية.
يوضح التعليمة البرمجية التالية كيفية إنشاء مخطط مئوي لقيم بيانات Sepal.Length من مجموعة بيانات القزحية :
n = length(iris$Sepal.Length) plot((1:n - 1)/(n - 1), sort(iris$Sepal.Length), type="l", main = "Visualizing Percentiles", xlab = "Percentile", ylab = "Value")
مصادر إضافية
دليل لتطبيق () وlapply () وsapply () وtapply () في R
قم بإنشاء متغيرات جديدة في R باستخدام mutate() وcase_when()