تابع توزیع تجربی در آمار — به زبان ساده
به کمک متغیر تصادفی، برای هر پیشامد، یک عدد از اعداد حقیقی در نظر گرفته میشود. از آنجایی که پیشامدها به صورت تصادفی رخ میدهند، طبیعی است برای هر کدام از آنها، مقداری تصادفی در نظر بگیریم. برای متغیرهای تصادفی و توصیف رفتار تصادفی آنها از تابع توزیع تجمعی که به اختصار CDF نامیده میشود، استفاده میکنیم. برای برآورد «تابع توزیع تجمعی» (Cumulative Distribution Function) براساس دادههای مشاهده شده، از تابع توزیع تجربی در آمار استفاده میکنیم. این تابع را با ECDF که مختصر عبارت Empirical Cumulative Distribution Function است، میشناسیم. تابع ECDF یکی از ابزارهای مهم در تجزیه و تحلیل دادهها در حوزه آمار و «دادهکاوی» (Data Mining) محسوب میشود.
در این نوشتار به بررسی تابع توزیع تجربی در آمار و اطلاعاتی که در اختیارمان قرار میدهد، خواهیم پرداخت. به عنوان پیشزمینه، بهتر است مطلب متغیر تصادفی، تابع احتمال و تابع توزیع احتمال و جدول فراوانی برای دادههای کیفی و کمی — مثالهای کاربردی را بخوانید. همچنین خواندن آزمایش تصادفی، پیشامد و تابع احتمال نیز خالی از لطف نیست.
تابع توزیع تجربی در آمار
ساختار دادهها و تمرکز و پراکندگی آنها در «تحلیل توصیفی دادهها» (Explanatory Data Analysis) مشخص میشود. جدول فراوانی و ساختار آن اطلاعات زیادی در مورد پراکندگی دادهها و بخصوص فراوانی درصدی مربوط به هر رده در اختیارمان قرار میدهد. به این ترتیب میتوانیم مشخص کنیم که احتمال مشاهده هر یک از ردهها یا مقدارها چقدر است. البته این کار را به شیوه تصویری نیز میتوان انجام داد.
معمولا برای نمایش دادهها و توصیف تصویری آنها از «هیستوگرام» (Histogram) یا نمودار بافتنگار استفاده میکنیم. در ادامه یک نمودار فراوانی را مشاهده میکنید که براساس شاخص اقتصاد آزاد (Free Economy Index) با مقدارهای مختلف (از ۲ تا ۹) روی محور افقی و تعداد کشورها در محور عمودی، ترسیم شده است.
از آنجایی که این اطلاعات در بازه سالهای 1970 تا 2015 تهیه شده است، مقدار شاخص یک کشور تقریبا 22 بار شمارش میشود، در نتیجه تعداد یا مجموع فراوانیها در محور عمودی نمودار فراوانی از تعداد کشورها (مثلا ۲۰۵ کشور) بیشتر شده است. همچنین برای حالتی که بخواهیم رابطه بین دو متغیر کمی را مشخص کنیم و مثلا متغیر تصادفی دو بُعدی باشد، میتوان از نمودار نقطهای (Scatter Plot) استفاده کرد. در ادامه چنین نموداری را برای نمایش رابطه بین شاخص اقتصاد آزاد و اندازه دولت مشاهده میکنید.
در نمودار بالا، نوع رابطه و شدت رابطه بین شاخص اقتصادی کشورها و بزرگی دولتها توصیف شده است، در نتیجه یک نمودار دو بعدی داریم که رابطه شاخصهای اقتصادی را با بزرگتر شدن دولتها نشان میدهد. این نمودار تاییدی بر رابطه مستقیم بین این متغیر را نشان میدهد به نوعی که مشخص است با بزرگ شدن شاخص اقتصاد آزاد (محور افقی) میزان بزرگی دولت (محور عمودی) نیز افزایش خواهد یافت. گونه دیگری از روشهای توصیفی دادهها نیز وجود دارد که احتمال وقوع هر یک از مقدارها را پیشبینی میکند. تابع توزیع تجمعی تجربی یکی از ابزارهای مفید برای توصیف رفتار تصادفی دادهها است که کمک میکند براساس احتمال، رخداد مقدار یا بازهای از مقدارها را برای یک متغیر تصادفی محاسبه کنیم. در این نوشتار با تابع توزیع تجربی در آمار، شیوه استفاده از آن و به کارگیری ECDF در حل مسائل آماری صحبت خواهیم کرد.
تابع توزیع تجربی چیست؟
همانطور که در ابتدا توضیح داده شد، برای برآورد تابع توزیع احتمال یا همان CDF، برمبنای دادهها ECDF را محاسبه و مورد استفاده قرار میدهیم. در گام اول میتوان تابع توزیع تجربی را ابزاری برای ترسیم مقدارهای یک ویژگی در نظر گرفت. ترسیم چنین نموداری با یک محور افقی آغاز میشود که دادهها یا مقدار یک ویژگی را از کم به زیاد در بر میگیرد. در محور عمودی نموداری که برای نمایش ECDF به کار میرود، درصد فراوانی تجمعی را مطابق با «جدول فراوانی» (Frequency Table) ترسیم میکنیم. هر نقطه در این نمودار روی محور عمودی بیانگر درصد مشاهداتی روی محور عمودی است که از آن نقطه کمتر هستند. برای مثال نمودار زیر، شاخص اقتصادی کشورها در سال ۲۰۱۵ را نشان میدهد. این نمودار نشان میدهد که اکثر کشورها (مثلا حدود ۹۰٪ کشورها) شاخص اقتصادی کمتر از ۸ دارند. بنابراین مقدار برآورد تابع احتمال تجمعی در نقطه ۸ برابر با 90٪ است.
اگر به کمک دادهها یک جدول فراوانی ایجاد کنیم، ستون فراوانی نسبی تجمعی، همان تابع توزیع تجربی را نشان میدهد. به این ترتیب میتوان براساس این تابع یا نمودار حاصل از آن، احتمال برای متغیر تصادفی را تا یک نقطه را محاسبه کرد. فرض کنید سوالی به این صورت مطرح شود که برای مثال چه درصدی از کشورها دارای شاخص اقتصادی کمتر از ۶ هستند؟ برای پاسخ به این سوال کافی است از روی نمودار زیر خطی عمود بر محور افقی در نقطه ۶ ترسیم کنیم تا نمودار را قطع کند. از محل تقاطع این خط با نمودار خطی عمود بر محور عمودی رسم میکنیم. مقدار مشخص شده روی محور عمودی پاسخ سوال را مشخص میکند. که در اینجا برابر با حدود 0.2 یا همان ۲۰٪ است.
در این نمودار همچنین میزان پراکندگی و واریانس شاخصهای اقتصادی نیز به خوبی دیده میشود. جاهایی که نقاط متراکم و نزدیک به یکدیگر هستند، کشورهای بیشتری حضور دارند و در جاهایی که نقطهها با فاصله و دور از هم هستند واریانس بیشتر است. از جنبه دیگر با توجه به این نمودار مشخص است که بیشتر کشورها دارای شاخص اقتصادی بین ۵ تا ۹ هستند و هیچ کشوری شاخصی برابر با ۱۰ یا ۱ ندارد. در نمودار بعدی همین اطلاعات را برای سال ۲۰۱۴ ترسیم کردهایم. با استفاده از این نمودار به سوالات زیر پاسخ خواهیم داد.
- چه درصدی از کشورها شاخص اقتصادی کمتر از ۶ دارند؟ - پاسخ: حدود 20٪
- حدود چند درصد از کشورها شاخص اقتصادی کمتر از ۸ دارند؟ پاسخ: حدود 97-98٪
حال به منظور مقایسه بین دو سال ۲۰۱۴ و ۲۰۱۵ فراوانی نسبی تجمعی را در یک نمودار نمایش میدهیم.
همانطور که دیده میشود به نظر میرسد در سالهای ۲۰۱۴ و ۲۰۱۵ کشورهای با شاخص اقتصادی حدود ۷ تا ۸ ثابت بودهاند و تغییری در تعدادشان وجود ندارد. ولی در این سالها شاخص اقتصادی در بازه ۶ تا ۷ شامل کشورهای بیشتری شده است و رشد اقتصادها را شاهد هستیم. به این ترتیب احتمال اینکه کشوری شاخص اقتصادی کمتر از ۷ داشته باشد در سال ۲۰۱۵ بیشتر از سال ۲۰۱۴ است. به این معنی که کشورهای با شاخص اقتصادی کمتر از ۷ در سال ۲۰۱۵ بیشتر از کشورهایی هستند که در سال ۲۰۱۴ شاخص کمتر از هفت داشتهاند.
برای یک مقایسه کلی، شاخصهای اقتصادی در بین کشورها از سال 1970 تا ۲۰۱۵ (در بازه ۵ ساله و یکساله) در نمودار زیر ترسیم شده است. هرچند این نمودار مقداری پیچیده به نظر میرسد ولی بواسطه آن میتوان دید که در بین این سالها، کشورها رشد اقتصاد خوبی داشتهاند و کشورها با شاخصهای کوچک تبدیل به کشورهایی با شاخصهای بزرگتر شدهاند.
در ادامه نموداری به منظور مقایسه شاخصهای اقتصادی در سالهای 1970-1985-2000 و 2015 ترسیم کردهایم تا مقایسه به خوبی انجام شده و نتایج روشنتر دیده شوند. مشخص است که روند تغییرات در شاخص اقتصاد در این سالها رو به رشد بوده است. در سال ۲۰۱۵ نیز روند رشد شدت گرفته و کشورهای پیشرو بیشتر شدهاند.
کدهای زیر که با زبان برنامهنویسی پایتون نوشته شدهاند برای ترسیم نمودارهای گفته شده لازم هستند. فایل اکسل که مربوط به اطلاعات این نمودارها است را از اینجا دریافت کنید. اگر میخواهید بدون تغییر کد زیر را اجرا کنید، این فایل را در پوشه TableauMomDataFiles که در درایو D ایجاد کردهاید، قرار دهید.
1#Import libraries
2import plotly.offline as pyo
3import plotly.graph_objs as go
4from plotly.graph_objs import *
5import plotly.plotly as py
6import matplotlib.pyplot as plt
7import seaborn as sns
8import numpy as np
9import missingno as msno
10import pandas as pd
11sns.set()
12
13pyo.offline.init_notebook_mode()
14%matplotlib inline
15
16#import data set and see
17df=pd.read_excel('D:\TableauMomDataFiles\Economic Freedom of the World.xlsx')
18df.head()
19
20msno.matrix(df)
21
22#histogram of Country Summary Index
23plt.hist(df['Summary Index'].dropna(),width=.725)
24plt.title('Summary Index Histogram')
25plt.xlabel('Summary Index')
26plt.ylabel('Number of Countries')
27plt.show()
28
29#scatter plot of summary index vs size of government
30plt.scatter(data=df,x=df['Summary Index'],y=df['Size of Government'])
31plt.title('Summary Index vs Size of Government')
32plt.xlabel('Summary Index')
33plt.ylabel('Size of Government')
34plt.show()
35
36#Create function for ECDF
37def ecdf(data):
38 xaxis=np.sort(data)#sort the data
39 yaxis=np.arange(1,len(data)+1)/len(data)#create percentages for y axis from 1% to 100%
40 return xaxis, yaxis
41
42#Create ECDF for Country Summary Index in 2015
43x2015,y2015=ecdf(df['Summary Index'][df.Year==2015])
44plt.plot(x2015,y2015, marker='.', linestyle='none')
45plt.title('ECDF Plot of Country Summary Index 2015')
46plt.xlabel('summary index')
47plt.ylabel('% of countries')
48plt.legend()
49plt.show()
50
51#Create ECDF for Country Summary Index in 2014
52x2014,y2014=ecdf(df['Summary Index'][df.Year==2014])
53plt.plot(x2014,y2014, marker='.', linestyle='none', color='red')
54plt.title('ECDF Plot of Country Summary Index 2014')
55plt.xlabel('summary index')
56plt.ylabel('% of countries')
57plt.legend()
58plt.show()
59
60#Create ECDF for Country Summary Index in 2014 and 2015
61x2015,y2015=ecdf(df['Summary Index'][df.Year==2015])
62plt.plot(x2015,y2015, marker='.', linestyle='none',color='blue')
63plt.plot(x2014,y2014, marker='.', linestyle='none', color='red')
64plt.title('ECDF Plot of Country Summary Index 2014 and 2015')
65plt.xlabel('summary index')
66plt.ylabel('% of countries')
67plt.legend()
68plt.show()
69
70#Plotting all 22 years worth of summary indexes for all countries (Bad idea by the way)
71
72#Created sorted list of years
73years=sorted(df.Year.unique().tolist())
74
75#Apply ecdf function to each year's worth of summary index data and plot it
76for year in years:
77 xs,ys=ecdf(df['Summary Index'][df.Year==year].dropna())
78 plt.plot(xs,ys, marker='.', linestyle='none')
79
80#Plot the ECDFs
81plt.title('ECDF Plots of Country Summary Index 1970 to 2015')
82plt.xlabel('summary index')
83plt.ylabel('% of countries')
84plt.show()
85
86#ECDF plots for 2000, 2005, 2010, 2015
87
88#Create year, color list, and dictionary to pair two lists
89quad=[1970,1985,2000,2015]
90colors=['orange','green','brown','blue']
91colordict=dict(zip(quad,colors))
92
93#Apply ecdf function to each year and plot it
94for year in quad:
95 xs,ys=ecdf(df['Summary Index'][df.Year==year].dropna())
96 plt.plot(xs,ys, marker='.', linestyle='none',color=colordict[year])
97
98#plot the 4 ecdfs
99plt.title('ECDF Plots of Country Summary Index 1970 to 2015 (Every 15 years)')
100plt.xlabel('summary index')
101plt.ylabel('% of countries')
102plt.legend(quad)
103plt.show()
اگر مطلب بالا برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشود:
- مجموعه آموزشهای آمار و احتمالات
- مجموعه آموزشهای نرمافزار آماری SPSS
- آموزش آزمون های فرض مربوط به میانگین جامعه نرمال در SPSS
- جدول فراوانی برای دادههای کیفی و کمی — مثالهای کاربردی
- فاصله اطمینان (Confidence Interval) — به زبان ساده
^^