رگرسیون خطی چندگانه یکی از انواع بسیار پرکاربرد در روش های رگرسیونی است. در این مقاله قصد دارم به آموزش رگرسیون خطی چندگانه در R بپردازم. تا انتهای این مقاله همراه کیارا آکادمی باشید تا آموزش نرم افزار R را به صورت کاربردی دریافت نمایید.
رگرسیون خطی چندگانه چیست؟
روش های عملی تر تحلیل رگرسیون از مدل هایی استفاده می کند که پیچیده تر از مدل ساده خط مستقیم هستند. مدل احتمالاتی که بیش از یک متغیر مستقل را شامل می شود، مدل های رگرسیون چندگانه نامیده می شود.
شکل کلی این مدل به صورت زیر است:
متغیر وابسته y اکنون تابعی از k متغیر مستقل است. مقدار ضریب رگرسیون خطی چندگانه در R سهم متغیر مستقل و رگرسیون خطی چندگانه را در R تعیین می کند. من به طور خلاصه فرضی را که در مورد خطای تصادفی رگرسیون خطی چندگانه در R OLS انجام دادم، معرفی می کنم:
- میانگین برابر با 0
- واریانس برابر با رگرسیون خطی چندگانه در R
- توزیع نرمال
- خطاهای تصادفی مستقل هستند (به معنای احتمالی)
شما باید برای رگرسیون خطی چندگانه در R، بردار ضرایب رگرسیون را حل کنید که مجموع مجذور خطاهای بین مقادیر y پیش بینی شده و واقعی را به حداقل می رساند. کاربردهای عملی تر تحلیل رگرسیون از مدل هایی استفاده می کند که پیچیده تر از مدل ساده خط مستقیم هستند. مدل احتمالاتی که بیش از یک متغیر مستقل را شامل می شود، مدل های رگرسیون چندگانه نامیده می شود.
اجرای رگرسیون خطی چندگانه در R
برای این مثال از مجموعه داده های داخلی R به نام mtcars استفاده خواهیم کرد که حاوی اطلاعاتی در مورد ویژگی های مختلف برای 32 ماشین مختلف است:
#مشاهده شش خط اول دیتا
head(mtcars) |
در این مثال ما یک مدل رگرسیون خطی چندگانه می سازیم که از mpg به عنوان متغیر پاسخ و disp، hp و drat به عنوان متغیرهای پیش بینی کننده استفاده می کند.
#دیتافریم جدیدی ایجاد کنید که فقط شامل متغیرهایی باشد که مایلیم از آن ها استفاده کنیم
data <- mtcars[ , c(“mpg”, “disp”, “hp”, “drat”)] |
#مشاهده شش ردیف اول دیتافریم جدید
head(data) |
بررسی داده ها:
قبل از برازش مدل، میتوانیم دادهها را بررسی کنیم تا درک بهتری از آن به دست آوریم و همچنین به صورت بصری ارزیابی کنیم که آیا رگرسیون خطی چندگانه میتواند مدل خوبی برای برازش با این داده باشد یا خیر؟ به طور خاص، باید بررسی کنیم که آیا متغیرهای پیشبینیکننده ارتباط خطی با متغیر پاسخ دارند، که نشان میدهد یک مدل رگرسیون خطی چندگانه ممکن است مناسب باشد. برای انجام این کار، میتوانیم از تابع ()pairs برای ایجاد یک نمودار پراکندگی از هر جفت متغیر ممکن استفاده کنیم:
pairs(data, pch = 18, col = “RED”) |
از این نمودار جفتی می توانیم موارد زیر را مشاهده کنیم:
- به نظر می رسد mpg و disp یک همبستگی خطی منفی قوی دارند
- به نظر می رسد mpg و hp یک همبستگی خطی مثبت قوی دارند
- به نظر می رسد mpg و drat یک همبستگی خطی منفی متوسطی دارند
توجه داشته باشید که میتوانیم از تابع ggpairs از کتابخانه GGally برای ایجاد یک نمودار مشابه که حاوی ضرایب همبستگی خطی واقعی برای هر جفت متغیر است استفاده کنیم:
کتابخانه GGally را #نصب و بارگذاری کنید
install.packages(“GGally”) library(GGally) |
#تولید طرح جفت
ggpairs(data) |
به نظر می رسد که هر یک از متغیرهای پیش بینی همبستگی خطی قابل توجهی با متغیر پاسخ mpg دارند، بنابراین ما به تطبیق مدل رگرسیون خطی با داده ها ادامه خواهیم داد.
برازش مدل رگرسیون چندگانه
نحو اصلی برای برازش یک مدل رگرسیون خطی چندگانه در R به شرح زیر است:
lm(response_variable ~ predictor_variable1 + predictor_variable2 + …, data = data) |
با استفاده از دادههای خود، میتوانیم مدل را با استفاده از کد زیر مطابقت دهیم:
model <- lm(mpg ~ disp + hp + drat, data = data) |
بررسی مفروضات مدل:
قبل از این که به بررسی خروجی مدل بپردازیم، ابتدا باید بررسی کنیم که مفروضات مدل برآورده شده است. یعنی باید موارد زیر را تایید کنیم:
1. توزیع باقیمانده های مدل باید تقریباً نرمال باشد. ما می توانیم با ایجاد یک هیستوگرام ساده از باقیمانده ها بررسی کنیم که آیا این فرض برآورده شده است:
hist(residuals(model), col = “RED”) |
یک راه مرسوم تر برای تخمین عملکرد مدل، نمایش باقیمانده در برابر معیارهای مختلف است. می توانید از تابع plot برای نمایش چهار نمودار استفاده کنید:
- مقادیر باقیمانده در مقابل مقادیر مناسب
- نمودار Q-Q معمولی: ربع نظری در مقابل باقیمانده های استاندارد شده
- Scale-Location: مقادیر متناسب در مقابل ریشه های مربع باقیمانده های استاندارد شده
- باقیمانده ها در مقابل اهرم ها: اهرم ها در مقابل باقیمانده های استاندارد شده
کد par(mfrow=c(2,2)) را قبل از plot(fit) اضافه کنید. اگر این خط کد را اضافه نکنید، R از شما می خواهد که دستور enter را بزنید تا نمودار بعدی نمایش داده شود.
par(mfrow=(2,2)) |
توضیح کد:
- (mfrow=c(2,2)): پنجره ای را با چهار نمودار کنار هم برگردانید.
- 2 اول تعداد سطرها را اضافه می کند
- 2 دوم تعداد ستون ها را اضافه می کند.
- اگر بنویسید (mfrow=c(3,2)): یک پنجره 3 سطر و 2 ستون ایجاد خواهید کرد.
هیستوگرام باقیمانده ها در R
اگرچه توزیع کمی به سمت راست منحرف شده است، اما آن قدر غیرعادی نیست که باعث نگرانی عمده شود.
2. واریانس باقیمانده ها باید برای همه مشاهدات سازگار باشد. این وضعیت ترجیحی به عنوان homoskedasticity شناخته می شود. نقض این فرض به عنوان heteroskedasticity شناخته می شود. برای بررسی اینکه آیا این فرض برآورده شده است، میتوانیم یک مقدار برازش در مقابل نمودار باقیمانده ایجاد کنیم:
#ایجاد ارزش متناسب در مقابل نمودار باقیمانده
plot(fitted(model), residuals(model)) |
#خط افقی را در 0 اضافه کنید
abline(h = 0, lty = 2) |
نمودار مقادیر برازش در مقابل باقیمانده ها در R
در حالت ایده آل، ما میخواهیم باقیماندهها در هر مقدار برازش به همان اندازه پراکنده شوند. میتوانیم از نمودار ببینیم که پراکندگی برای مقادیر برازش بزرگتر کمی بزرگتر میشود، اما این الگو به اندازهای افراطی نیست که باعث نگرانی بیش از حد شود.
تفسیر خروجی مدل رگرسیون چندگانه
هنگامی که تأیید کردیم که مفروضات مدل به اندازه کافی برآورده می شوند، می توانیم با استفاده از تابع summary خروجی مدل را مشاهده کنیم:
summary(model) |
از خروجی می توانیم موارد زیر را مشاهده کنیم:
- آماره F کلی مدل 32.15 و p-value مربوطه 3.28e-09 است. این نشان می دهد که مدل کلی از نظر آماری معنادار است. به عبارت دیگر، مدل رگرسیون در کل مفید است.
- disp از نظر آماری در سطح معنی داری 0.10 معنی دار است. به طور خاص، ضریب خروجی مدل نشان میدهد که افزایش یک واحدی در disp با یک کاهش 0.019 – واحد، به طور متوسط، در mpg همراه است، با فرض ثابت نگه داشتن hp و drat.
- hp از نظر آماری در سطح معنی داری 0.10 معنی دار است. به طور خاص، ضریب خروجی مدل نشان میدهد که افزایش یک واحدی در hp با 0.031- واحد کاهش به طور متوسط در mpg همراه است، با فرض ثابت نگه داشتن disp و drat.
- drat از نظر آماری در سطح معنی داری 0.10 معنی دار است. به طور خاص، ضریب خروجی مدل این است که یک واحد افزایش در drat با 2.715 واحد افزایش به طور متوسط در mpg همراه است، با فرض ثابت نگه داشتن disp و hp.
ارزیابی نیکویی برازش مدل رگرسیون چندگانه
برای ارزیابی میزان “خوب” مدل رگرسیون برازش داده ها، می توانیم به چند معیار مختلف نگاه کنیم:
1. چندگانه R-Squared: قدرت رابطه خطی بین متغیرهای پیش بینی کننده و متغیر پاسخ را اندازه گیری می کند. یک مربع R مضاعف 1 نشان دهنده یک رابطه خطی کامل است در حالی که یک R مربع چندگانه 0 نشان دهنده هیچ رابطه خطی نیست.
رگرسیون تکه ای در R یا piecewise regression
R چندگانه نیز جذر R-squared است، که نسبت واریانس در متغیر پاسخ است که می تواند توسط متغیرهای پیش بینی توضیح داده شود. در این مثال، R-squared چندگانه 0.775 است. بنابراین، R-squared 0.7752 = 0.601 است. این نشان می دهد که 60.1٪ از واریانس mpg را می توان توسط پیش بینی کننده های مدل توضیح داد.
2. خطای استاندارد باقیمانده: این مقدار میانگین فاصله ای که مقادیر مشاهده شده از خط رگرسیون می افتند را اندازه گیری می کند. در این مثال، مقادیر مشاهده شده به طور متوسط 3.008 واحد از خط رگرسیون سقوط می کنند.
استفاده از مدل رگرسیونی برای پیش بینی
از خروجی مدل می دانیم که معادله رگرسیون خطی چندگانه برازش شده به صورت زیر است:
mpghat = -19.343 – 0.019*disp – 0.031*hp + 2.715*drat |
ما می توانیم از این معادله برای پیش بینی در مورد میزان mpg برای مشاهدات جدید استفاده کنیم. برای مثال، میتوانیم مقدار پیشبینیشده mpg را برای خودرویی که دارای ویژگیهای زیر است، پیدا کنیم:
- disp برابر= 220
- hp برابر = 150
- drat برابر= 3
#ضرایب را از خروجی مدل تعریف کنید
intercept <- coef(summary(model))[“(Intercept)”, “Estimate”] disp <- coef(summary(model))[“disp”, “Estimate”] hp <- coef(summary(model))[“hp”, “Estimate”] drat <- coef(summary(model))[“drat”, “Estimate”] |
#از ضرایب مدل برای پیش بینی مقدار mpg استفاده کنید
intercept + disp*220 + hp*150 + drat*3 |
برای خودرویی با disp برابر = 220، hp برابر = 150 و drat برابر= 3، مدل پیش بینی می کند که ماشین دارای mpg 18.57373 باشد.
مطالعه منابع بیشتر رگرسیون خطی چندگانه در R :