Posted on

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

وزن (بر حسب پوند) و سن یک نمونه تصادفی از مردان ثبت شده است، می خواهیم معادله خط رگرسیونی را پیدا کنیم.

w<-c(165,167,180,195,212,175,190,210,200,159,172,189,168,174,183,190,195,180,182,220)

age<-c(18,23,25,35,53,54,34,49,50,19,23,42,18,39,37,25,42,45,30,52)

در بررسی رابطه میان دو متغیر نخستین گام رسم نمودار پراکنش است.

plot(age,w)

نمودار پراکنش یک روند خطی با شیب مثبت را نشان می دهد.

برای برازش خط رگرسیونی از تابع ()lm استفاده می کنیم. شناسه این تابع فرمول مدلی است که می خواهیم برازش دهیم.

linreg<-lm(w~age)

نتیجه این تابع در linreg ثبت می شود. برای مشاهده نتایج از تابع summary استفاده می کنیم.

summary(linreg)

Call:
lm(formula = w ~ age)

Residuals:
Min 1Q Median 3Q Max
-28.2557 -4.1962 0.3145 7.1666 18.7014

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 150.4161 7.9757 18.859 2.65e-13 ***

age 0.9785 0.2118 4.621 0.000212 ***

Signif. codes: 0 ‘ 0.001 ’ 0.01 ‘’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 11.51 on 18 degrees of freedom
Multiple R-squared: 0.5426, Adjusted R-squared: 0.5172
F-statistic: 21.35 on 1 and 18 DF, p-value: 0.0002123

مقادیر p-value مربوط به ثابت و شیب خط معنی دار بودن آنها را نشان می دهد.

فاصله اطمینان 95 درصدی مربوط به پارامترهای مدل را نیز محاسبه می کنیم.

confint(linreg,level=.95)
2.5 % 97.5 %
(Intercept) 133.6598819 167.172348
age 0.5336186 1.423402

برای رسم همزمان داده ها با خط رگرسیونی به صورت زیر عمل می کنیم:

plot(age,w)
abline(linreg)

با سه دستور زیر می توان به مقادیر فیت شده دست یافت:

pred<-predict(linreg)
pred<-fitted(linreg)
pred<-linreg$fitted

باقیمانده ها را نیز با یکی از دستورات زیر بدست می آوریم:

res<-w-pred
res<-residuals(linreg)
res<-linreg$residuals

با رسم مقادیر فیت شده در مقابل باقیمانده ها:

plot(pred,res)

باقیمانده ها به طور تصادفی در اطراف صفر پراکنده شده اند و از روند خاصی پیروی نمی کنند که برای مناسبت مدل مطلوب است.

فرض نرمال بودن باقیمانده ها را نیز بررسی می کنیم:

qqnorm(res)
qqline(res)

One comment رگرسیون خطی ساده در R

  1. خیلی عالی و مفید بود من این بخش رو مشکل داشتم و با دیدن این سایت مشکلم حل شد ممنون

دیدگاهتان را بنویسید

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