آمار, داده کاوی 4932 بازدید

در دیگر نوشتارهای مجله فرادرس با مفهوم رگرسیون خطی و همچنین نحوه محاسبات آن آشنا شده‌‌اید. در این نوشتار با انواع روش های رگرسیونی خطی (Linear) و غیرخطی (NonLinear) آشنا خواهیم شد و کدهایی مربوط به پیاده‌سازی آن‌ها را در زبان برنامه‌نویسی R، فرا می‌گیریم. در این بین ابتدا با مفاهیم اولیه رگرسیون و سپس دستورات و کدهای R که تکنیک‌های مختلف رگرسیونی را اجرا می‌کنند، آشنا می‌شویم. از آنجایی که تکنیک‌های رگرسیونی برای داده‌های کیفی و کمی، به شکلی جداگانه‌ و متفاوت اجرا می‌شوند، اطلاع از نحوه اجرا این تکنیک‌های رگرسیونی در این حالت‌ها بسیار ضروری است، بخصوص برای کسانی که می‌خواهند در حوزه «علم داده» (Data Science) فعالیت کنند.

برای آشنایی بیشتر با مفاهیم اولیه در رگرسیون خطی، نوشتارهای رگرسیون خطی — مفهوم و محاسبات به زبان ساده، رگرسیون خطی چندگانه (Multiple Linear Regression) — به زبان ساده را بخوانید. همچنین خواندن مطلب هم خطی در مدل رگرسیونی — به زبان ساده و آموزش رگرسیون — مجموعه مقالات جامع وبلاگ فرادرس نیز خالی از لطف نیست.

انواع روش های رگرسیونی

اغلب کسانی که با مدل‌های رگرسیونی سر و کار دارند، از دو یا سه شیوه عمومی استفاده می‌کنند. در حالیکه تکنیک‌های رگرسیونی بسیار گسترده‌تر هستند و به منظور تحلیل‌های مختلف روی داده‌های کیفی و کمی به شکل‌های متفاوتی به کار می‌روند. در این نوشتار به 14 روش رگرسیونی اشاره می‌کنیم و کدهای مربوط به پیاده‌سازی آن‌ها را در زبان برنامه‌نویسی و محاسبات آماری R، فرا می‌گیریم. این تکنیک‌ها رگرسیونی در زیر به صورت فهرست‌وار معرفی شده‌اند.

  1. رگرسیون خطی (Linear Regression)
  2. رگرسیون لجستیک (Logistic Regression)
  3. رگرسیون چندکی (Quantile Regression)
  4. رگرسیون ستیغی (Ridge Regression)
  5. رگرسیون لاسو (Lasso Regression)
  6. رگرسیون شبکه الاستیک (Elastic Net Regression)
  7. رگرسیون مولفه‌های اصلی (Principle Component Regression)
  8. رگرسیون کمترین مربعات جزئی (Partial Least Square (PLS) Regression)
  9. رگرسیون بردار پشتیبان (Support Vector Regression)
  10. رگرسیون ترتیبی (Ordinal Regression)
  11. رگرسیون پواسون (Poisson Regression)
  12. رگرسیون دوجمله‌ای منفی (Negative Binomial Regression)
  13. رگرسیون شبه پواسن (Quasi Poisson Regression)
  14. رگرسیون کاکس (Cox Regression)

آگاهی از این روش‌ها به یک «دانشمند داده» (Data Scientist) کمک می‌کند که بهترین روش و الگو را برای تحلیل داده‌های خود به کار ببرد و در نتیجه مدل‌های ساخته شده از بیشترین کارایی و دقت برخوردار شوند.

هر یک از روش‌های رگرسیونی، پیش‌فرض‌های مخصوص خود را دارد که برحسب ویژگی و مشخصات «متغیرهای توصیفی» (Explanatory Variables) و «متغیر پاسخ» (Response Variable) تعیین می‌شوند. توجه داشته باشید که گاهی به متغیرهای توصیفی، «متغیرهای مستقل» (Independent Variable) و به متغیر پاسخ، «متغیر وابسته» (Dependent Variable) می‌گویند. البته اصطلاح متغیرهای «رگرسور» (Regressor) یا «پیشگو» (Predictor) نیز گاهی برای متغیرهای توصیفی به کار می‌رود.

فرضیه‌های صحت مدل رگرسیونی

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

ولی در اینجا هم کار تمام نشده است. پس از محاسبات و برآورد پارامترهای مدل باید فرضیه‌هایی که مدل رگرسیونی براساس آن استوار شده است نیز آزمون شود. بیشتر این گونه آزمون‌ها براساس باقی‌مانده‌های مدل صورت می‌گیرد در نتیجه باید آن‌ها را پس از پیدا کردن مدل و محاسبه باقی‌مانده‌ها (Residuals) مورد سنجش قرار داد.

این آزمون‌ها در فهرست زیر معرفی و توضیح داده شده‌اند. در ادامه با کدهایی از زبان R آشنا می‌شویم که این گونه آزمون‌ها را برایمان در مدل رگرسیونی اجرا می‌کنند.

  • بررسی نقاط پرت (Outlier): از آنجایی که وجود نقاط دور افتاده یا پرت (Outlier)، باعث می‌شود که برآورد پارامترهای مدل رگرسیونی به درستی صورت نگیرد، قبل از اجرای محاسبات مربوط به مدل رگرسیونی باید از عدم چنین داده‌های اطمینان حاصل پیدا کنیم و اگر به این گونه مشاهدات برخوردیم، آن‌ها را از مدل خارج کرده، سپس دوباره مدل‌سازی را انجام دهیم. نقاط پرت در اینجا به مشاهداتی اشاره دارد که باقی‌مانده‌های خیلی بزرگی نسبت به بقیه نقاط دارند.
  • هم‌خطی و هم‌خطی چندگانه: اگر متغیرهای توصیفی نسبت به هم وابستگی داشته باشند، پارامترهای مدل، واریانس بزرگی پیدا کرده، در نتیجه قابل اعتماد نیستند. در این حالت باید مدل رگرسیونی را از جهت وجود مشکل هم‌خطی (Colinearity)  یا  هم‌خطی چندگانه (Multicolinearity) مورد بررسی قرار داد.
  • ناهم‌واریانسی (Heteroscedasticity): باقی‌مانده‌های حاصل از مدل رگرسیونی باید دارای واریانس ثابت باشند. معمولا این موضوع به متغیر وابسته نیز بر می‌گردد. اگر با تغییر مقادیر متغیرهای توصیفی، واریانس متغیر وابسته تغییر کند، با مشکل ناهم‌واریانس مواجه هستیم. وزن‌دهی به مشاهدات یا تبدیل روی متغیر وابسته، روش‌هایی برای ثابت کردن واریانس متغیر پاسخ محسوب می‌شوند.
  • بیش‌برازش و کم‌برازش (Under and Over Fitting): به کارگیری متغیرهای توصیفی زیاد در کاهش میزان خطای مدل رگرسیونی موثر است ولی در این صورت ممکن است مدل دچار مشکل «بیش‌برازش» (Overfitting) شود. به این معنی که مدل قادر به پیش‌بینی دقیق مقادیر متغیر پاسخ برای مشاهداتی است براساس آن مدل ساخته شده ولی برای داده‌های جدید، توانایی پیش‌بینی مناسب را ندارد. عکس این حالت که کم‌برازش (Underfitting) نامیده می‌شود، ناکافی بودن متغیرهای توصیفی در مدل است، بطوری که واریانس مقادیر پیش‌بینی بسیار زیاد خواهد بود. به این ترتیب باید از مدل رگرسیونی استفاده کرد که تعداد متغیرهای آن مناسب بوده و چنین مسائلی را بوجود نیاورد.

