برای اجرای رگرسیون خطی ساده و رگرسیون خطی چندگانه در نرمافزار R، میتوانید از تابع lm() استفاده کنید. در اینجا، مراحل و مثالهایی برای هر دو نوع رگرسیون ارائه میشود.
رگرسیون خطی ساده
فرض کنید ۲ بردار 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)
0.008005- 3.018635
رگرسیون خطی چندگانه
فرض کنید متغیر پاسخ (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
مقادیر را پیشگویی میکنیم.
با دریافت « مشاوره برنامهنویسی، وب و سئو » از کارشناسان جوان حرفهای و باتجربه ساکوراد؛ موفقیت کسب و کار، رونق فروش و افزایش درامد خود را تضمین کنید!
و اما کلام اخر…
رگرسیون خطی ساده و چندگانه ابزارهای قدرتمندی برای تحلیل دادهها هستند که با استفاده از تابع lm() در R به سادگی قابل پیادهسازیاند. این روشها به شما کمک میکنند تا روابط بین متغیرها را شناسایی کرده و پیشبینیهای دقیقی انجام دهید.






