حاسبة متوسط النسب المئوية
حاسبة متوسط النسب المئوية للمتوسط البسيط أو المرجّح عندما تختلف المجموعات في الحجم. وتعمل هذه الصفحة أيضًا حاسبةً لجمع النسب المئوية ودمجها، مع ستة أمثلة محلولة.
أُدخلت قيم تجريبية. استبدلها بقيمك.
متوسط النسب المئوية
75%
خطوات الحل
- مجموع النسب المئوية (2) = 150
- 150 ÷ 2 = 75%
- مجموع النسب المئوية
- 150
- عدد النسب المئوية
- 2
أربع درجات اختبار هي 80% و90% و70% و85% متوسطها 81,25%. لكن النسب المئوية الآتية من مجموعات مختلفة الحجم لا يصح جمعها وقسمتها ببساطة، لأن معدلًا من 50 شخصًا ينبغي أن يُحسب أكثر من معدل من 20 شخصًا.
أدخل قائمة نسب مئوية في حاسبة متوسط النسب المئوية هذه، فتعرض المتوسط البسيط. وإذا أضفت وزنًا لكل نسبة، مثل حجم العينة أو توزيع الدرجات، فتعرض المتوسط المرجّح وتبيّن سبب اختلافه عن البسيط. وستجد أدناه القوانين وستة أمثلة محلولة وقسمًا قصيرًا عن متوسط معدلات النمو.
كيف تحسب متوسط النسب المئوية
الإجابة السريعة: اجمع النسب المئوية واقسم المجموع على عددها. وإذا كانت النسب المئوية آتية من مجموعات مختلفة الحجم، فاضرب كل نسبة في وزنها، واجمع النواتج، ثم اقسم على مجموع الأوزان.
المتوسط البسيط للنسب المئوية
- اجمع النسب المئوية كلها معًا.
- اقسم المجموع على عدد النسب المئوية.
- أضف علامة النسبة المئوية.
هذا هو المتوسط الحسابي. فهو يعامل كل نسبة مئوية على أنها بالأهمية نفسها، وهذا صحيح حين تأتي كل نسبة من مجموعة بالحجم نفسه، مثل أربعة اختبارات مصحَّحة من المجموع نفسه. وهذا ما تفعله الحاسبة أعلاه حين لا تُعطى أوزان، وكذلك أي حاسبة متوسط نسب في وضعها البسيط.
المتوسط المرجّح للنسب المئوية
المتوسط المرجّح هو مجموع حواصل ضرب كل نسبة مئوية في وزنها، مقسومًا على مجموع الأوزان:
المتوسط المرجّح = (p1 × w1 + p2 × w2 + ... + pn × wn) ÷ (w1 + w2 + ... + wn)هنا p هي كل نسبة مئوية وw وزنها. ويمكن أن يكون الوزن حجم عينة أو عدد درجات أو حصة من علامة. وكل ما يُشترط فيه ألا يكون سالبًا، ولا يلزم أن يبلغ مجموع الأوزان 100. فالأوزان هي التي تحدد مقدار ما تُحتسبه كل نسبة مئوية.
لهذا قد يكون المتوسط البسيط خاطئًا. فمعدل نجاح 90% من 50 طالبًا ينبغي أن يؤثر في النتيجة الإجمالية أكثر من معدل نجاح 60% من 20 طالبًا، لكن المتوسط البسيط يعطيهما التأثير نفسه. وكلما اختلفت المجموعات الأصلية في الحجم، فانتقل في الحاسبة أعلاه إلى الوضع المرجّح. وهي تعمل حاسبةً للنسبة المئوية المرجّحة وحاسبةً لمتوسط النسب المئوية مع الأوزان.
كيف تحسب المتوسط المرجّح خطوة بخطوة
- اضرب كل نسبة مئوية في وزنها.
- اجمع هذه الحواصل معًا.
- اجمع الأوزان معًا.
- اقسم مجموع الحواصل على مجموع الأوزان.
لنفترض أعمالًا فصلية بنسبة 85% بوزن 40، وامتحانًا بنسبة 70% بوزن 60. حاصلا الضرب هما 3 400 و4 200، ومجموعهما 7 600. ومجموع الأوزان 100، فيكون المتوسط 76%. وحين تكون الأوزان أحجام عينات، يساوي كل حاصل ضرب 100 مضروبة في عدد الناجحين في تلك المجموعة، ولذلك يساوي المتوسط المرجّح لمعدلات النجاح معدل النجاح المجمّع.
جمع النسب المئوية معًا
تتوقف طريقة جمع النسب المئوية على الكل: لا يمكنك جمعها إلا حين تكون حصصًا من الكل نفسه. فحصص السوق 25% و30% و12% من سوق واحدة تبلغ معًا 67% من تلك السوق. أما حين تأتي النسب المئوية من كلٍّ مختلف لكل منها فلا معنى للمجموع: 50% من 20 شخصًا و25% من 80 شخصًا لا يكوّنان 75% من أي أحد.
لدمج نسب مئوية من مجموعات مختلفة، حوّل كل نسبة إلى عدد، ثم اجمع الأعداد واقسم على المجموع الكلي المجمّع. وهذا هو المتوسط المرجّح بأحجام المجموعات أوزانًا، وهو يعطي النسبة المئوية الإجمالية. ويوضح المثال 4 أدناه ذلك. وتعمل الحاسبة أعلاه حاسبةً لدمج النسب المئوية حين تدخل كل نسبة مع حجم مجموعتها وزنًا.
متوسط التغير المئوي على عدة فترات
تحتاج معدلات النمو إلى متوسط مختلف. فإذا ارتفع مقدار بنسبة 10% ثم انخفض بنسبة 10%، فالمتوسط البسيط 0%، لكن المقدار ينتهي عند 1,1 × 0,9 = 0,99 من قيمته الأولى، أي بخسارة قدرها 1%. والمتوسط الذي يعيد النتيجة الحقيقية هو المتوسط الهندسي لمعاملات الضرب:
متوسط المعدل = ((1 + r1) × (1 + r2) × ... × (1 + rn))^(1/n) − 1في حالة ارتفاع بنسبة 10% ثم انخفاض بنسبة 10%، يساوي ذلك الجذر التربيعي للعدد 0,99 ناقص 1، أي -0,50% لكل فترة. ولإيجاد التغير بين قيمتين فقط، استخدم حاسبة التغير المئوي، ولإيجاد ارتفاع واحد استخدم حاسبة الزيادة المئوية.
متوسط النسبة المئوية في Excel وGoogle Sheets
للمتوسط البسيط، والنسب المئوية في A2:A5، اكتب =AVERAGE(A2:A5). وللمتوسط المرجّح، والنسب المئوية في A2:A4 والأوزان في B2:B4، اكتب =SUMPRODUCT(A2:A4,B2:B4)/SUM(B2:B4). ويتناول دليل النسب المئوية في Excel صيغًا أخرى.
متوسط نسب الخطأ المئوية
متوسط نسبة الخطأ المئوية عمل مختلف. احسب كل نسبة خطأ مئوية أولًا باستخدام حاسبة نسبة الخطأ المئوية، ثم احسب متوسط النتائج كما سبق.
التقريب والتحقق من النتيجة
قرّب المتوسط النهائي فقط. فحساب المتوسط من أعداد مقرَّبة أصلًا ينقل خطأ تقريبها إلى النتيجة، لذا احتفظ بالقيم الدقيقة قدر الإمكان. واذكر منزلة عشرية واحدة أو منزلتين ما لم تحتج إلى أكثر. وتعرض الحاسبة المجموع والعدد، أو الوزن الكلي، بجانب المتوسط لتتحقق من القسمة بنفسك.
أمثلة على متوسط النسب المئوية
المثال 1: أربع درجات اختبار
المعطيات
الإجابة
المثال 2: مجموعات مختلفة الحجم
المعطيات
الإجابة
| المجموعة | معدل النجاح | الطلاب | الناجحون |
|---|---|---|---|
| أ | 60% | 20 | 12 |
| ب | 80% | 30 | 24 |
| ج | 90% | 50 | 45 |
| المجموع | 81% | 100 | 81 |
المثال 3: درجة مقرر بأوزان
المعطيات
الإجابة
المثال 4: نسب مئوية من كلٍّ مختلف
المعطيات
الإجابة
المثال 5: متوسط النمو
المعطيات
الخطوة 1
المتوسط البسيط هو 20%.
الإجابة
المثال 6: درجات من مجاميع كلية مختلفة
المعطيات
الخطوة 1
المتوسط البسيط للنسبتين 75% و70% هو 72,5%.
الإجابة
شيفرة متوسط النسب المئوية
تعيد النسختان الأمثلة أعلاه (81,25 و81 و76 و76,67 و19,72)، وترفضان المدخلات غير الرقمية، وترفضان الأوزان غير المتطابقة أو الأوزان الصفرية كلها.
JavaScript
function finite(name, v) { if (typeof v !== "number" || !Number.isFinite(v)) throw new TypeError(`${name} must be a finite number`);}function places(decimals) { if (!Number.isInteger(decimals) || decimals < 0 || decimals > 10) throw new RangeError("decimals must be a whole number from 0 to 10"); return decimals;}function list(name, values) { if (!Array.isArray(values) || values.length < 1) throw new TypeError(`${name} must be a non-empty array of numbers`); values.forEach((v) => finite(name, v));}// Simple average: [80, 90, 70, 85] -> 81.25export function averagePercent(values, decimals = 2) { list("values", values); const d = places(decimals); return Number((values.reduce((a, b) => a + b, 0) / values.length).toFixed(d));}// Weighted average: weights can be sample sizes, marks or any non-negative numbersexport function weightedAveragePercent(values, weights, decimals = 2) { list("values", values); list("weights", weights); if (values.length !== weights.length) throw new RangeError("values and weights must be the same length"); if (weights.some((w) => w < 0)) throw new RangeError("weights must not be negative"); const d = places(decimals); const total = weights.reduce((a, b) => a + b, 0); if (total === 0) throw new RangeError("the weights must not all be 0"); const sum = values.reduce((acc, v, i) => acc + v * weights[i], 0); return Number((sum / total).toFixed(d));}// Average percentage change per period over several periods (geometric mean)export function averageGrowth(ratesPercent, decimals = 2) { list("rates", ratesPercent); const d = places(decimals); let product = 1; for (const r of ratesPercent) { if (r <= -100) throw new RangeError("a rate of -100% or less cannot be averaged this way"); product *= 1 + r / 100; } return Number(((Math.pow(product, 1 / ratesPercent.length) - 1) * 100).toFixed(d));}Python
from decimal import Decimal, ROUND_HALF_UPfrom math import isfinitedef _num(name, v): if isinstance(v, bool) or not isinstance(v, (int, float, Decimal)) or not isfinite(float(v)): raise ValueError(f"{name} must be a finite number") return Decimal(str(v))def _round(x, decimals): if not isinstance(decimals, int) or isinstance(decimals, bool) or not 0 <= decimals <= 10: raise ValueError("decimals must be a whole number from 0 to 10") return x.quantize(Decimal(1).scaleb(-decimals), rounding=ROUND_HALF_UP)def _list(name, values): if not isinstance(values, (list, tuple)) or len(values) < 1: raise ValueError(f"{name} must be a non-empty list of numbers") return [_num(name, v) for v in values]def average_percent(values, decimals=2): nums = _list("values", values) return _round(sum(nums) / len(nums), decimals)def weighted_average_percent(values, weights, decimals=2): nums = _list("values", values) w = _list("weights", weights) if len(nums) != len(w): raise ValueError("values and weights must be the same length") if any(x < 0 for x in w): raise ValueError("weights must not be negative") total = sum(w) if total == 0: raise ValueError("the weights must not all be 0") return _round(sum(n * x for n, x in zip(nums, w)) / total, decimals)def average_growth(rates_percent, decimals=2): rates = _list("rates", rates_percent) product = Decimal(1) for r in rates: if r <= -100: raise ValueError("a rate of -100% or less cannot be averaged this way") product *= 1 + r / 100 return _round((product ** (Decimal(1) / len(rates)) - 1) * 100, decimals)weightedAveragePercent([60, 80, 90], [20, 30, 50]) تعيد 81، وهو مثال أحجام المجموعات، وaverageGrowth([10, 20, 30]) تعيد 19.72. قرّب للعرض فقط. تقرّب نسخة Python نحو الأعلى عند المنتصف، وهذه هي القاعدة المدرسية المعتادة، وتعيد قيمًا من النوع Decimal، لذا تُطبع 81 على الصورة 81.00.
الخصوصية وسلامة المدخلات
- تُحسب القيم داخل متصفحك. والأعداد التي تدخلها لا تُرسل إلى خادم ولا تُخزَّن.
- تقبل الحقول الأعداد فقط، مع علامة % اختيارية في نهاية النسبة المئوية. أما النص والحقول الفارغة وNaN وInfinity فتُرفض مع رسالة، ولا يُنفَّذ أي شيء تكتبه على أنه شيفرة برمجية.
- الصف الذي فيه نسبة مئوية دون وزن يُقرأ على أن وزنه 1 في الوضع المرجّح. أما الصف الفارغ تمامًا فيُتجاهل.
- يجب ألا تكون الأوزان سالبة. وإذا كانت كل الأوزان 0 فتطلب الحاسبة وزنًا موجبًا واحدًا على الأقل، لأن المجموع سيكون صفرًا.
- تُقبل النسب المئوية الأكبر من 100 أو الأصغر من 0 في الوضعين البسيط والمرجّح، لأن بعض البيانات تتضمنها. أما متوسط النمو فيرفض معدلًا قدره -100% أو أقل، لأنه يمحو المقدار كله.
- عدد المنازل العشرية عدد صحيح من 0 إلى 10.
- في هذه اللغة تُعدّ الفاصلة هي الفاصل العشري، لذا فإن 12,5 تساوي اثني عشر ونصفًا و1,200 تساوي 1,2. وتعمل النقطة فاصلًا للآلاف حين تليها فاصلة عشرية، لذا تُقرأ 1.234,5 على أنها 1234,5. أما إدخال مثل 1.234 (نقطة تليها ثلاثة أرقام بالضبط من دون فاصلة) أو 1,2,3 فيُرفض لأنه غامض بدلًا من التخمين. وتُتجاهل المسافات بين مجموعات الأرقام، بما فيها المسافات غير القابلة للفصل، لذا يُقرأ 1 200 على أنه 1200.
- لصق نص طويل جدًا لا يمكن أن يجمّد الصفحة.
الأخطاء الشائعة في متوسط النسب المئوية
| الخطأ | ما الذي يحدث | ما تفعله الحاسبة |
|---|---|---|
| استخدام المتوسط البسيط لمجموعات مختلفة الحجم | النسب 60% و80% و90% من 20 و30 و50 شخصًا متوسطها 76,67% وليس 81% | تتيح وضعًا مرجّحًا بأحجام المجموعات |
| جمع نسب مئوية من كلٍّ مختلف | 50% من 20 و25% من 80 لا تكوّن 75% | تجمع الأعداد وتقسم على المجموع الكلي |
| حساب متوسط معدلات النمو بالمتوسط البسيط | +10% ثم -10% يعطيان متوسطًا قدره 0%، لكن المقدار ينتهي أقل بنسبة 1% | تستخدم المتوسط الهندسي للنمو |
| حذف 0% من القائمة | 80% و0% متوسطهما 40% وليس 80% | تحتسب كل صف فيه قيمة، بما في ذلك 0 |
| خلط الأعداد العشرية بالنسب المئوية | 0,8 و90 في قائمة واحدة تعطيان 45,4 وليس 85 | تأخذ كل قيمة على أنها نسبة مئوية |
| اعتبار الأوزان نسبًا مئوية يجب أن يبلغ مجموعها 100 | أحجام العينات 20 و30 و50 تعمل دون أي تحجيم | تقسم على الوزن الكلي |
| كل الأوزان 0 | المجموع الكلي صفر، فالمتوسط غير معرَّف | تطلب وزنًا موجبًا |
| تقريب كل نسبة مئوية قبل حساب المتوسط | التقريب المبكر يزحزح النتيجة | تقرّب المتوسط النهائي فقط |
أي متوسط تستخدم
| الطريقة | استخدمها حين | مثال | النتيجة |
|---|---|---|---|
| المتوسط البسيط | تأتي كل نسبة مئوية من مجموعة بالحجم نفسه | 80% و90% و70% و85% | 81,25% |
| المتوسط المرجّح | تختلف المجموعات في الحجم أو تحمل البنود أوزانًا مختلفة | 60% و80% و90% مع 20 و30 و50 شخصًا | 81% |
| مجموع النسب المئوية | تكون النسب المئوية حصصًا من كل واحد | 25% + 30% + 12% من سوق واحدة | 67% |
| المجمّعة من الأعداد | تأتي النسب المئوية من كلٍّ مختلف وتعرف الأعداد | 10 من 20 و20 من 80 | 30% |
| المتوسط الهندسي | تكون النسب المئوية معدلات نمو على فترات متتالية | +10% و-10% | -0,50% لكل فترة |