۱. رگرسیون خطی

یکی از ساده‌ترین تکنیک‌های رگرسیون، رگرسیون خطی (Linear Regression) است که در آن متغیر پاسخ یا متغیر وابسته مقادیر عددی و پیوسته دارند. در این حالت رابطه بین متغیر وابسته و مستقل، یک رابطه خطی برحسب پارامترهای مدل است. چنین حالتی را در تصویر زیر مشاهده می‌کنید.

linear regression

زمانی که فقط یک متغیر مستقل وجود داشته باشد، مدل رگرسیونی خطی را ساده (Simple Regression) می‌نامند و اگر بیش از یک متغیر مستقل (توصیفی) وجود داشته باشد، رگرسیون را چندگانه (Multiple Regression) می‌گویند.

در اینجا، پارامترهای مدل، بوسیله کمینه‌سازی «مجموع مربعات خطا» (Sum of Square Error) صورت می‌گیرد که به این تکنیک، «رگرسیون عادی» (Ordinary Least Square) یا OLS نیز گفته می‌شود.

برای برازش و اجرای رگرسیون خطی، از مجموعه داده swiss که در بسته datasets از زبان R قرار دارد، استفاده می‌کنیم. ابتدا به این مجموعه داده نگاهی می‌اندازیم. برای دسترسی به این مجموعه کافی است کتابخانه datasets را بارگذاری کنید. البته از اینجا نیز این مجموعه داده با قالب فشرده را می‌توانید دریافت کنید. توجه داشته باشید که پس از خارج کردن این فایل از حالت فشرده، به یک فایل csv برخورد خواهید کرد که با دستور read.csv در R قابل بارگذاری است.

مجموعه داده swiss شامل 47 مشاهده و شش متغیر است که مربوط به ویژگی‌های اقتصادی و رشد جمعیت در 47 ناحیه مختلف فرانسوی زبان کشور سوئیس هستند. متغیرهای مربوط به باروری (Fertility)، درصد جمعیت کشاورزان از کل (Agriculture)، درصد نفرات برتر در آزمون نظامی (Examination)،  درصد افراد با تحصیلات عالی (Education)، درصد کاتولیک‌ها (Catholic) و درصد فوت نوزادان کمتر از یک سال (Infant.Mortality) در سال 1888 در این فایل، ثبت شده‌اند.

به منظور انجام محاسبات و برآورد پارامترهای رگرسیون OLS از تابع lm در زبان‌ برنامه‌نویسی R استفاده می‌شود. در ادامه نمونه‌ای از کدهای مربوطه را مشاهده می‌کنید.

همانطور که مشخص است رابطه بین متغیر وابسته (Fertility) با بقیه متغیرها که نقش متغیرهای مستقل را ایفا می‌کنند به صورت زیر نوشته شده است. واضح است که مجموعه داده نیز swiss نام دارد. توجه داشته باشید که در اینجا بقیه متغیرها را با نماد «.» مشخص کرده‌ایم.

$$ \large lm (Fertility \sim . , data = swiss) $$

حاصل اجرای این کد به صورت زیر است:

