
فرض کنید در یک تحقیق مطالعه بازار علاقهمند هستیم بدانیم آیا مشتریان هنگام خرید محصولات مواد غذایی به اطلاعات برچسب سلامت (شکل-۱) روی بستهبندی توجه میکنند یا خیر.

ممکن است یک فرضیه محقق در چنین تحقیقی این باشد که جنسیت روی توجه به اطلاعات برچسب سلامت هنگام خرید اثرگذار است؛ احتمالاً زنان هنگام خرید بیشتر به اطلاعات مربوط به سلامتی مواد غذایی توجه کنند. برای بررسی دادهمحور چنین فرضیهای، محقق پرسشنامهای طراحی میکند و بر اساس دادههای آن سعی میکند رابطه بین جنسیت و توجه به اطلاعات برچسب سلامت را بررسی کند. چنین اطلاعاتی در فایل cats_data.csv آمده و در نرمافزار R دادهها وارد شده است. همانطور که مشخص است این دادهها دارای دو ستون هستند که یکی مربوط به جنسیت است (F/M) و دیگری پاسخ به این سؤال که آیا پاسخدهنده هنگام خرید محصولات مواد غذایی به اطلاعات برچسب سلامت روی بستهبندی توجه میکنند (Yes/No).
1 2 3 4 5 6 7 8 9 | > #Read Data from File > cats_data <- read.csv('cats_data.csv', header = TRUE) > dim(cats_data) [1] 200 2 > head(cats_data, 3) gender answer 1 F Yes 2 F Yes 3 F Yes |
همانطور که مشخص است در این مثال، هر دو متغیر، رستهای (Categorical) هستند. به زبان ساده متغیرهای رستهای متغیرهایی هستند که روی آنها اعمال ریاضی مانند جمع و ضرب معنی ندارد. بنابراین نمیتوان از روشهایی مانند مقایسه میانگین و انحراف معیار که برای متغیرهای عددی (Numeric) معنیدار هستند استفاده کرد. در دادههای بالا تعداد زنان و مردان و همینطور تعداد کسانی که به سؤال پرسشنامه پاسخ بله/خیر دادند به ترتیب زیر محاسبه میشود:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | > #Read Data from File > cats_data <- read.csv('cats_data.csv', header = TRUE) > dim(cats_data) [1] 200 2 > head(cats_data, 3) gender answer 1 F Yes 2 F Yes 3 F Yes > #Frequency Table > table(cats_data$gender) F M 38 162 > table(cats_data$answer) No Yes 124 76 |
توجه شود در هر دو متغیر، تعداد دادهها در رستههای مختلف باهم متفاوت است.
حال سؤال تحقیق این است آیا بین این دو متغیر رستهای رابطهای برقرار است یا خیر؟ آیا جنسیت میتواند پیشبینی کننده توجه به برچسب سلامت هنگام خرید باشد؟
جدول متقاطع (Cross Tabulation) در چنین حالتی بکار میرود که علاقهمند به ارزیابی رابطه بین دو متغیر رستهای در دادهها هستیم. توجه کنید در این مسئله، هرکدام از متغیرهای رستهای دو حالت بیشتر به خود نمیگیرند. بنابراین در این مثال میتوان دادهها را در قالب یک جدول ۲ در ۲ خلاصهسازی کرد. در R کد زیر را برای ایجاد Cross Tab روی دادههای بالا استفاده کردم:
1 2 3 4 5 6 7 | > #Cross Tabulation > cross_tab <- table('Gender' = cats_data$gender, 'Answer' = cats_data$answer) > cross_tab Answer Gender No Yes F 10 28 M 114 48 |
برای مثال در جدول بالا مشخص میشود در این نمونه، ۱۰ نفر از خانمها هنگام خرید محصولات مواد غذایی به اطلاعات برچسب سلامت روی بستهبندی توجه نمیکنند و در مقابل ۲۸ نفر از خانمها توجه میکنند. این نسبت در گروه مردان، ۱۱۴ به ۴۸ است. اما همانطور که مشخص است تعداد مردان و زنان در این نمونه باهم برابر نیست. بنابراین توجه به اعداد مطلق میتواند گمراهکننده باشد. پس بهتر است روی ردیفها درصد بگیریم:
1 2 3 4 5 | > round(prop.table(cross_tab, 1) * 100, 1) #over rows Answer Gender No Yes F 26.3 73.7 M 70.4 29.6 |
در این صورت ملاحظه میکنیم در بین زنان حدود ۷۴ درصد هنگام خرید به اطلاعات برچسب سلامت توجه میکنند و ۲۶ درصد توجه نمیکنند. این نسبت برای مردان ۳۰ درصد به ۷۰ درصد است. همینطور میتوان این درصدها را به روش زیر این بار روی ستونها به دست آورد:
1 2 3 4 5 | > round(prop.table(cross_tab, 2) * 100, 1) ##over columns Answer Gender No Yes F 8.1 36.8 M 91.9 63.2 |
درک شهودی از نحوه تحلیل جدول متقاطع
آیا از روی تحلیلهایی که تاکنون انجام دادم، میتوانید حدس بزنید جنسیت رابطهای با توجه به برچسب سلامت هنگام خرید ندارد؟
توجه کنید در این نمونه تصادفی نسبت کسانی که هنگام خرید به برچسب سلامت توجه میکنند به کسانی که توجه نمیکنند ۳۸ به ۶۲ درصد است:
1 2 3 4 5 | > #No/Yes Percentage > round(table(cats_data$answer) / nrow(cats_data) * 100, 1) No Yes 62 38 |
حال اینطور میتوان فکر کرد اگر مبنای تقسیمبندی به دو گروه، هیچ ربطی به توجه به برچسب سلامت نداشته باشد در هر دو گروه زیرمجموعه کماکان این نسبت کلی مشاهدهشده در دادهها، برقرار است. مثلاً منطقاً ما انتظار نداریم اینکه رنگ چشم پاسخدهنده مشکی است یا نیست، روی توجه به برچسب سلامت اثر بگذارد. پس اگر فرضاً میتوانستیم دادههای پاسخدهندگان را به دو گروه افراد با رنگ چشم مشکی و افراد با رنگ چشم غیرمشکی تقسیم کنیم در هر دو گروه تقریباً ۳۸ درصد اعلام میکردند هنگام خرید به برچسب سلامت توجه میکنند و ۶۲ درصد اعلام میکردند توجه نمیکنند.
در سمت مقابل، نسبت زنان به مردان در نمونه ما ۱۹ به ۸۱ درصد است. اگر زن بودن یا مرد بودن رابطهای با توجه به برچسب سلامت نداشته باشد تقریباً باید نسبت زنان به مردان در دو گروهی که به پرسش پاسخ بله و نه دادند، نزدیک به ۱۹ به ۸۱ بماند. درحالیکه در گروهی که پاسخ بله دادند نسبت زنان به مردان ۸ به ۹۲ درصد است و در گروهی که پاسخ خیر دادند، این نسبت ۳۷ به ۶۳ است. پس به نظر میرسد این دو متغیر با یکدیگر رابطهای دارند.
1 2 3 4 5 | > #Male/Female Percentage > round(table(cats_data$gender) / nrow(cats_data) * 100, 1) F M 19 81 |
وقتی دو متغیر به یکدیگر مربوط نیستند، طبیعی است چون نمونه، تصادفی جمعآوری شده بازهم این دو نسبت در هر دو گروه دقیقا برابر نباشد. برای نمونه نمیتوان انتظار داشت اگر در گروه افراد با چشم مشکی ۳۸ درصد اعلام میکنند هنگام خرید به برچسب سلامت توجه میکنند و ۶۲ درصد اعلام میکنند توجه نمیکنند، دقیقا همین اعداد در گروه با افراد با چشم غیرمشکی دیده شود و ممکن است این نسبت ۵۹ درصد به ۴۱ درصد شود.
آزمون کای-دو (Chi-Square Test)
پرسش این است که چه میزان تفاوت را میتوان صرفاً در اثر تصادف و شانس درنظر گرفت و چه میزان تفاوت از نظر آماری معنیدار است. کارل پیرسون (Karl Pearson) برای بررسی چنین پرسشی آزمون کای-دو را پیشنهاد داد. در آزمون کای-دو فرضیه صفر (H0) این است که دو متغیر با یکدیگر هیچ رابطهای ندارند و فرضیه مقابل این است که دو متغیر باهم رابطه دارند. معمولاً اگر مقدار p-value از ۰٫۰۵ کوچکتر شود، فرضیه H0 رد میشود.
اگر مسیر فکری که در بخش درک شهودی از نحوه تحلیل جدول متقاطع را آوردم، دنبال کنیم میتوان گفت تفاوت بین فراوانی مشاهدهشده (آنچه در دادهها وجود دارد – ) و فراوانی انتظاری (آنچه در صورت عدم وجود رابطه بین دو متغیر انتظار داریم رخ دهد –
) محور تحلیل است. در جدول متقاطع دادههای مثال، ۲۸ نفر از زنان به هنگام خرید محصولات مواد غذایی به اطلاعات برچسب سلامت روی بستهبندی توجه میکنند. این فراوانی مشاهده شده است. اگر رابطهای بین دو متغیر وجود نداشته باشد انتظار ما این است در کل دادهها و هر زیرمجموعه تصادفی از دادهها ۳۸ درصد از پاسخدهندگان به هنگام خرید به اطلاعات برچسب سلامت توجه کنند. پس اگر رابطهای بین جنسیت و توجه به اطلاعات برچسب وجود نداشته باشد، این نسبت در زنان هم برقرار است. یعنی فراوانی انتظاری ۱۴٫۴۴ خواهد بود. تفاوت بین عدد این دو خطا (Residual) است.
مقدار خطا را میتوان روی تمام حالتها تکرار کرد و خطا را برای محاسبه تمام فراوانیهای موجود در جدول متقاطع بکار برد.
آماره آزمون پیشنهادی پیرسون بر همین مبنا تعریف شده است:
برای آنکه خطاهای مثبت و منفی یکدیگر را خنثی نکنند، توان دوم آنها در نظر گرفته شده است. و البته برای آنکه در هر مسئله این کمیت به مقیاس اعداد وابسته نشود، بر فراوانی انتظاری تقسیم میگردد. این آماره آزمون با تقریب از توزیع کای-دو پیروی میکند.
در ادامه، من در این مثال تمام محاسبات آماره آزمون را انجام دادم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | > #Chi-square Statistics Calculation > df <- data.frame('gender' = rep(c('F', 'M'), by = 2), + 'answer' = rep(c('No', 'Yes'), each = 2)) > df$f_o <- as.vector(cross_tab) > df$f_e <- c(table(cats_data$gender) * 0.62, table(cats_data$gender) * 0.38) > df$z_i <- (df$f_o - df$f_e) ^ 2 / df$f_e > df gender answer f_o f_e z_i 1 F No 10 23.56 7.804482 2 M No 114 100.44 1.830681 3 F Yes 28 14.44 12.733629 4 M Yes 48 61.56 2.986901 > #Chi-square Statistics > chi_sq_stat <- sum(df$z_i) > chi_sq_stat [1] 25.35569 |
سپس این آماره آزمون را میتوانیم با توزیع شناختهشده کای-دو با درجه آزادی مشخص مقایسه کنیم. برای این منظور باید درجه آزادی را محاسبه کنیم که برابر تعداد ردیفهای جدول متقاطع منهای یک ضربدر تعداد ستونهای جدول متقاطع منهای یک است. برای این مثال درجه آزادی برابر ۱ به دست میآید. درنهایت احتمال این را حساب میکنم که آماره محاسبهشده از این توزیع آمده باشد (p-value).
1 2 | > 1- pchisq(chi_sq_stat, df = 1) [1] 4.767434e-07 |
همانطور که ملاحظه میکنید، مقدار p-value از ۰٫۰۵ بسیار کوچکتر است و فرض H0 را رد میکنم.
اما این محاسبات را میتوانید در R، خیلی راحتتر با استفاده از تابع chisq.test به شکل زیر انجام دهید:
1 2 3 4 5 6 7 | > #Chi-square Test > chisq.test(cross_tab, correct = FALSE) Pearson's Chi-squared test data: cross_tab X-squared = 25.356, df = 1, p-value = 4.767e-07 |
با نتایج بالا فرضیه H0 رد میشود. پس به این جمعبندی میرسیم بر اساس این نمونه جنسیت بر روی توجه به اطلاعات برچسب سلامت هنگام خرید اثرگذار است. توجه شود آزمون کای-دو درباره رابطه علیت که من در گزاره قبل مطرح کردم اظهارنظری نمیکند، رابطه علیت از فرضیه منطقی محقق به دست میآید. آزمون کای-دو تنها بررسی میکند که آیا دو متغیر باهم رابطه دارند یا خیر و معلوم نمیکند کدامیک علت دیگری است.
آزمون دقیق فیشر (Fisher’s Exact Test)
آماره آزمونی که پیرسون پیشنهاد داد با تقریب از توزیع کای-دو پیروی میکند. هرچه اندازه نمونه بیشتر باشد، توزیع آماره آزمون به توزیع کای-دو نزدیکتر است. ولی بر اندازههای کوچک نمونه، این آزمون غیردقیق میشود. به همین خاطر آزمون دقیق فیشر پیشنهادشده است. قانون سرانگشتی این است که اگر فراوانی انتظاری برای هریک از اعداد جدول بزرگتر از ۵ باشد، اندازه نمونه کفایت میکند، در غیر این صورت میتوان از آزمون دقیق فیشر استفاده کرد. من در R این آزمون را به ترتیب زیر انجام دادم:
1 2 3 4 5 6 7 8 | > #Chi-square Test w/ Yates Continuity Correction > chisq.test(cross_tab, correct = TRUE) Pearson's Chi-squared test with Yates' continuity correction data: cross_tab X-squared = 23.52, df = 1, p-value = 1.236e-06 |
در این آزمون هم مقدار p-value از ۰٫۰۵ کوچکتر است، بنابراین فرض H0 رد میشود.
اصلاح پیوسته Yates
مشخص شده است در جداول دو در دو، آزمون کای-دو پیرسون میتواند مقادیر p-value بسیار کوچکی ایجاد کند، این امر ممکن است به بروز خطای نوع اول منجر شود؛ یعنی در واقعیت دو متغیر باهم رابطهای نداشته باشند درحالیکه ما به اشتباه فرض H0 را رد کنیم. اصلاح پیوسته Yates هنگام محاسبه آماره آزمون از قدرمطلق خطاها مقدار ۰٫۵ را کم میکند و سپس بقیه محاسبات را ادامه میدهد. بهاینترتیب آماره آزمون به شکل زیر درمیآید:
برای اعمال اصلاح پیوسته Yates به ترتیب زیر عمل کردم:
1 2 3 4 5 6 7 8 | > #Chi-square Test w/ Yates Continuity Correction > chisq.test(cross_tab, correct = TRUE) Pearson's Chi-squared test with Yates' continuity correction data: cross_tab X-squared = 23.52, df = 1, p-value = 1.236e-06 |
همانطور که در بالا میبینید، مقدار p-value بزرگتر از حالتی است که اصلاح پیوسته Yates را اعمال نکردم. در ادبیات آمار، برخی در نقد این روش بحث کردند.
فرضیات آزمون کای-دو
آزمون کای-دو برای تحلیل دادههای جدول متقاطع، دارای این فرض است که مشاهدات از هم مستقل هستند. در این مثال، چنین فرضی منطقی است،. به این معنی که پاسخ افرادی که در این تحقیق شرکت کردند از هم مستقل است (مثلاً یک نفر دو بار به پرسشنامهای پاسخ نداده و یا نظر افراد بر رویهم اثری نداشته است).
همچنین فراوانی انتظاری اعداد جدول از ۵ بزرگتر است. اگر این فرض برقرار نباشد، توصیه این است که از آزمون فیشر برای محاسبات استفاده گردد.
تحلیل دادههای جدول متقاطع در حضور دادههای ترتیبی (Ordinal Data)
دادههای ترتیبی، دادههایی هستند که گرچه رستهای هستند ولی بزرگ و کوچکی برای آنها معنیدار است. برای مثال سطح رضایت مشتری (راضی، متوسط و ناراضی) نمونهای از دادههای ترتیبی است. آزمون کای-دو ترتیب نهفته در اطلاعات را نادیده میگیرد.
در چنین مواردی آزمون Cochran-Mantel-Haenszel نتایج دقیقتری به دست میدهد. مانند آزمون کای-دو در این آزمون هم فرض H0 این است که دو متغیر با یکدیگر هیچ رابطهای ندارند و فرضیه مقابل این است که دو متغیر باهم رابطه دارند. بهطور مشابه، اگر مقدار p-value از ۰٫۰۵ کوچکتر شود، فرضیه H0 رد میشود.
من در مقاله “چگونه رابطه علّی را تشخیص دهیم؟“، مثالی درباره نتایج نظرسنجی خدمات پشتیبانی یک شرکت آوردم. در این مثال شرکتی برای ارائه خدمات پشتیبانی مشتریان علاوه بر روش فعلی (تماس تلفنی)، پلتفرم آنلاین جدیدی را عرضه کرده است. شرکت تمایل دارد ببیند آیا بین استفاده از این دو روش و رضایت کلی مشتریان از دریافت خدمات پشتیبانی رابطهای وجود دارد یا خیر. در این مثال هر دو متغیر رستهای هستند؛ روش دریافت خدمت دارای دو حالت (تماس تلفنی یا پلتفرم آنلاین) و رضایت کلی مشتری دارای سه حالت (راضی، متوسط، ناراضی) که یک متغیر ترتیبی هم است.
برای نمونه شکل-۲ نشان میدهد از ۱۲۱۸ نفری که در این نظرسنجی خدمات پشتیبانی را از طریق تماس تلفنی دریافت کردند، ۳۷۳ نفر معادل ۳۱ درصد از دریافت خدمت راضی بودند. همچنین میتوان گفت از بین ۸۹۱ نفری که در این نظرسنجی بیان کردند از دریافت خدمات پشتیبانی راضی هستند، ۳۷۳ نفر معادل ۴۲ درصد خدمات پشتیبانی را از طریق تماس تلفنی دریافت کردند.

