آخرین خبرها
خانه / تحلیل رگرسیون / رگرسیون خطی ساده و چندگانه با R

رگرسیون خطی ساده و چندگانه با R

رگرسیون خطی ساده

فرض کنید ۲ بردار y و x به حجم n وجود دارد و به نظر می‌رسد که بین این دو نمونه رابطه‌ای خطی وجود دارد. با استفاده از تابع ()lm رگرسیون موجود بین این ۲ بردار را بدست می‌آوریم.

بطور مثال فرض کنید دو بردار x و y زیر موجودند:

(set.seed(50

(x<-rnorm(1000,0,1

(y<-rnorm(1000,3,1

برای اینکه بخواهیم رگرسیون به شکل زیر را به دست آوریم:

yi=a+bxi+ei

 (lm(y~x

را اجرا می‌کنیم که براورد عرض از مبدا (intercept) و شیب خط رگرسیون (که در مدل رگرسیونی فوق به ترتیب مقادیر a و b) هستند به صورت زیر نشان داده می‌شود:

:Call

(lm(formula = y ~ x

 :Coefficients

Intercept)          x)

      ۰.۰۰۸۰۰۵-        ۳.۰۱۸۶۳۵

رگرسیون خطی چندگانه

فرض کنید متغیر پاسخ (y) و چند متغیر پیشگو (برای مثال u، v و w) موجود است و تصور می‌کنیم که بین این متغیرهای پیشگو و متغیر پاسخ ارتباط خطی وجود دارد.

بطور مثال فرض کنید دو بردار u، v، w و y زیر موجودند:

(set.seed(500

(u<-rnorm(1000,1,1

(v<-rnorm(1000,3,1

(w<-rnorm(1000,1,1

(y<-rnorm(1000,10,1

برای اینکه بخواهیم رگرسیون به شکل زیر را به دست آوریم:

yi=a0+a1ui+ a2vi + a3wi + ei

 (lm(y~u+v+w

بدست آوردن آماره‌های رگرسیون

فرض کنید درباره رگرسیونی که بدست آورده‌ایم، می‌خواهیم اطلاعاتی چون R2، آماره F، فواصل اطمینان برای ضرائب رگرسیون، مانده‌ها، جدول ANOVA و… را بدست آوریم.

برای این منظور پس از اجرای رگرسیون و نامگذاری دلخواه آن (مثلاً برای راحتی کار نام متغیر را m در نظر می‌گیریم)، برای

-جدول ANOVA، تابع (anova(m؛

-ضرائب مدل، (coefficient(m یا (coef(m؛

-فواصل اطمینان ضرائب مدل، (confint(m؛

-مجموع مربعات خطا، (deviance(m؛

-بردار اثرات متعامد، (effects(m؛

-بردار مقادیر برازیده شده متغیر پاسخ (y، fitted(m؛

– مانده‌ها، (residuals(m یا (resid(m؛

-خلاصه آماره‌ها چون، R2، F و خطای استاندارد مانده‌ها، (summary(m؛

-ماتریس واریانس – کوواریانس پارامترهای اصلی، (vcov(m.

تشخیص یک مدل رگرسیون خطی

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

برای این منظور ابتدا تابع plot را برای مدل مورد نظر اجرا می‌کنیم که برخی نمودارهای را جهت تشخیص این موضوع ارائه می‌کند.

بعد از نصب پکیج car می‌توان از تابع ()outlierTest برای بررسی مانده‌های مدل استفاده کرد.

با در نظر گرفتن مثال زیر به ارائه مختصری از کار فوق می‌پردازیم.

فرض کنید:

(set.seed(1500

(x<-rnorm(1000,0,1

(y<-rnorm(1000,00,1

(m<- lm(y~x

پس از اجرای تایع:

(plot(m

به طور مثال نمودار اول بیانگر پراکنش مقادیر برازیده شده در برابر مانده‌هاست. همچنین دومین نمودار بیانگر Q-Q plot است که نشان می‌دهد آیا مانده‌ها از تابع توزیع نرمال پیروی می‌کنند یا خیر.

 پیشگویی مقادیر جدید

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

برای مثال اگر:

(set.seed(2500

(x<-rnorm(1000,0,1

(y<-rnorm(1000, 0,1

(m<- lm(y~x

داده‌های مدل رگرسیونی باشد و

(u<-rnorm(1000,0,1

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

(pred<-data.frame(u

ساخته و سپس با استفاده از دستور:

(predict(m,pred

مقادیر را پیشگویی می‌کنیم.

http://www.future-gate.ir

درباره‌ kashani

جوابی بنویسید

ایمیل شما نشر نخواهد شدخانه های ضروری نشانه گذاری شده است. *

*