براساس خروجی‌ها و مقدار R-squared که برابر با 0٫7067 است،‌ می‌توان گفت که حدود ۷۰ درصد تغییرات متغیر وابسته، برحسب مدل بیان شده. همچنین در ستون (|Pr(>|t که همان «مقدار احتمال» (p-Value) است می‌توان همه پارامترها به جز پارامتر Examination را معنی‌دار (Significant) دانست. معنی‌دار بودن از لحاظ آماری در اینجا به معنی مخالف صفر بودن پارامتر است. به این ترتیب می‌توان حضور آن را در مدل، معنی‌دار در نظر گرفت.

نکته: متغیر یا پارامترهایی که از لحاظ آماری، معنی‌دار (مخالف صفر) هستند با علامت * در خروجی تابع lm مشخص شده‌اند.

۲. رگرسیون لجستیک

در رگرسیون لجستیک (Logistic Regression)، متغیر وابسته، به صورت دو دویی (Binary) است. به این معنی که مقادیر آن به دو طبقه صفر و یک دسته‌بندی شده‌اند. البته زمانی که از رگرسیون چند جمله‌ای لجستیک (Multinomial Logistic Regression) استفاده می‌کنید، ممکن است تعداد سطوح متغیر طبقه‌ای بیشتر از دو باشد. در این حال مدل رگرسیون لجستیک به شکل زیر نوشته می‌شود.

$$ \large P(Y = 1) = \dfrac{1}{1 + e^{ -(\beta_0 + \beta_1X_1 + \beta_2X_2 + \ldots + \beta_kX_k)}} $$

واضح است که در این مدل رگرسیونی، خطاها، دارای توزیع نرمال نیستند و متغیر وابسته دارای توزیع دو یا چند جمله‌ای است در نتیجه نمی‌توان از مدل رگرسیون ساده یا خطی استفاده کرد.

نکته: معمولا از این شیوه یا مدل رگرسیونی، برای طبقه‌بندی کردن مشاهدات جدید برحسب مقادیر قبلی استفاده می‌کنند و به نوع «یادگیری نظارت شده» (Supervised Learning) محسوب می‌شود. به این ترتیب اگر مقدار $$P(Y=1)$$ از یک مقدار آستانه (مثلا 0٫5) بیشتر باشد، آن مشاهده را در گروه ۱ طبقه‌بندی می‌کنیم.

برای اجرای رگرسیون لجستیک، از مجموعه داده‌های سرطان سینه (case2002) که در بسته یا کتابخانه Sleuth2 قرار دارد، استفاده می‌کنیم. این مجموعه داده شامل 147 مشاهده و 7 متغیر است. نمونه‌ای از اطلاعات مربوط به این داده‌ها را در ادامه مشاهده می‌کنید. اگر دسترسی به این کتابخانه برایتان مقدور نیست از اینجا نیز می‌توانید این فایل را دریافت و از حالت فشرده خارج کنید. یک فایل به نام case2002 از نوع csv در اختیارتان قرار خواهد گرفت که با دستور read.csv در R قابل بارگذاری است.

قرار است براساس متغیر مصرف سیگار روزانه (CD)، تشخیص دهیم که فرد با چه احتمالی دچار سرطان سینه (LC) خواهد شد.

نتیجه اجرای این کد، محاسبه احتمال داشتن سرطان براساس تعداد سیگارهای کشیده شده در روز است.

حال اگر مقادیر پیش‌بینی شده را ظاهر کنیم، احتمال ابتلا به سرطان برای افراد سیگاری مشاهده خواهد شد.

از آنجایی که تعداد مشاهدات زیاد است، فقط برای ۶۰ نفر اول، نتایج را نشان داده‌ایم. حال داشتن سرطان را برای افراد سیگاری برحسب مقدار احتمال ۵۰٪ انجام می‌دهیم.

به این ترتیب خروجی به صورت زیر در آمده و نشان می‌دهد که چه کسانی به احتمال زیاد مبتلا به سرطان خواهند شد. این امر با مقدار TRUE برای هر فرد مشخص شده است.

۳. رگرسیون چندکی

رگرسیون چندکی (Quantile Regression) را می‌توان جایگزینی برای مدل رگرسیون خطی در نظر گرفت که نسبت به مشکلات حاصل از «نقاط دورافتاده یا پرت» (Outlier)، «چولگی زیاد» (High Skewness) و همچنین «ناهم‌واریانسی» (Heteroscedasticity) مقاوم است.

در رگرسیون خطی، میانگین متغیر وابسته به شرط مشاهدات برآورد می‌شود. در حقیقیت مدل رگرسیون خطی با در نظر گرفتن ماتریس $$X$$ و بردارهای $$\beta$$ و $$\alpha$$ به صورت زیر نوشته می‌شود.

$$ \large E(Y|x) = \alpha + \beta X $$

از آنجایی که میانگین جمله خطا را صفر در نظر گرفته‌ایم، در این عبارت مقدار خطا دیده نمی‌شود.

همانطور که می‌دانید میانگین با وجود داده‌های پرت، چولگی و ناهمواریانسی در متغیر وابسته، شاخص مناسبی به عنوان معیار تمرکز نیست. بنابراین شیوه رگرسیون خطی، نمی‌تواند تغییرات چنین متغیری را به خوبی توصیف و مدل مناسبی برای نمایش رابطه بین متغیر مستقل و وابسته ایجاد کند.

استفاده از چندک‌ها (Quantile) که نسبت به شرایط گفته شده، مقاوم‌تر هستند، می‌تواند مدل رگرسیون کامل‌تر و دقیق‌تری را ارائه کند. در رگرسیون چندکی به جای برآورد میانگین متغیر وابسته، از برآورد چندک‌های آن (مانند صدک، دهک یا چارک) به شرط متغیر مستقل، کمک گرفته می‌شود.

نکته: در رگرسیون چندکی، باید متغیر وابسته از نوع عددی و از نوع مقیاس (Scale) با مقادیر پیوسته باشد تا امکان محاسبه چندک‌ها وجود داشته باشد.

اگر $$Q_{Y|X}(p)$$ را چندک $$p$$ام متغیر وابسته $$Y$$ به شرط $$X$$ در نظر بگیریم، آنگاه مدل رگرسیون به صورت زیر خواهد بود.

$$ \large Q_{Y|X}(p) = X \beta_{p} $$

مشخص است که این مدل، بسیار شبیه رگرسیون خطی است. به همین علت گاهی رگرسیون چندکی را حالت توسعه یافته رگرسیون خطی می‌دانند. اگر برای مقادیر مختلف $$p$$ مدل رگرسیونی را پیش‌بینی کنیم و خطوط مربوطه را رسم کنیم، یک رگرسیون چندکی ایجاد کرده‌ایم.

نکته: توجه داشته باشید که کمینه‌سازی خطا طبق رابطه زیر صورت خواهد گرفت.

$$ \large p ( \sum |e_i|) + (1-p) \sum |e_i| $$

به این ترتیب اگر مقدار $$p=0.5$$ باشد، چندک به میانه تبدیل شده و مدل رگرسیونی را «رگرسیون میانه» (Median Regression) می‌نامند.

فرض کنید معادله رگرسیونی برای صدک ۲۵ام به صورت زیر بدست آمده باشد:

$$ \large Q_{y|x}(0.25) = 5 + 7x $$

در این صورت هر واحد اضافه شدن مقدار متغیر مستقل (x) باعث افزایش ۷ واحدی مقدار چندک ۲۵ام خواهد شد.

برای استفاده از رگرسیون چندکی در زبان برنامه‌نویسی R از بسته یا کتابخانه quantreg استفاده خواهیم کرد. در کد زیر نحوه نصب و بارگذاری این کتابخانه مشخص شده است.

به کمک تابع rq امکان اجرای رگرسیون چندکی فراهم می‌شود. کدی که در زیر مشاهده می‌کنید به اجرای رگرسیون چندکی روی مجموعه داده swiss پرداخته است. در اینجا Fertility متغیر وابسته و بقیه متغیرها، مستقل محسوب شده‌اند.

مقدار $$p$$‌ در تابع rq به کمک پارامتر tau مشخص می‌شود. واضح است که در مدل اجرا شده، از صدک ۲۵ام (چارک اول) استفاد شده است. خروجی به صورت زیر خواهد بود.

اگر مقدار tau را برابر با ۰٫۵ در نظر بگیریم، رگرسیون میانه را تولید خواهیم کرد.

خروجی به صورت زیر محاسبه خواهد شد.

در این قسمت، رگرسیون چندکی را براساس صدک‌های پنجم تا ۹۵ام با فاصله ۵ درصدی اجرا خواهیم کرد.

خروجی به صورت زیر خواهد بود. البته به علت اینکه ۱۹ صدک‌ مختلف در این کد استفاده شده است، از نمایش همه خروجی‌ها صرف نظر کرده‌ایم و فقط صدک پنجم، پنجاهم و صدک ۹۵ را نمایش خواهیم دارد.

نمودارهای حاصل به شکل زیر ترسیم می‌شوند.

quantile regression and plot

در این نمودارها، رگرسیون چندکی به ازاء هر یک از متغیرها مستقل ترسیم شده است. محور افقی، مقادیر چندک‌ها (از صدک پنجم تا صدک ۹۵ام) را نشان می‌دهد. محور عمودی نیز مقدار پارامتر را مشخص کرده است. خطوط سیاه رنگ چندک‌‌ها و فاصله اطمینان آن‌ها نیز با رنگ خاکستری نشان داده شده. رگرسیون خطی ساده نیز با استفاده از خط قرمز و فاصله اطمینان ۹۵٪ برای پارامتر آن نیز با خط‌چین قرمز در نمودار مشخص است.

مثلا برای صدک پنجم، مقدار عرض از مبدا (Intercept)، تقریبا برابر با 51 است و ضریب متغیر تحصیلات (Education) نیز در این حالت ۱٫۲۲- است. ولی این ضرایب برای چندک ۹۵ام تغییر کرده و به 7۵٫46 برای عرض از مبدا و ۰٫۲۱۹ برای تحصیلات رسیده است.

۴. رگرسیون ستیغی

قبل از بررسی «رگرسیون ستیغی» (Ridge Regression)، بهتر است در مورد «قاعده‌سازی» (Regularization) توضیح دهیم. همانطور که قبلا اشاره شد، بیش‌برازش و کم‌برازش، از مسائلی است که ممکن است که در رگرسیون چندگانه رخ دهد. یکی از راه‌های جلوگیری از این مشکلات، قاعده‌سازی است. به این معنی که مدل رگرسیونی را با توجه به تعداد پارامترهای آن جریمه کرد تا تعداد آن‌ها به یک مقدار بهینه برسد. به این ترتیب پیچیدگی مدل کاهش یافته، بدون آنکه از کارایی آن کاسته شود.

قاعده‌سازی بخصوص در موارد زیر کارساز است:

  • تعداد زیاد متغیرهای توصیفی
  • زیاد بودن تعداد متغیرها نسبت به تعداد مشاهدات
  • هم‌خطی یا هم‌خطی چندگانه در بین متغیرهای توصیفی

در رگرسیون ستیغی از تابع زیان درجه ۲ استفاده می‌شود. به این ترتیب مقدار جریمه (Penalty) برای مدل رگرسیونی، به صورت مجموع مربعات ضرایب مشخص می‌شود.

به این ترتیب اگر مدل رگرسیونی را به صورت زیر در نظر بگیریم:

$$ \large y_{i} = \beta _{0}+\beta _{1}x_{i1} + \cdots +\beta _{p}x_{ip} + \varepsilon _{i} , \qquad i = 1 , \ldots , n $$

مدل رگرسیونی ستیغی به کمک کمینه‌سازی تابع زیر صورت می‌گیرد.

$$ \large \operatorname{argmin} || y – \widehat{y} ||_2^2 = \operatorname{argmin} \sum [y_i – (\beta_0 + \beta_1x_1 + \beta_2x_2 + \cdots + \beta_px_p)]^2 $$

توجه داشته باشید که منظور از  $$\operatorname{argmin}$$ مقدارهایی از $$\beta$$ است که تابع مورد نظر را کمینه می‌کنند.

برای برآورد کردن پارامترهای رگرسیونی در روش ستیغی، قیدی روی پارامترها وجود دارد که به صورت زیر نوشته می‌شود.

$$ \large \beta_0^2 + \beta_1^2 + \cdots + \beta_p^2 \leq C^2 $$

این محدودیت، مشخص می‌کند که باید مجموع مربعات پارامترها از مقدار ثابت یا آستانه‌ای کمتر باشند. به این ترتیب شیوه برآورد پارامترها به صورت زیر در خواهد آمد. مشخص است که بین وجود پارامترهای $$\beta$$ و صفر شدن آن‌ها در بخش قید، توازنی برقرار شده و تعداد پارامترها و متغیرهای مربوطه، بهینه می‌شود.

$$ \large \operatorname{argmin} || y – X \beta ||_2^2 + \lambda || \beta ||_2^2 $$

پارامتر $$\lambda$$ در اینجا میزان جریمه (Regularization Parameter) نامیده می‌شود.

نکته: توجه داشته باشید که قاعده‌سازی فقط برای پارامترهای $$\beta_1$$ تا $$\beta_n$$ صورت می‌گیرد و عرض از مبدا $$\beta_0$$‌ از این موضوع مستثنی است.

برآورد پارامترهای مدل رگرسیون ستیغی با توجه به قیدی که ذکر شده، به صورت زیر خواهد بود.

$$\large \widehat{\beta}^{ridge} =(X^TX+\lambda I)^{-1}X^Ty$$

نکته: مشخص است که اگر هیچ جریمه‌ای برای مدل در نظر نگیریم، به این معنی که مقدار $$\lambda$$ را صفر انتخاب کنیم، روش برآورد در رگرسیون ستیغی به شیوه OLS تبدیل خواهد شد. در نتیجه می‌توان روش OLS را حالت خاصی از روش ستیغی در نظر گرفت.

در تعریف پارامترها در مدل ستیغی، می‌توان دید که مقدار بزرگ برای $$\lambda$$ باعث مشکل کم‌برازش (Underfitting) می‌شود. بنابراین تعیین مقدار صحیح برای لاندا ($$\lambda$$) ضروری است. برای مشخص کردن مقدار مناسب بهتر است نموداری برحسب مقادیر پارامترها و لاندا ترسیم کرد و زمانی که برآوردگرهای ثابتی بوجود آمده‌اند، کوچکترین مقدار لاندا را در نظر گرفت.

برای پیاده‌سازی رگرسیون ستیغی در زبان برنامه‌نویسی R از مجموعه داده سوئیس استفاده کرده و از کتابخانه glment کمک می‌گیریم.

همچنین تابع cv.glmnet نیز با استفاده از اعتبارسنجی متقابل مدل، مقدار مناسب برای لاندا را مشخص می‌کند. حوزه تغییرات لاندا در این مثال $$10^4$$ تا $$10^{-1}$$‌ است که با گام‌های ۰٫۱، کاهش می‌یابد.

خروجی به صورت زیر خواهد بود.

به کمک کد زیر، کمترین مقدار لاندا را با lambda.min بدست آورده و مدل مناسب را مشخص می‌کنیم.

ضرایب حاصل از اجرای مدل رگرسیون ستیغی در این حالت در ادامه دیده می‌شود.

۵. رگرسیون لاسو

اصطلاح لاسو (Lasso) مخفف عبارت (Least Absolute Shrinkage and Selection Operator) یا «عمل‌گر گزینش و انقباض کمترین قدرمطلق» است. در این مدل، نحوه قاعده‌سازی براساس تابع زیان قدر مطلق انجام می‌شود. در نتیجه تابع هدف در «رگرسیون لاسو» (Lasso Regression) به صورت زیر نوشته می‌شود.

$$\sum_{i=1}^n(y_i-\beta_0-\sum_{j=1}^px_{ij}\beta_j)^2+\lambda \sum_j|\beta_j|$$

نکته: در اینجا نیز به مانند رگرسیون ستیغی، فرض نرمال بودن باقی‌مانده‌ها وجود ندارد. همچنین مقدار ثابت یا عرض از مبدا هم در قاعد‌ه‌سازی دخیل نمی‌شود.

نحوه استفاده از رگرسیون لاسو برای داده‌های سوئیس در ادامه دیده می‌شود. همانطور که مشاهده می‌کنید، همه متغیرها به جز ستون اول به عنوان متغیر توصیفی و ستون اول برای متغیر پاسخ در نظر گرفته شده است.

باز هم از cv.glmnet برای استفاده از اعتبارسنجی متقابل برای تعیین مقدار مناسب برای پارامتر لاندا استفاده شده است. توجه داشته باشید که برای استفاده از رگرسیون لاسو، مقادیر متغیرها باید استاندارد (Standardize) شده باشند. به طور پیش‌فرض این کار در تابع cv.glmnet صورت می‌گیرد.

خروجی به صورت زیر ظاهر خواهد شد.

به منظور پیدا کردن بهترین مقدار لاندا از کد زیر استفاده کرده‌ایم.

در نتیجه مقادیر ضرایب بر این اساس به صورت زیر درخواهد آمد.

از آنجایی که نتایج حاصل از رگرسیون لاسو با رگرسیون ستیغی نزدیک هستند، سوالی که مطرح می‌شود این است که کدام یک نسبت به دیگری ارجح است؟

همانطور که گفته شد، هر دو روش رگرسیونی، مشکل هم‌خطی یا هم‌خطی چندگانه را حل می‌کنند و مدلی بدون بیش‌برازش یا کم‌برازش ارائه می‌دهند. ولی مدل رگرسیون ستیغی، از لحاظ سرعت محاسباتی، سریعتر است. بهترین راه تشخیص مدل مناسب در بین مدل‌های تولید شده توسط دو روش رگرسیونی، استفاده از اعتبارسنجی متقابل براساس داده‌های آزمایشی است.

۶. رگرسیون شبکه الاستیک

«رگرسیون شبکه الاستیک» (Elastic Net Regression)، با ترکیب رگرسیون لاسو و رگرسیون ستیغی، بر معایب آن‌ها غلبه کرده و جایگزین مطمئن برای آن‌ها است. به این ترتیب اگر با مدلی مواجه هستید که متغیرهای توصیفی آن با یکدیگر همبستگی دارند، بهتر است از رگرسیون شبکه الاستیک استفاده کنید.

به این ترتیب یک قاعده‌سازی مرتبه ۱ و ۲ روی مدل همزمان اعمال می‌شود. در نتیجه تابع هدف در رگرسیون شبکه الاستیک به صورت زیر نوشته خواهد شد.

$$ \large \min(\sum \epsilon^2 + \lambda_1\sum\beta_i+\lambda_2\sum |\beta_i|) $$

که با در نظر گرفتن مدل رگرسیون خطی چندگانه، می‌توان آن را به صورت زیر نیز در نظر گرفت.

$$ \large \min( \sum y_i – ( \beta_0 + \beta_1 X_1 + \beta_2X_2 + \ldots + \beta_kX_k)^2 + \lambda_1 \sum \beta_i^2 + \lambda_2\sum|\beta_i|) $$

توجه داشته باشید که همانند رگرسیون لاسو و رگرسیون ستیغی، فرض نرمال بودن باقی‌مانده در رگرسیون الاستیک نیز وجود ندارد.

فایل داده swiss (سوئیس) را در نظر بگیرید. متغیر پاسخ Y براساس ستون اول این مجموعه داده و بقیه به عنوان متغیر X یا توصیفی در نظر گرفته شده‌اند.

مدل رگرسیونی شبکه الاستیک توسط کدهای زیر در نرم‌افزار R پیاده‌سازی شده است.

مقادیر alpha و lambda از قبل برای تشکیل مدل در نظر گفته شده‌اند که همان پارامترهای اصلی برای مدل رگرسیون سه تیغی و لاسو هستند. حاصل خروجی به صورت زیر خواهد بود.

نتایج حاصل از برآورد پارامترهای مدل را با دو شیوه رگرسیون لاسو و ستیغی مقایسه کنید. به نظر می‌رسد که نتیجه برآورد در رگرسیون شبکه الاستیک به آن‌ها بسیار نزدیک است.

۷. رگرسیون مولفه‌های اصلی

زمانی که هم‌خطی یا هم‌خطی چندگانه در مدل رگرسیونی وجود داشته باشد، بهتر است از مدل رگرسیون مولفه‌های اصلی (Principle Component Regression) که به اختصار با PCR نشان داده می‌شود، استفاده کنیم.

رگرسیون مولفه‌های اصلی در دو گام اجرا می‌شود.

  1. استخراج مولفه‌های اصلی براساس متغیرهای توصیفی
  2. اجرای رگرسیون براساس مولفه‌های ایجاد شده به عنوان متغیرهای مستقل با متغیر پاسخ

به این ترتیب، مشکل هم‌خطی یا هم‌خطی چندگانه از مدل رگرسیونی خارج شده و از طرفی با توجه به استفاده از مولفه‌های کمتر از تعداد متغیرهای توصیفی، ابعاد یا تعداد متغیرهای به کار رفته در مدل رگرسیونی نیز کاهش می‌یابد.

بخش اول در محاسبات مربوط به رگرسیون مولفه‌های اصلی، تعیین «بارهای عاملی» (Loads) است که به کمک آن مولفه‌ها ایجاد می‌شوند. هر مولفه (مثل $$U_i$$) به صورت زیر تشکیل می‌شود.

$$ \large U_i =  \beta_1X_1 + \beta_2X_2 + \ldots + \beta_pX_p $$

با شرط اینکه بارها ($$\beta_i$$) در شرط زیر صدق کنند.

$$ \large \sum_{i=1}^p \beta_i^2 =  1 $$

اولین مولفه اصلی دارای بیشترین سهم از واریانس متغیر پاسخ را در خود جای داده است. به همین ترتیب، مولفه‌های بعدی، سهم کمتری در بیان واریانس کل متغیر پاسخ خواهند داشت.

موضوع دیگری که در مورد مولفه‌های اصلی وجود دارد، ناهمبسته بودن آن‌ها است. به این معنی که ضریب همبستگی بین مولفه‌ها تقریبا صفر است. در نتیجه مشکل هم‌خطی یا هم‌خطی چندگانه در مدل ایجاد شده، از بین خواهد رفت.

همچنین از آنجایی که مقدار $$p$$ را می‌توان کمتر یا مساوی با $$k$$ انتخاب کرد، کاهش بعد مسئله نیز از مزایای استفاده از PCR محسوب می‌شود. در نتیجه می‌توان به جای استفاده از مدل با ۱۰ متغیر توصیفی، فقط با ۲ یا ۳ مولفه، مدل رگرسیونی را ایجاد کرد بطوریکه کمترین میزان اطلاعات در مورد متغیر وابسته، در مدل از بین رفته یا نادیده گرفته شده باشد.

نکته: باید این موضوع را در نظر بگیرم که استفاده از PCR، روشی برای تعیین ویژگی‌های موثر در مدل رگرسیونی نیست بلکه با بهره‌گیری از آن، مولفه‌های جدیدی ایجاد می‌شود که بیشترین توصیف یا سهم تغییرات برای متغیر وابسته را در خود دارند. در نتیجه نمی‌توان گفت که کدام متغیر توصیفی، بیشترین نقش را در مدل رگرسیونی PCR دارد.

به منظور پیاده‌سازی رگرسیون PCR از کتابخانه pls در زبان برنامه‌نویسی و محاسباتی R استفاده می‌کنیم. پس ابتدا کتابخانه‌ را نصب و سپس بارگذاری می‌کنیم.

در اینجا از مجموعه داده longley استفاده می‌کنیم که در R به طور پیش‌فرض وجود دارد. به جز ستون سال (Year) بقیه متغیرها را استفاده خواهیم کرد.

در ادامه این داده‌ها را مشاهده می‌کنید. قرار است تعداد افراد شاغل (Employed) را براساس متغیرهای دیگر نظیر «جمعیت» (Population)، «نیروی نظامی» (Armed.Forces)، «تعداد افراد بیکار» (Unemployed)، «شاخص درآمد ناخالص ملی» (GNP) و «شاخص درآمد ضمنی ناخالص ملی» (GNP.deflator)، مدل‌سازی کنیم.

اگر دسترسی به این مجموعه داده برایتان مقدور نیست، می‌توانید فایل longley را از اینجا با قالب فشرده از اینجا دریافت کنید و پس از خارج کردن از حالت فشرده با دستور read.csv در R‌ بارگذاری کنید.

از آنجایی که بعضی از این متغیرها به یکدیگر وابستگی دارند (مثلا درآمد ناخالص ملی با تعداد افراد بیکار و همچنین درآمد ضمنی ناخالص ملی در رابطه است)، بهتر است از مدل PCR استفاده کنیم. کد زیر به این منظور نوشته شده است. همانطور که مشاهده می‌کنید، مدل ~.Employed نشانگر ارتباط بین متغیر Employed با بقیه متغیرها است.

خروجی به صورت زیر خواهد بود.

همانطور که مشاهده می‌کنید، حدود 95٫70 درصد تغییرات متغیر وابسته توسط دو مولفه اول و دوم در مدل رگرسیونی PCR پوشش داده می‌شوند. به عنوان شاخص برای اعتبار مدل از RMSEP یا «ریشه میانگین مربعات خطای پیش‌بینی» (Root Mean Square Error Of Prediction) استفاده شده است. همچنین محاسبه اعتبارسنجی متقابل (Crossvalidation) برای سنجش کارایی مدل روی داده‌ها براساس هر یک از مدل‌ها (تعداد مولفه‌ها) صورت گرفته است.

کد زیر به منظور ترسیم نمودار اعتبار سنجی نوشته شده است. همچنین در انتها نیز مقادیر پیش‌بینی شده براساس سه مولفه، محاسبه شده‌اند.

خروجی به صورت زیر خواهد بود.

PCA and MSEP plot

همانطور که مشخص است با افزایش تعداد مولفه‌ها، میزان خطای MSEP نیز کاهش می‌یابد ولی از مولفه سوم به بعد این کاهش خیلی محسوس نیست و می‌توان براساس سه مولفه اول کار محاسبات و ایجاد مدل رگرسیونی را انجام داد.

pca and R2

از طرفی نمودار $$R^2$$ نیز نشان می‌دهد که با افزایش تعداد مولفه‌ها، ضریب تعیین افزایش داشته ولی از مولفه سوم به بعد باز هم تغییرات آن چشمگیر نیست. بنابراین اگر سه مولفه اول در مدل به کار گرفته شوند، بهترین دقت و کمترین خطا را به همراه کمترین تعداد مولفه‌ها خواهیم داشت.

حاصل پیش‌بینی‌ها توسط این سه مولفه در ادامه قابل مشاهده است.

همچنین اگر پیش‌بینی را براساس هر یک از مولفه‌ها جداگانه محاسبه و نمودار آن را رسم کنیم، مشخص می‌شود که تفاوت زیادی بین مولفه‌ها در پیش‌بینی وجود ندارد.

compare components

۸. رگرسیون کمترین مربعات جزئی

زمانی که بین متغیرهای توصیفی، وابستگی شدید وجود داشته باشد، به جای رگرسیون مولفه‌های اصلی (PCR) بهتر است از رگرسیون کمترین مربعات جزئی (PLS) یا Partial Least Square Regression استفاده شود. همچنین زمانی که تعداد متغیرهای توصیفی زیاد هستند و می‌خواهیم موثرترین متغیرها در مدل حضور داشته باشند، از رگرسیون کمترین مربعات جزئی (PLS) استفاده می‌کنیم.

هم در روش رگرسیون مولفه‌های اصلی و هم کمترین مربعات جزئی، متغیر جدیدی به عنوان متغیر پیش‌گو ساخته می‌شود که به آن مولفه (Component) گفته می‌شود. این متغیر جدید، ترکیب خطی از متغیرهای توصیفی است. ولی تفاوت در این است که در تحلیل رگرسیون PCR، مولفه‌ها براساس توصیف واریانس کل متغیرهای توصیفی (پیشگو-Predictor) تولید می‌شوند بدون آنکه به مقایر متغیر پاسخ توجه شود. در حالیکه در PLS با در نظر گرفتن متغیر پاسخ و متغیرهای پیشگو، مولفه‌ها تولید می‌شوند و در نهایت مدلی ایجاد می‌شود که با کمترین عوامل، بهترین برازش را دارد.

در کد زیر براساس مجموعه داده vehicles که مشخصات خودروها را ثبت کرده، می‌خواهیم قیمت خودرو (ستون سیزدهم) با نام متغیر price را برحسب متغیرهای دیگر مدل‌بندی کنیم. به منظور دسترسی به این مجموعه داده می‌توانید فایل vehicles را از اینجا به قالب فشرده دریافت کنید و پس از خارج کردن از حالت فشرده، به کمک دستور read.csv آن را در در برنامه R فراخوانی و بارگذاری کنید.

ابتدا بعضی از مقادیر این مجموعه داده را نمایش می‌دهیم. این مجموعه داده، شامل 30 مشاهده و 16 متغیر است. برای ایجاد مدل رگرسیونی PLS از متغیر سیزدهم یعنی قیمت خودرو (price) به عنوان متغیر وابسته استفاده می‌کنیم. همچنین بقیه متغیرها به عنوان متغیرهای پیشگو به کار خواهند رفت.

توجه داشته باشید که برای اجرای رگرسیون PLS باید از کتابخانه plsdepot استفاده کنید. مجموعه داده vehicles نیز در این کتابخانه قرار دارد.

همانطور که مشاهده می‌کنید، رگرسیون PLS‌ از سه مولفه استفاده کرده است زیرا در کد عبارت comps=3 به کار رفته است. به این ترتیب خروجی به صورت زیر خواهد بود.

در بخش اول، متغیرها و مقادیرشان معرفی شده‌اند. در بخش دوم، مقدارهای پیش‌بینی شده توسط مدل برای متغیر وابسته با دستور pls.model$y.pred ظاهر شده است. همچنین بارهای عاملی برای تشکیل مولفه‌ها، براساس سه مولفه اول مشخص شده. به این ترتیب ضریب هر یک از متغیرهای توصیفی که در اینجا همان عامل‌ها نامیده می‌شوند، در تشکیل مدل رگرسیونی، دیده می‌شوند.

در انتها نیز ضریب $$R^2$$ برای هر یک از مولفه‌ها مشخص شده است. همانطور که انتظار داریم، اولین مولفه، بیشترین همبستگی را با متغیر وابسته دارد. به همین ترتیب برای مولفه‌های دوم و سوم، ضریب همبستگی کاهش یافته است.

۹. رگرسیون بردار پشتیبان

به کمک رگرسیون بردار پشتیبان (Support Vector Regression)  که گاهی آن را با SVR نیز نشان می‌دهند، می‌توان مدل‌های خطی و غیرخطی را ایجاد و پارامترهای آن را محاسبه کرد. این کار توسط به کارگیری یک «تابع هسته» (kernel) غیرخطی (مانند چندجمله‌ای) حاصل می‌شود. محاسبه پارامترهای این تابع به شکل است که خطا کمینه شود بطوری که فاصله بین صفحاتی که عمل جداسازی بین دسته‌ها را ایجاد می‌کنند، بیشینه شود.

کتابخانه e1071 از زبان برنامه‌نویسی R، امکان اجرای رگرسیون بردار پشتیبان را می‌دهد. در کدی که در ادامه مشاهده می‌کنید، با استفاده از داده‌های شبیه‌سازی شده، یک مدل رگرسیونی بردار پشتیبان ایجاد می‌شود.

متغیر مستقل (x) براساس دنباله‌ای از مقادیر ۰ تا ۵ با افزایش ۰٫۰۵ تولید شده است. متغیر وابسته (y) نیز براساس رابطه زیر ساخته شده است.

$$ \large y = \log(x) + z, \; \; \; z \sim N(mean = x , standard deviation = 0.2) $$

پارامترها و کد دستوری برای اجرای این مدل رگرسیونی در ادامه قابل مشاهده است.

کدی که در ادامه مشاهده می‌کنید، برای اجرای رگرسیون SVM برای داده‌های شبیه‌سازی شده به کار می‌رود.  پس از اجرای مدل، مقادیر پیش‌بینی شده نیز محاسبه شده و به همراه مقادیر x و y در یک نمودار ترسیم می‌شود.

همانطور که مشخص است مدل رگرسیون حاصل، غیرخطی بوده و توانسته است داده‌ها را به خوبی پیش‌بینی کند. نتیجه خروجی و نمودار حاصل در ادامه قابل مشاهده است.svr model and prediction

نقطه‌های مشکی رنگ، بیانگر نقاط x و y است. نقطه‌های قرمز رنگ هم نتیجه ارتباط بین نقاط x با (log(x را نشان می‌دهد. قرار است ارتباط بین y با (log(x را به صورت خطی نمایش دهیم. مدل برازش شده توسط رگرسیون SVM نیز با نقطه‌های آبی رنگ روی نمودار دیده می‌شود که انطباق مناسبی با نقطه‌های قرمز رنگ دارد. البته در مقادیر نزدیک به صفر این مطابقت از بین رفته است زیرا تغییرات لگاریتم در این قسمت شدید خواهد بود.

۱۰. رگرسیون ترتیبی

اگر متغیر پاسخ یا وابسته به صورت ترتیبی (Ordinal) یا رتبه‌ای (Rank) باشد، بهتر است از مدل رگرسیون ترتیبی (Ordinal Regression) استفاده شود. به این ترتیب اگر با استفاده از طیف لیکرت (Likert Scale)، با پاسخ‌های مربوط به پرسشنامه مواجه هستید، بهتر است برای مدل‌سازی بین این متغیر پاسخ با متغیرهای مستقل یا توصیفی، از رگرسیون ترتیبی استفاده کنید. برای مثال ممکن است براساس یک پرسش‌نامه که پاسخ‌های آن با مقیاس یا طیف لیکرت ۵ سطحی تشکیل شده بخواهید میزان بهبود درد بیماران نسبت به دوزهای مختلف یک دارو را بسنجید. چنین مدلی به کمک رگرسیون ترتیبی ساخته خواهد شد.

به منظور پیاده‌سازی این مدل از رگرسیون با مجموعه داده wine که میزان تندی سرکه را مشخص کرده است کار خواهیم کرد. این مجموعه داده، شامل ۷۲ مشاهده است که براساس قضاوت ۹ داور میزان تندی با متغیر رتبه‌ای response از ۰ تا ۱۰۰ مشخص و درجه‌بندی شده است. همچنین متغیر rating نیز مقادیر response را به ۵ طبقه به صورت ترتیبی، گروه‌بندی کرده است. دما (temp) با دو سطح گرم و سرد و همچنین نحوه چیدن انگور با متغیر contact با دوسطح no و yes ثبت شده. نوع بطری (bottle) نیز نحوه نگهداری سرکه را با توجه به هشت وضعیت مختلف تعیین می‌کند.

ابتدا به مجموعه داده، نگاه مختصری می‌کنیم. اگر به این داده‌ها دسترسی ندارید می‌توانید فایل اطلاعاتی مربوط به آن را از اینجا دریافت و پس از خارج کردن از حالت فشرده، در R با دستور read.csv بارگذاری کنید.

در اینجا، مدل ارائه شده طبق کد زیر به بررسی رابطه بین متغیر وابسته rating به عنوان متغیر عامل یا ترتیبی با داورها (judge) و دما (temp) پرداخته‌ایم.

خروجی به صورت زیر خواهد بود.

۱۱. رگرسیون پواسون

زمانی که متغیر وابسته به صورت شمارشی باشد، از مدل رگرسیون پواسون (Poisson Regression) استفاده می‌کنیم. به عنوان مثال در پیش‌بینی تعداد تماس‌های تلفن در یک شرکت برحسب میزان فروش یا برآورد تعداد تماس‌های به بخش اورژانس بر اساس رخداد یک سانحه! همچنین تعداد مرگ و میر بر اثر عوامل آلودگی هوا از مدل رگرسیون پواسن استفاده می‌شود.

متغیر وابسته در این مدل باید شرایط زیر را داشته باشد:

  1. متغیر وابسته (y) دارای توزیع پواسون است.
  2. مقدار متغیر وابسته نباید منفی باشد (زیرا حاصل از شمارش است).
  3. مدل رگرسیون پواسن برای زمانی که مقادیر متغیر وابسته متعلق به مجموعه اعداد طبیعی نیستند، نباید استفاده شود.

به منظور اجرای مدل رگرسیون پواسون از یک مجموعه داده که مربوط به پارگی دو نوع نخ است استفاده می‌کنیم. ابتدا به داده‌های warpbreaks نگاهی می‌اندازیم. این مجموعه داده شامل ۵۴ مشاهده و ۳ متغیر است.

  • تعداد پارگی‌ها (breaks) که مقادیر آن به صورت شمارشی است.
  • نوع نخ (wool) که با دو مقدار A و B‌ مشخص شده است.
  • میزان کشش (tension) که در سه سطح کم (L)، متوسط (M) و زیاد (H) طبقه‌بندی شده است.

اگر از طریق برنامه R به این مجموعه داده دسترسی ندارید می‌توانید فایل مربوطه را با قالب فشرده از اینجا دریافت کنید. پس از خارج کردن فایل از حالت فشرده با دستور read.csv آن را بارگذاری کنید.

کدی که در ادامه مشاهده می‌کنید، مربوط به مجموعه داده استحکام نخ‌ها است. تعداد پارگی‌های نخ‌ها (breaks) برحسب نوع نخ (wool)، کشش نخ (tension) و اثر متقابل این دو براساس یک مدل رگرسیونی پواسون، مورد محاسبه قرار گرفته و پارامترهای آن بدست آمده است.

از آنجایی که در مدل عبارت wool*tension دیده می‌شود، اثرات اصلی و متقابل بین این دو متغیر در مدل نیز حضور خواهند داشت. خروجی به صورت زیر خواهد بود.

همانطور که مشخص است همه متغیرها (یا ضرایب) در مدل از لحاظ آماری معنی‌دار بوده و فقط نوع نخ B با میزان کشش سطح H در سطح آزمون ۵٪ معنی‌دار نیستند.

از طرفی دیده می‌شود که میانگین مقدار متغیر پاسخ (Intercept) برابر با 3٫79674 است در حالیکه مقدار پراکندگی (Dispersion) برای توزیع پواسن عدد ۱ در نظر گرفته شده است. در نتیجه با مشکل «کم‌پراکنش» (Underdispersion) مواجه هستیم و بهتر است با مدل رگرسیون دوجمله‌ای منفی یا شبه پواسن مدل را ایجاد کنیم. این مدل در ادامه معرفی و به کار گرفته شده است.

۱۲. رگرسیون دوجمله‌ای منفی

برای فراگیری رگرسیون دو جمله‌ای منفی (Negative Binomial Regression) و دستورات مرتبط با آن در R به بررسی یک مجموعه داده به نام quine‌ می‌پردازیم که مربوط به تعداد روزهای غیبت دانش‌آموزان با توجه به قومیت، سن، جنس و سرعت یادگیری آن‌ها است.

این مجموعه داده شامل 146 مشاهده و ۵ متغیر است که از بین مدارس چهار منطقه متفاوت جمع‌آوری شده است.

  1. قومیت (Eth) که شامل دو مقدار بومی (A) و غیربومی (N) است.
  2. جنسیت (Sex) که شامل دو مقدار دختر (F) و پسر (M) است.
  3. سن (Age) که به طبقه‌های F0 تا F3 تقسیم‌بندی شده است.
  4. سرعت یادگیری (Lrn) که شامل دو سطح متوسط (AL) و کند (SL) می‌شود.
  5. تعداد روزهای غیبت در مدرسه در طول سال (Days) که یک متغیر شمارشی است و به عنوان متغیر وابسته به کار رفته است.

برای دسترسی به این مجموعه داده باید ابتدا کتابخانه MASS را راه‌اندازی کنید. در ادامه قسمتی از اطلاعات این مجموعه داده را مشاهده می‌کنید. اگر به این مجموعه داده دسترسی ندارید، می‌توانید فایل مرتبط با این اطلاعات را از اینجا به صورت یک فایل فشرده دریافت کنید. پس از خارج کردن این فایل از حالت فشرده با دستور read.csv محتویات فایل باز شده را در R فراخوانی کنید.

قرار است به کمک متغیرهای توصیفی که در ستون های اول تا چهارم قرار دارند، مدلی برای پیش‌بینی متغیر پنجم یعنی تعداد روزهای غیبت در مدرسه (Days)، ایجاد کنیم. کد زیر به این منظور نوشته شده است.

همانطور که مشاهده می‌کنید در اینجا از تابع glm.nb استفاده کرده‌ایم تا مدل رگرسیون دوجمله‌ای منفی را به کار ببریم. در اینجا متغیر وابسته Days و متغیرهای مستقل Sex, Age, Eth و Lrn هستند که البته از متغیر Sex برای تفکیک مدل‌ها استفاده شده است.

خروجی به صورت زیر خواهد بود.

همانطور که مشاهده می‌کنید برای هر متغیر مستقل، در دو وضعیت پسر و دختر (M و F)، ضرایب به طور مجزا محاسبه شده‌اند. توجه داشته باشید که عرض از مبدا (Intercept) برای گروه دخترها محاسبه شده. برای پسر‌ها باید مقدار محاسبه شده در ضریب SexM به مقدار Intercept اضافه شده تا عرض از مبدا برای مدل رگرسیون دوجمله‌ای منفی در گروه پسرها، حاصل شود.

نکته: همانطور که به یاد دارید، در مدل رگرسیون پواسون، ممکن است با مشکل بیش‌پراکندگی یا کم‌پراکندگی مواجه شویم. در قسمت قبل براساس داده‌های مربوط به کشش نخ‌ها با مشکل کم‌برازش مواجه شدیم. این بار با استفاده از رگرسیون دوجمله‌ای منفی مدل را ایجاد می‌کنیم زیرا نسبت به بیش‌برازش و کم‌برازش مقاوم است. کافی است کد زیر را به کار ببریم.

خروجی به صورت زیر خواهد بود.

همانطور که مشاهده می‌کنید در قسمت Dispersion parameter، مقدار واریانس 3٫76389 محاسبه شده که با میانگین مدل (Intercept) با مقدار 3٫79674 تقریبا برابر است و مشکل بیش‌پراکندگی یا کم‌پراکندگی بوجود نیامده است.

۱۳. رگرسیون شبه پواسون

یکی از روش‌های رگرسیونی که می‌تواند به عنوان جایگزین رگرسیون دوجمله‌ای منفی به کار رود، رگرسیون شبه پواسون (Quasi Poisson Regression) است. هر چند هر دو شیوه پاسخ‌های یکسانی تولید می‌کنند ولی در ماتریس کوواریانس برآوردگرها اختلافاتی وجود دارد. بطوری که واریانس مدل شبه پواسن، یک ترکیب خطی از میانگین بوده ولی واریانس مدل رگرسیون دو جمله‌ای منفی، به صورت تابعی درجه چهار از میانگین است.

به منظور پیاده‌سازی این مدل رگرسیونی در زبان برنامه‌نویسی R باز هم از تابع glm‌ استفاده می‌کنیم ولی مدل را در قسمت Family برابر با quasipoisson قرار می‌دهیم. مجموعه داده به کار رفته همان quine است که در رگرسیون دو جمله‌ای منفی به کار بردیم.

در کد بالا، مدل رگرسیون شبه پواسن را براساس متغیرهای وابسته و مستقل به شکل زیر اجرا کرده‌ایم.

اثر متغیرهای طبقه‌ای سن، به همراه اثرات اصلی (Main Effect) و اثرات متقابل (Interaction) بین متغیرهای قومیت (Eth) و سرعت یادگیری (Lrn) به تفکیک جنسیت (Sex) برای متغیر روز‌های غیبت (Days) مدل‌سازی شده است.

ضرایبی که با علامت * مشخص شده‌اند، از لحاظ آماری معنی‌دار بوده و حضورشان در مدل ضروری است.

۱۴. رگرسیون کاکس

از «رگرسیون کاکس» (Cox Regression) برای داده‌های وابسته به زمان استفاده می‌شود. برای درک بیشتر این موضوع به مثال‌های زیر توجه کنید:

  1. زمان طی شده از وقتی که کاربر وارد حساب خود شده تا زمانی که خارج می‌شود.
  2. طول دوره درمان بیماری سرطان تا مرگ بیمار.
  3. زمان بین اولین و دومین حمله قلبی.

همانطور که مشاهده می‌کنید، مدل رگرسیون کاکس مانند مدل رگرسیون لجستیک است با این تفاوت که در رگرسیون لجستیک تعداد پیشامدها مهم است ولی در رگرسیون کاکس، طول یا بازه زمانی بین پیشامدها مورد بررسی قرار می‌گیرد.

چنین تحلیل‌هایی را به عنوان «تحلیل بقا» (Survival Analysis) می‌شناسیم. همانطور که مشخص است متغیر وابسته از دو بخش تشکیل شده. در بخش اول که مقداری پیوسته است، زمان یا طول دوره رخداد یک پیشامد ثبت شده و در بخش دوم،‌ رخداد یا عدم رخداد آن پیشامد مشخص شده است.

کد زیر به منظور بررسی رابطه بین طول عمر بیماران سرطانی (SurvObj) و عوامل دیگر مانند سن (age)، جنس (sex) و امتیاز کارایی کارنوفکسی ( Karnofsky performance score) که با ph.karno قابل مشاهده است، به همراه میزان کاهش وزن (wt.loss) تهیه شده است. برای دسترسی به این مجموعه داده باید کتابخانه survival را راه‌اندازی کنید.

نکته: برای دسترسی مستقیم به فایل مربوط به این داده‌ها می‌توانید اطلاعات و مقادیر متغیرها را از اینجا در قالب یک فایل فشرده دریافت کنید و بعد از خارج کردن فایل از حالت زیپ، آن را با دستور read.csv بازیابی کنید.

خروجی این کد به صورت زیر خواهد بود که نشان می‌دهد، متغیرهای سن و کاهش وزن در طول عمر فرد مبتلا به سرطان، تاثیری ندارند زیرا دارای مقدار احتمال (p value) بزرگتر از ۵ درصد هستند.

خلاصه و جمع‌بندی

رگرسیون به یک تکنیک آماری، در «یادگیری ماشین» (Machine Learning) و داده‌‌کاوی (Data mining) گفته می‌شود که به کمک آن رابطه بین یک یا چند متغیر، مدل‌سازی می‌شود. به همین علت کسانی که در علم داده مشغول فعالیت هستند، لازم است که بر این روش آماری مسلط شوند. شیوه‌های مختلفی برای برازش خط یا منحنی روی داده‌ها وجود دارد که توسط مدل‌های مختلف رگرسیونی پیاده‌سازی شده است. نکته قابل توجه در مدل‌های رگرسیونی، کشف رابطه بین متغیرها به واسطه مقادیر آن‌ها است در حالیکه در ریاضیات براساس مدل‌ها، داده‌ها تولید می‌شوند.

در این نوشتار با جنبه‌های مختلف و انواع روش های رگرسیونی خطی و غیرخطی همچنین نحوه پیاده‌سازی آن‌ها در نرم‌افزار R آشنا شدیم و از کتابخانه‌ها و توابع مختلفی برای برازش یا حل مسائل رگرسیون با ویژگی‌های متفاوت، کمک گرفتیم. فراموش نکنید که منظور از برازش منحنی توسط مدل رگرسیونی، برآورد پارامترهای مدل محسوب می‌شود. در این بین همچنین نحوه ارزیابی و صحت مدل ارائه شده نیز مورد بحث قرار گرفت.

اگر مطلب بالا برای شما مفید بوده است، آموزش‌هایی که در ادامه آمده‌اند نیز به شما پیشنهاد می‌شوند:

^^

آرمان ری بد (+)

«آرمان ری‌بد» دکتری آمار در شاخه آمار ریاضی دارد. از علاقمندی‌های او، یادگیری ماشین، خوشه‌بندی و داده‌کاوی است و در حال حاضر نوشتارهای مربوط به آمار و یادگیری ماشین را در مجله فرادرس تهیه می‌کند.

بر اساس رای 9 نفر

آیا این مطلب برای شما مفید بود؟

2 نظر در “انواع روش های رگرسیونی — راهنمای جامع

  1. بسیار عالی و کامل.
    مرسی از مطلبی که نوشتید.

  2. این مجموعه فوق العاده است . بی نهایت سپاسگزارم ازتون

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *