موقع د. عزيز الجعيد
  • الرئـيـسـية

  • الأقسام

    • علم البيانات والذكاء الإصطناعي

    • ذكاء الأعمال

    • لغة البرمجة بايثون

    • مقالات متنوعـة

    • لغة البرمجة آر R

    • الإحــــــصــــــاء

    • البيانات المفتوحة

  • عـنــي

  • تواصل معي

علم البيانات والذكاء الاصطناعي

  • الرئـيـسـية

  • الأقسام

    • علم البيانات والذكاء الإصطناعي

    • ذكاء الأعمال

    • لغة البرمجة بايثون

    • مقالات متنوعـة

    • لغة البرمجة آر R

    • الإحــــــصــــــاء

    • البيانات المفتوحة

  • عـنــي

  • تواصل معي

مقارنة المتوسط لمجموعتين من البيانات باستخدام بايثون Python

05/09/2019 | لغة البرمجة بايثون | شارك بتعليقك

يمكن مقارنة المتوسط (Mean) لمجموعتين او عينتين $x$ و $y$ من البيانات المستقلة (independent) بإستخدام اختبار t-test والذي يعتمد على الفرض (assumption) بأن هذه البيانات تمثل مجتمع يتبع التوزيع الطبيعي (normal distribution). حيث يكتب إختبار الفرض الإحصائي (Hypothesis test) كما يلي:

\begin{align*}
H_{0}:\mu_{x}=\mu_{y} \\
H_{1}:\mu_{x}\neq \mu_{y}
\end{align*}

والذي يفضل كتابته كما يلي:

\begin{align*}
H_{0}:\mu_{x}-\mu_{y}=0 \\
H_{1}:\mu_{x}- \mu_{y}\neq0
\end{align*}

نفرض أن لدينا البيانات mydata، حيث سوف نقوم باختبار ما إذا كان هناك اختلاف هام في المتوسط بين حجم مبيعات المتجر A والمتجر B وذلك باتباع الخطوات التالية:

اولا:استيراد البيانات

In:
import pandas as pd
mydata = pd.read_csv('mydata.csv',sep=',')
shopA=mydata['shopA']
shopB=mydata['shopB']

ثانيا: استخدام box plot للتأكد من عدم وجود قيم متطرفة (outliers)

In:
import matplotlib.pyplot as plt
mydata.plot(kind='box')
plt.show()

ثالثاً: التأكد من أن البيانات تتبع التوزيع الطبيعي (normal distribution)، من خلال:

  • استخدام Q-Q plot:
In:
from scipy import stats
plt.subplot(1, 2, 1)
stats.probplot(mydata['shopA'], plot= plt)
plt.title('shopA')
plt.subplot(1, 2, 2)
stats.probplot(mydata['shopB'], plot= plt)
plt.title('shopB')
plt.show()

  • استخدام Shapiro-Wilk test، حيث أن:

فرض العدم $H_{0}$: البيانات تتبع التوزيع الطبيعي

والفرض البديل $H_{1}$: البيانات لا تتبع التوزيع الطبيعي

In:
from scipy.stats import shapiro
for r in (shopA,shopB):
    stat, p_value = shapiro(r)
    print(r.name,"stat:",round(stat, 4), "P-value:", round(p_value, 4))
Out:
shopA stat: 0.9801 P-value: 0.431
shopB stat: 0.9928 P-value: 0.9788

لكل المجموعتين نلاحظ أن P-value اكبر من 0.05 وبالتالي يمكن القول أن البيانات تتبع التوزيع الطبيعي.

رابعاً: تحديد ما اذا كان التباين (variance) بين مجموعتي البيانات متساوي باستخدام Levene’s test، حيث أن:

فرض العدم $H_{0}$: التباين لمجموعتي البيانات متساوي.

والفرض البديل $H_{1}$: التباين لمجموعتي البيانات غير متساوي.

In:
from scipy.stats import levene
stat, p_value = levene(shopA,shopB)
print("stat:",round(stat, 4), "P-value:", round(p_value, 4))
Out:
stat: 0.3695 P-value: 0.5444

نلاحظ أن P-value اكبر من 0.05 وبالتالي يمكن القول أن مجموعتي البيانات لها نفس التباين.

خامساً: تحديد ما اذا كان هناك إرتباط (correlation) بين مجموعتي البيانات باستخدام scatter plot، كما يلي:

In:
import seaborn as sns
sns.scatterplot(shopA, shopB)
plt.show()

سادساً: تطبيق t-test، حيث أن:

فرض العدم $H_{0}$: متوسطي مجموعتي البيانات متساوية.

والفرض البديل $H_{1}$: متوسطي مجموعتي البيانات غير متساوية.

ونظراً لتحقق الفروض اعلاه سوف نستخدم t-test للعينات المستقلة ذات التباين المتساوي:

In:
from scipy.stats import ttest_ind
stat, p_value = ttest_ind(shopA, shopB)
print("stat:",round(stat, 4), "P-value:", round(p_value, 4))
Out:
stat: 1.1574 P-value: 0.2494

نلاحظ أن P-value اكبر من 0.05 وبالتالي يمكن القول أنه ليس هناك اختلاف بين متوسطي المجموعتين.

ملاحظات هامة:

  • إذا لم يتحقق فرض تساوي التباين للمجوعتين نستخدم Welch’s t-test:
stat, p_value = ttest_ind(shopA, shopB,equal_var=False)
print("stat:",round(stat, 4), "P-value:", round(p_value, 4))
  • إذا لم يتحقق فرض استقلال للمجوعتين نستخدم:
from scipy.stats import ttest_rel
stat, p_value = ttest_rel(shopA, shopB)
print("stat:",round(stat, 4), "P-value:", round(p_value, 4))
جميع الحقوق الفكرية لهذا المقال محفوظة © موقع د. عزيز، يمنع إعادة نشره في موقع آخر

مقالات ذات صلة:

  • مقدمة في البايثون Python

    بايثون هي لغة برمجة متعددة الأغراض، تعمل على عدد من المنصات مثل ويندوز (Windows) و ماك (Mac OS X) و لينوكس (Linux).... مقدمة في البايثون Python
    اقرأ المزيد
  • قراءة ملفات البيانات في بايثون Python

    في هذا المقال سوف نستعرض كيف يمكن قراءة ملفات البيانات بأنواعها المختلفة باستخدام لغة البرمجة بايثون. في البداية نحتاج... قراءة ملفات البيانات في بايثون Python
    اقرأ المزيد
  • دوال القائمة (list) في بايثون Python

    تعتبر القائمة (list) احد انواع هياكل البيانات شائعة الاستخدام في في لغة البرمجة بايثون والتي يمكن أن تحوي انواع مختلفة... دوال القائمة (list) في بايثون Python
    اقرأ المزيد

شارك بتعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *


The reCAPTCHA verification period has expired. Please reload the page.

د. عزيز عوض الله الجعيد
دكتوراه في الإحصاء، عالم بيانات، مبرمج، مهتم في التحليل المتقدم، والبيانات الضخمة والذكاء الاصطناعي، لمزيد من المعلومات أضغط هنا

  • YouTube
جميع الحقوق محفوظة © موقع د. عزيز