من نتایج نظرسنجی را در قالب یک ماتریس آوردم و سپس آزمونهای کای-دو و Cochran-Mantel-Haenszel را روی دادهها انجام دادم:
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 | > #Cross Tab on Ordinal Data > #Create Cross Tab Data > data <- matrix(c(518, 373, 863, 712, 207, 133), + ncol = 2, byrow = T, + dimnames = list(c("High", "Medium", "Low"), + c("Phone", "Online_Platform"))) > data Phone Online_Platform High 518 373 Medium 863 712 Low 207 133 > #Chi-square Test > chisq.test(data) Pearson's Chi-squared test data: data X-squared = 5.4869, df = 2, p-value = 0.06435 > #Cochran-Mantel-Haenszel Test > library('vcdExtra') > CMHtest(data, rscores = c(3, 2, 1)) Cochran-Mantel-Haenszel Statistics AltHypothesis Chisq Df Prob cor Nonzero correlation 0.0024818 1 0.960268 rmeans Row mean scores differ 5.4849247 2 0.064412 cmeans Col mean scores differ 0.0024818 1 0.960268 general General association 5.4849247 2 0.064412 |
در نتایج بالا توجه کنید برای انجام آزمون Cochran-Mantel-Haenszel از کتابخانه vcdExtra در نرمافزار R استفاده کردم. ازآنجاکه در جدول من، متغیر سطح رضایت که در ردیفها منعکس شده، ترتیبی است در تابع CMHtest با استفاده از آرگومان rscores برای ردیفها ترتیب ۳، ۲ و ۱ تعریف کردم. اگر ستونها دارای ترتیب باشند میتوانید بهطور مشابه مقدار cscore را در این تابع مقداردهی کنید.
برای بررسی رابطه کلی بین دو متغیر، به نتایج سطر آخر توجه کردم:
1 2 | AltHypothesis Chisq Df Prob general General association 5.4849247 2 0.064412 |
بر اساس نتایج بالا، مقدار p-value برابر (۰٫۰۶۴۴۱۲) است که نشان میدهد فرض H0 را نمیتوان رد کرد. پس نمیتوان گفت رابطهای بین روش دریافت خدمت و رضایت کلی مشتری از دریافت خدمت وجود دارد.
کاربرد آزمون کای-دو در انتخاب متغیرها (Feature Selection) در یادگیری ماشین
در مسائل نظارتشده (Supervised Learning) یادگیری ماشین، آزمون کای-دو میتواند برای انتخاب متغیرها استفاده گردد. زمانی که متغیر پاسخ یا وابسته یک متغیر رستهای است و متغیرهای پیشبینی کننده نیز رستهای هستند آزمون کای-دو میتوان برای سنجش این موضوع استفاده شود که از بین متغیرهای پیشبینی کننده کدامیک با متغیر پاسخ رابطه دارد. اگر در آزمون کای-دو فرض H0 رد نشود، آن متغیر میتواند بهعنوان متغیر پیشبینی کننده از مدل یادگیری ماشین حذف گردد.
منابع:
Agresti, A. (2018). “An Introduction to Categorical Data Analysis”, John Wiley & Sons
Field, A., Miles, J., & Field, Z. (2012). “Discovering Statistics Using R”. SAGE Publications Ltd
مقاله خوبی بود. بنظر من به جدول عوامل تاثیرگذار روی انتخاب از روی برچسب باید محل زندگی (بالا یا پایین شهر بودن و خود شهر) اضافه بشه. بطور قطع از بین افرادی که پایین شهر زندگی میکنند (مثلا جنوب تهران)، درصد افرادی که به برچسب توجه دارند شاید ۱۰ بتونه باشه. یا خود شهر: افرادی که توی شهرهای مرکزی مثل تهران، شیراز و … زندگی میکنند طبیعتا بیشتر از کسانی که در شهرستانها یا شهرهای کوچک و … زندگی میکنند، به برچسبها دقت میکنند. خیلی از شهرها و محله ها اصلا با این مفاهیم ناآشنا هستند چون اطلاع رسانی خوبی داده نمیشه.
از زحمات شما متشکرم