• 0

حساب مجال الثقة Confidence Interval في Numpy

لدي عينة من البيانات التي أود حساب مجال الثقة لها  Confidence Interval، بافتراض التوزيع الطبيعي.

لقد وجدت حزمتي numpy و scipy وقمت بتثبيتها واستخدمت numpy لإرجاع الانحراف المتوسط mean deviation والمعياري standard deviation من خلال الكود التالي:

numpy.mean(data)

لكن لا أعرف كيفية الحصول على مجال الثقة Confidence Interval للبيانات التي لدي.

كيف أستخدم مكتبة Numpy و scipy للحصول على مجال الثقة Confidence Interval؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 1

كما نعلم فأن مجال الثقة هو مجال عددي يُتوقع أن يحتوي على القيمة الحقيقية لمَعلَمة (كمية عددية تميّز و"تلخص" التوزع الاحتمالي لمجموعة من الأحداث المتشابهة) إحصائية يراد معرفتها لمجموعة من العناصر أو الأحداث المتشابهة (تسمى في عالم الإحصاء مجتمع إحصائي) التي تكون (بجميع عناصرها) موضوعا لدراسة علمية ما.في أغلب الأبحاث أن يتم استخدام مجالات ثقة بمستوى ثقة قدره 95% ولكن يمكن أن يتم أيضا حسابها بمستويات ثقة أخرى مثل 99% و90%. في بايثون يمكنك استخدام scipy.stats.t.interval للحصول على مجال الثقة لعينة إحصائية ما. في بايثون يمكنك حسابه كالتالي:

import scipy
import scipy.stats as s
import numpy as np
sample=np.array([1,2,3,4,5,6])
confidence_level = 0.95
degrees_freedom = sample.size - 1
mean = np.mean(sample)
standard_error = scipy.stats.sem(sample)
confidenceinterval = s.t.interval(confidence_level, degrees_freedom, mean, standard_error)
confidenceinterval
# (1.5366856922723917, 5.463314307727608)

استخدم numpy.ndarray.size - 1 مع numpy.array كمصفوفة من بيانات العينة للعثور على درجة الحرية. ثم استدعي numpy.mean(arr) لحساب المتوسط الحسابي لبيانات العينة arr، ثم استدعي scipy.stats.sem(arr) لحساب الخطأ المعياري لها "standard error" (طريقة قياس أو تقدير الانحراف المعياري) ثم استدعي scipy.stats.t.interval(confidence_level, degrees_freedom, mean, std) لحساب مجال الثقة.
يمكنك أيضاً حسابها بالشكل التالي من خلال استخدام  الدالة NormalDist :

from statistics import NormalDist
import scipy
import numpy as np
sample=np.array([1,2,3,4,5,6])
def confidenceinterval(s, confidence=0.95):
  #NormalDist.stdev& NormalDist.mean ترجع لنا كائن يحتوي معلومات أهمها المتوسط والانحراف المعياري من خلال استدعاء الواصفتين
  dist = NormalDist.from_samples(s)
  z = NormalDist().inv_cdf((1 + confidence) / 2.)
  h = dist.stdev * z / ((len(s) - 1) ** .5)
  return dist.mean - h, dist.mean + h

 

تمّ تعديل بواسطة Ali Haidar Ahmad
1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

يمكنك حلها بالدالة التالية ببساطة:

import numpy as np
import scipy.stats


def mean_confidence_interval(data, confidence=0.95):
    a = 1.0 * np.array(data)
    n = len(a)
    m, se = np.mean(a), scipy.stats.sem(a)
    h = se * scipy.stats.t.ppf((1 + confidence) / 2., n-1)
    return m, m-h, m+h

كذلك هناك دالة داخلية يمكنك استعمالها كالتالي:

import numpy as np, scipy.stats as st

st.t.interval(0.95, len(a)-1, loc=np.mean(a), scale=st.sem(a))

حيث ان 0.95 تمثل نسبة ال Confidence Interval التى تريدها.

هنا بعض الامثلة التي قد توضح تبين الفكرة:

In [9]: a = range(10,14)

In [10]: mean_confidence_interval(a)
Out[10]: (11.5, 9.4457397432391215, 13.554260256760879)

In [11]: st.t.interval(0.95, len(a)-1, loc=np.mean(a), scale=st.sem(a))
Out[11]: (9.4457397432391215, 13.554260256760879)

لاحظ ان قيم ال Confidence Interval في كلتا الطريقتين واحدة 

تمّ تعديل بواسطة Ahmed Sharshar
1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن