در مقاله تابع توزیع احتمال شرح دادم چگونه تابع توزیع، متغیر تصادفی و نحوه توزیع هر یک از مقادیر آن را تبیین میکند. توزیع نمونهگیری درباره توزیع هر یک از مقادیر متغیر تصادفی نیست بلکه توزیع آماره (Statistics) یک نمونه با اندازه مشخص را نشان میدهد. در این مقاله بهصورت شهودی مفهوم توزیع نمونهگیری را شرح میدهم.
مروری بر مفاهیم نمونهگیری
تصور کنید یک ظرف بزرگ شکلات رنگی مانند شکل-۱ روبروی شماست. شما علاقهمند هستید میانگین وزن شکلاتهای رنگی را در این ظرف بدانید. مجموعهای که ما علاقهمند هستیم درباره آن بدانیم، در این مثال کل شکلاتهای رنگی داخل ظرف، جامعه آماری (Population) نامیده میشود. میانگین وزن شکلاتها، پارامتر جامعه نام دارد. پارامتر جامعه ویژگی موردنظر ما در جامعه است که میخواهیم اندازه بگیریم. برای برآورد این پارامتر جامعه، بهجای وزن کردن همه شکلاتهای داخل ظرف و محاسبه میانگین آنها، میتوان از نمونهگیری استفاده کرد. هر زیرمجموعهای از جامعه، نمونه (Sample) نامیده میشود. ما بهندرت به خود نمونه علاقهمند هستیم بلکه از نمونه استفاده میکنیم به امید آنکه درباره جامعه اطلاعات موردنظر را به دست آوریم.
اگر نمونه ویژگیهای یک نمونه قابل استناد را داشته باشد، آنگاه دارای اعتبار خارجی (External Validity) است یعنی میتوان از آن نمونه محدود به استنباط از جامعه رسید.
هر آنچه به جامعه مربوط است پارامتر نامیده میشود و هر آنچه به نمونه مربوط است، آماره نام دارد. در شکل-۲ این رابطه مشخص است. برای مثال، بر اساس میانگینی که در نمونه میبینیم ((bar)x) میخواهیم به تخمینی از میانگین جامعه (µ) برسیم. همانطور که از جدول زیر مشخص است، در آمار معمولاً ویژگی در نمونه با جامعه به دو شکل متفاوت نمایش داده میشود تا این تفاوت را روشن کند.
برای مثال فرض کنید یک نمونه تصادفی ۱۰ تایی از ظرف شکلات برمیدارم و میانگین وزن شکلاتهای نمونه ۱٫۴۹ گرم میشود. واضح است که اگر یک نمونه تصادفی ۱۰ تایی دیگر از جامعه بگیرم، میانگین نمونه عدد دیگری خواهد بود. بنابراین گرچه میانگین وزن کل شکلاتها ثابت است ولی میانگین وزن نمونههای ۱۰ تایی یک متغیر تصادفی است و اعداد متفاوتی به خود میگیرد. اگر نمونهگیری تصادفی باشد، این تفاوت بین میانگین وزن نمونههای مختلف تصادفی است.
توزیع نمونهگیری میانگینها (Sampling Distribution of the Means)
اما پرسشی که مطرح میشود این است که چقدر مطمئن هستیم که میانگین جامعه به میانگین وزن شکلاتهای نمونه نزدیک باشد. برای پاسخ به این پرسش باید توزیع احتمال آماره نمونه با اندازه مشخص را مطالعه کنیم. به این توزیع، توزیع نمونهگیری میگویند.
تصور کنید از ظرف شکلات بالا، یک نمونه تصادفی ۱۰ تایی بگیرم و وزن شکلاتها را یادداشت کنم و از وزن آنها میانگین بگیرم و این میانگین را ذخیره کنم. سپس شکلاتها را دوباره به ظرف برگردانم و دوباره یک نمونه تصادفی بگیرم و میانگین وزن شکلاتها را به دست آورم. تصور کنید این کار را بارها و بارها تکرار کنم و تعداد زیادی نمونه تصادفی ۱۰ تایی از جامعه بگیرم و هر بار میانگین این نمونهها را محاسبه کنم. حال اگر توزیع احتمال این میانگینها را رسم کنم، به توزیع نمونهگیری برای میانگین میرسم (شکل-۳).
اگر جامعه، در این مثال وزن شکلاتهای ظرف، از توزیع نرمال (Normal Distribution) پیروی کند، در این صورت توزیع نمونهگیری برای میانگین از توزیع نرمال با میانگین و واریانس زیر پیروی میکند:
در رابطه بالا µ میانگین جامعه، σ انحراف معیار جامعه و n اندازه نمونه است. همانطور که مشخص است میانگین توزیع نمونهگیری برای میانگین برابر میانگین جامعه است ولی انحراف معیار آن علاوه بر انحراف معیار جامعه به اندازه نمونه همبستگی پیدا میکند. هرچه اندازه نمونه بزرگتر باشد، توزیع نمونهگیری واریانس کمتری پیدا میکند؛ بهاینترتیب میانگین هر نمونه با احتمال بیشتری به میانگین واقعی جامعه نزدیک میشود.
حال اگر بدانیم میانگین وزن همه شکلاتهای ظرف ۱٫۴۵ گرم، انحراف معیار آنها ۰٫۲ گرم و اندازه نمونه ۱۰ است، میتوانیم از توزیع نرمال استفاده کنیم و به دست آوریم که اگر یک نمونه ۱۰ تایی از این ظرف شکلات برداریم، با احتمال ۰٫۹۵ بین چه بازهای قرار دارد (شکل-۴). درواقع در رابطه زیر باید a و b را پیدا کنیم:
برای محاسبه حدود ابتدایی و انتهایی بازه در رابطه بالا، میتوان در R به شکل زیر عمل کرد:
1 2 3 4 5 | alpha = 0.05 a = qnorm(alpha / 2, mean = 1.45, sd = 0.2 / sqrt(10)) b = qnorm(1 - alpha / 2, mean = 1.45, sd = 0.2 / sqrt(10)) print(c(a, b)) 1.326041 1.573959 |
البته واضح است که در بسیاری از مسائل کاربردی ما دسترسی به میانگین و انحراف معیار جامعه نداریم، اگر داشتیم که در قدم اول نمونه نمیگرفتیم تا به برآوردی از میانگین جامعه برسیم. به همین خاطر در عمل میانگین و انحراف معیار جامعه را از روی نمونه تخمین میزنیم که این موضوع را در مقاله دیگری بحث کردم.
قضیه حد مرکزی (Central Limit Theorem)
در مثال قبل فرض کردیم، توزیع جامعه نرمال است. اما در مسائل کاربردی، ممکن است لزوماً جامعه از توزیع نرمال پیروی نکند. خوشبختانه قضیه حد مرکزی در اینجا به کار میآید. قضیه حد مرکزی میگوید:
فرض کنید X1, X2, … , Xn نمونههای تصادفی از توزیع دلخواهی هستند که آن توزیع دارای میانگین μ و انحراف معیار σ است. اگر n “بهاندازه کافی بزرگ” باشد، آنگاه میانگین این نمونههای تصادفی با تقریب خوبی از توزیع نرمال پیروی میکند که این توزیع نرمال دارای میانگین μ و انحراف معیار σ/√n است.
بنابراین طبق قضیه حد مرکزی میتوان گفت هر چه اندازه نمونه بزرگتر شود، توزیع نمونهگیری برای میانگین به توزیع نرمال میل میکند، صرفنظر از آنکه توزیع جمعیت چه باشد. در کاربردهای عملی، نمونهای را که بیش از ۳۰ مشاهده دارد، میتوان نمونه خوبی در نظر گرفت که قضیه حد مرکزی درباره آن صادق است.
برای آنکه مفهوم قضیه حد مرکزی را در قالب مثالی نشان دهم، در کد زیر من یک جامعه با توزیع یکنواخت ایجاد کردم که ۱۰۰ هزار عضو دارد و مقادیر آن بین ۰ و ۱ است (شکل-۵). برای این توزیع یکنواخت میانگین ۰٫۵ و واریانس ۰٫۰۸۳ است.
حال تصور کنید از این توزیع یکنواخت بارها و بارها نمونههای ۵۰ تایی بگیریم. در کد زیر تابع sample_mean_func از جامعه نمونه گرفته و میانگین آن را حساب میکند. تابع replicate هزار بار sample_mean_func را اجرا میکند و میانگین نمونههای گرفته شده از جامعه را در sample_means ذخیره میکند. در گام بعدی توزیع میانگینهای این هزار نمونه را در قالب هیستوگرام رسم کردم. همانطور که ملاحظه میکنید گرچه جامعه از توزیع یکنواخت پیروی میکرد، توزیع میانگین نمونههای ۵۰ تایی به توزیع نرمال نزدیک است (شکل-۶). اگر میانگین و واریانس آن را محاسبه کنیم به پیشبینی قضیه حد مرکزی بسیار نزدیک است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #Create a population with uniform distribution set.seed(123) pop = runif(100000, min = 0, max = 1) hist(pop, main = "Dist. of Population") pop_mean = (1 - 0) / 2 pop_var = (1 - 0) ^ 2 / 12 #Sample size sample_size = 50 #Create function to calculate mean of a sample sample_mean_func = function(p = pop, s = sample_size) mean(sample(p, s)) #Replicate 1000 times sample_means = replicate(n = 1000, sample_mean_func()) #Dist. of sample means hist(sample_means, probability = TRUE, main = 'Sampling Distribution of the Means', xlab = 'Mean', breaks = 30) #Fit normal distribution on histogram xp = seq(min(sample_means) - 0.1, max(sample_means) + 0.1, length.out = 100) yp = dnorm(xp, mean = mean(sample_means), sd = sd(sample_means)) lines(xp, yp, col = 'red', lwd = 2) #Mean and variance of sampling distribution of the means print(list('mean' = mean(sample_means), 'variance' = var(sample_means))) $mean 0.4991318 $variance 0.001652944 #Mean and variance of sampling distribution of the means # based on Central Limit Theorem print(list('mean' = pop_mean, 'variance' = pop_var / sample_size)) $mean 0.5 $variance 0.001666667 |
توجه کنید قضیه حد مرکزی فقط برای توزیع نمونهگیری برای میانگین صادق است و برای توزیع نمونهگیری واریانس یا نسبت یا سایر پارامترهای جامعه کاربردی ندارد.
توزیع نمونهگیری واریانسها (Sampling Distribution of the Variances)
حال مسئله توزیع نمونهگیری برای واریانس را در نظر بگیرید. فرض کنید یک جامعه با توزیع نرمال استاندارد (Standardized Normal Distribution) داریم. توزیع نرمال استاندارد توزیع نرمالی است که دارای میانگین ۰ و انحراف معیار ۱ است. لازم به ذکر است هر توزیع نرمالی دیگری را میتوان به توزیع نرمال استاندارد تبدیل نمود. کافی است میانگین دادهها را از مقادیر آن توزیع کم کرده و نتیجه را تقسیمبر انحراف معیار کنید.
حال اگر بارها و بارها از این جامعه نمونههای n تایی بگیریم و واریانس این نمونهها را حساب کنیم (s2)، آنگاه آماره s2 (n-1) از توزیع کای-دو با درجه آزادی n-1 پیروی میکند. لازم به یادآوری است که میانگین توزیع کای-دو همان درجه آزادی (Degree of Freedom) و واریانس آن دو ضربدر درجه آزادی است.
برای درک بهتر این موضوع، من کد زیر را در R نوشتم. در ابتدا جامعهای با ۱۰۰ هزار عضو که دارای توزیع نرمال با میانگین ۱۰ و انحراف معیار ۲ ایجاد کردم (شکل-۷).
در ادامه، با محاسبه Z Score برای هر یک از مقادیر جمعیت، توزیع نرمال را به توزیع نرمال استاندارد تبدیل کردم. تابع sample_var_func از جامعه نمونه گرفته و واریانس آن را محاسبه میکند. سپس، با استفاده از تابع replicate هزار بار از مقادیر Z Score جامعه نمونههای ۵۰ تایی گرفتم و واریانس نمونهها را در sample_vars محاسبه و ذخیره کردم. توزیع واریانسهای این هزار نمونه را در قالب هیستوگرام رسم کردم (شکل-۸). درنهایت میانگین و واریانس توزیع نمونهگیری واریانسها را بر اساس نمونهها و بر اساس توزیع کای-دو به دست آوردم و مقایسه کردم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #Create a population with normal distribution set.seed(123) pop = rnorm(100000, mean = 10, sd = 2) hist(pop, main = 'Dist. of Population') pop_mean = 10 pop_var = 4 #Standardized scores of population z_score_pop = (pop - 10) / 2 #Sample size sample_size = 50 #Create function to calculate variance of a sample sample_var_func = function(p = z_score_pop, s = sample_size) var(sample(p, s)) #Replicate 1000 times sample_vars = replicate(n = 1000, sample_var_func()) #Dist. of (n-1) × s^2 hist((sample_size - 1) * sample_vars, probability = TRUE, main = 'Sampling Distribution of (n-1) × s^2', xlab = '(n-1) × s^2', breaks = 30) #Fit chi-square distribution on histogram xp = seq((sample_size - 1) * min(sample_vars), (sample_size - 1) * max(sample_vars), length.out = 100) yp = dchisq(xp, df = sample_size - 1) lines(xp, yp, col = 'red', lwd = 2, type = 'l') #Mean and variance of (n - 1) * s^2 print(list('mean' = mean((sample_size - 1) * sample_vars), 'variance' = var((sample_size - 1) * sample_vars))) $mean 49.42326 $variance 100.6588 #Mean and variance of (n - 1) * s^2 # based on chi-square distribution df = sample_size - 1 print(list('mean' = df, 'variance' = 2 * df)) $mean 49 $variance 98 |
یک جامعه را در نظر بگیرید که مشاهدات در آن دارای دو حالت هستند؛ ۰ یا ۱٫ نسبت تعداد حالت ۱ به کل جمعیت، پارامتر نسبت در جامعه (π) است. مثلاً فرض کنید در یک جامعه یا افراد به یک برند نظر مثبت دارند (۱) یا نظر مثبت ندارند (۰). تصور کنید در این جامعه ۶۰ درصد به آن برند علاقهمند هستند. پس پارامتر جامعه در این مثال ۰٫۶ است.
حال اگر بارها و بارها از این جامعه نمونههای n تایی بگیریم و نسبت را در این نمونهها حساب کنیم (p)، توزیع نمونهگیری نسبت دارای میانگین و واریانس زیر است:
برای نشان دادن مفهوم بالا، در کد زیر من ابتدا یک جامعه ۱۰۰ هزارتایی از ۰ و ۱ با پارامتر نسبت ۰٫۶ ایجاد کردم (شکل-۹). تابع sample_prop_func از جامعه نمونه گرفته و نسبت را در آن محاسبه میکند. سپس، با استفاده از تابع replicate هزار بار از جامعه نمونههای ۵۰ تایی گرفتم و نسبت در نمونهها را در sample_props محاسبه و ذخیره کردم. در گام بعد، توزیع این نسبتها را رسم کردم (شکل-۱۰). درنهایت میانگین و واریانس توزیع نمونهگیری نسبتها را بر اساس نمونهها و بر اساس فرمول مقایسه کردم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #Create a population with Bernoulli distribution set.seed(123) pop = sample(c(0, 1), size = 100000, replace = TRUE, prob = c(0.4, 0.6)) barplot(table(pop) / length(pop), main = 'Dist. of Population') pop_pi = 0.6 #Sample size sample_size = 50 #Create function to calculate proportion in a sample sample_prop_func = function(p = pop, s = sample_size) sum(sample(p, s)) / s #Replicate 1000 times sample_props = replicate(n = 1000, sample_prop_func()) #Dist. of proportions hist(sample_props, probability = TRUE, main = 'Sampling Distribution of the Proportions', xlab = 'Proportion', breaks = 30) #Mean and variance of the proportions print(list('mean' = mean(sample_props), 'variance' = var(sample_props))) $mean 0.60084 $variance 0.004584679 #Mean and variance of the proportions # based on formula print(list('mean' = pop_pi, 'variance' = pop_pi * (1 - pop_pi) / sample_size)) $mean 0.6 $variance 0.0048 |
منابع:
Forsyth, D. (2018). “Probability and Statistics for Computer Science”, UK: Springer International Publishing
Littlejohn, R. (2014), “Introduction to Applied Statistical Methods” – Course Material, University of Colorado, Boulder, USA