آموزش آمار: آموزش SPSS و آموزش SAS و آموزش STATA و آموزش نرم افزار R


نحوه محاسبه مدل Logit در نرم افزار R

نویسنده: هیئت تحریریه ژورنال الکترونیکی آمار آکادمی

مدل های لوجیت معرف مدل هایی هستند که متغیر وابسته آنها دو بعدی است. در یک مدل لجیت لگاریتم برتری به عنوان برونداد مدل و بر اساس ترکیبی از متغیر های مستقل مدلیزه می شود. به عنوان مثال اگر متغیر وابسته موفق شدن یا نشدن یک تیزر تبلیغاتی با اساس ضریب نفوذ آن باشد، و بخواهیم متغیر های مستقل پیش بینی کننده آن را شناسایی کنیم؛ با یک مدل لجیت سرو کار داریم. لذا در این پژوهش ها نمی توان از رگرسیون های معمولی (که متغیر وابسته باید کمی باشد)، برای پیش بینی رخداد متغیر وابسته استفاده نمود. در این نوع از رگرسیون از نسبت برتری که نسبت موفقیت به شکست می باشد استفاده می شود. باید توجه شود که  پیش شرط های انجام رگرسیون خطی مانند وجود رابطه خطی بین متغیر های مستقل و وابسته، همسانی واریانس متغیر وابسته و متغیر های مستقل، توزیع نرمال متغیر وابسته و باقیمانده ها یا خطای اندازه گیری در مدل لجیت مورد توجه نیست. مدل عمومی تابع لجیت به شرح زیر است:

Ln (p/ (1-p) = intercept + b1*X1 + b2*X2 + ... + bk*Xk

شکل کلی این تابع به شکل زیر خواهد بود:
 

آموزش نرم افزار R

هدف این نوشتار نحوه محاسبه تابع لوجیت در نرم افزار R می باشد. این نرم افزار امروزه دارای محبوبیت گسترده ای در زمینه انجام آنالیز های چند متغیره شده است و می توان بسیاری از توانمندی های آنرا با نرم افزار های مشهوری چون SAS، SPSS و S-PLUS مقایسه نمود.
شکل کلی دستور اجرای این تکنیک آماری در نرم افزار R به شکل زیر است که در ادامه در مورد هر یک از مولفه ها توضیحی خواهد آمد.

فرمانهای مربوط به R

به عنوان مثال در تحقیقی، هدف به دست آوردن توابع لجیت برای بررسی افزایش شانس قبولی در آزمونی است. به این منظور با کد صفر و یک در یک ستون افرادی که در آزمون رد یا قبول شده اند مشخص و سپس در مقابل هر یک؛ دو نمره آنها یعنی gre, gpa  را ثبت و سپس نوع موسسه ای که افراد آموزش دیده اند را نیز با کدهای یک تا چهار که بیانگر درجه یک تا درجه چهار می باشند مشخص و در ستون متغیری به نام rank تعریف می شود. به منظور انجام تابع لجیت این مثال، در نرم افزار R ابتدا باید دیتای مورد تحلیل به نرم افزار معرفی شود. برای این منظور باید در کنسول نرم افزار کد زیر تایپ شود تا داده گرد آوری شده از این فایل خوانده شود.

mydata <- read.csv("M:/project/data.csv")

سپس باید دیتای موجود با کنسول ورودی متصل شود. لذا دستور زیرتایپ شود:

attach(mydata)
names(mydata)
[1] "admit" "gre"   "gpa"   "rank"

در این مرحله برای مشاهده آماره های توصیفی کافی است دستور summary را نوشته و داخل پرانتز اسم متغیر را وارد کنیم مانند:

 summary(gre)

سپس دستور اجرای تابع لوجیت را در نرم افزار در خط بعدی تایپ می کنیم:

mylogit<- glm(admit~gre+gpa+as.factor(rank), family=binomial(link="logit"), na.action=na.pass)

در این دستور GLM تابع اصلی انجام تابع لجیت است و متغیر نوع موسسه به دلیل طبقه ای بودن به صورت as.factor(rank) معرفی می شود.
در این مرحله آنالیز های انجام شده در فایل موقتی به اسم mylogit در نرم افزار ذخیره شده است. برای دیدن آن کافی است که دستور مقابل را تایپ کنید:

 summary(mylogit)

با این دستور تمام آنالیز های مورد نیاز جهت به دست آوردن تابع لوجیت انجام می شود.

glm(formula = admit ~ gre + gpa + as.factor(rank), family = binomial(link = "logit"),
    na.action = na.pass)

Deviance Residuals:
    Min       1Q   Median       3Q      Max 
-1.6268  -0.8662  -0.6388   1.1490   2.0790 

Coefficients:
                  Estimate Std. Error z value Pr(>|z|)   
(Intercept)      -3.989979   1.139951  -3.500 0.000465 ***
gre               0.002264   0.001094   2.070 0.038465 * 
gpa               0.804038   0.331819   2.423 0.015388 * 
as.factor(rank)2 -0.675443   0.316490  -2.134 0.032829 * 
as.factor(rank)3 -1.340204   0.345306  -3.881 0.000104 ***
as.factor(rank)4 -1.551464   0.417832  -3.713 0.000205 ***
---
(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 499.98  on 399  degrees of freedom
Residual deviance: 458.52  on 394  degrees of freedom
AIC: 470.52

در اولین بخش خروجی اطلاعات مربوط به عملیات محاسباتی مورد نظر آورده شده است. در قسمت بعد انحراف استاندارد آورده شده است که با کمک آن می توان نسبت به بررسی برازش یا فیت مدل قضاوت نمود. بخش بعدی ضرایب تخصیص یافته به هر متغیر مستقل آورده شده است که برای آن آماره والد در قسمت z value آورده شده است. در صورتیکه مقدار سطح معنی داری زیر 05/0 باشد می توان آن متغیر مستقل را برای پیش بینی ابعاد متغیر وابسته مورد استفاده قرار داد. به عنوان مثال با یک واحد افزایش در مقدار gre مقدار لگاریتم نسبت برتری به میزان 002/0 واحد بیشتر خواهد بود و به همین ترتیب برای سایر متغیر های مستقل. در ادامه خروجی نیز دو بخش انحراف صفر و انحراف باقیمانده گزارش شده است که در کنار شاخص AIC به منظور بررسی برازش کلی مدل لوجیت مورد استفاده قرار می گیرد.
به منظور لود نمودن مقادیر اکسپوننشیال تابع که قضاوت را ساده تر می کند دستور زیر را تایپ می کنیم.

exp(mylogit$coefficients)
(Intercept)              gre              gpa as.factor(rank)2
       0.0185001        1.0022670        2.2345448        0.5089310
as.factor(rank)3 as.factor(rank)4
       0.2617923        0.2119375

بر اساس مقادیر اکسپوننشیال می توان بیان نمود که یک واحد افزایش مقداری gpe به معنای 2/2 برابر شدن شانس قبولی در آزمون است. این مقدار از به توان بردن مقدار Estimate به عدد طبیعی است.

به منظور بررسی فاکتور نوع موسسه ای که فرد در آن تحصیل نموده است، می توان از دستور زیر استفاده نمود.

rank <- c(1,2,3,4)
gre <- c(mean(mydata$gre))
gpa <- c(mean(mydata$gpa))
newdata1 <- data.frame(gre,gpa,rank)
newdata1

و سپس دستور زیر تایپ شود:

newdata1$rankP <-predict(mylogit,newdata=newdata1,type="response")
newdata1

بعد از این دستور این خروجی ظاهر می شود:

    gre    gpa rank rankP
1 587.7 3.3899    1 0.5166016
2 587.7 3.3899    2 0.3522846
3 587.7 3.3899    3 0.2186120
4 587.7 3.3899    4 0.1846684

نتایج نشان می دهد که دانشجویی که در یک موسسه درجه اول تحصیل نموده شانس قبولی وی 52 درصد است در حالیکه دانشجویی که در یک موسسه درجه چهار تحصیل نموده از شانس 18 درصدی برخور دار است.

در نهایت جهت بررسی مقادیر انحراف باقیمانده ها از دستور زیر استفاده می کنیم.

mylogit$null.deviance - mylogit$deviance

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

mylogit$df.null - mylogit$df.residual

که مقدار 5 را گزارش می کند. به منظور محاسبه سطح معنی داری نیز ابتدا کد زیر را تایپ می کنیم.

1-pchisq(mylogit$null.deviance-mylogit$deviance, mylogit$df.null-mylogit$df.residual)

مقدار کمتر از 001/0 مدل نشان می دهد که متغیر های وارد شده به مدل لوجیت از اعتبار بالایی برخور دار هستند زیرا که اختلاف کای اسکویر در مدل صفر با مدل اشباع شده کاملا معنی دار است که نشان از برازش کلی مدل دارد. به منظور محاسبه تابع حداکثر درستنمایی جهت گزارش نیز می توان دستور logLik(mylogit) را تایپ نمود. مقدار تابع حداکثر درستنمایی در این مرحله نمایش داده می شود. رگرسیون لجستیک بحث مفصلی است که در این آموزش بیشتر نحوه پیاده سازی آن در نرم افزار R مورد توجه بود. برای کسب اطلاعات بیشتر می توان از منبع زیر استفاده نمود.

• Rice, J. C. (1994). Logistic regression: An introduction. Advances in social science methodology, Vol. 3: 191-245. Greenwich , CT: JAI Press. Popular introduction.



کلمات کليدي:


بازديد:
آموزش spss

نام و نام خانوادگي:

ايميل:
وبسايت:
شماره امنيتي:
پيام شما:


29/8/1391 - ساعت -808/1/-605 نازی | ايميل
tashakor mikonam az va khaste nabashid agar matlabi darbareye regresione naparametry dar ekhtiar darid lotfan dar site qarar bedid
2/2/1391 - ساعت -78/1/-604 fateme grivani | ايميل
سلام ابتداتشکر میکنم از فضایی که در اختیارم قرار دادید تا ان شاالله به جواب سوالم برسم. لطفا اگه ممکنه اموزش جامع در ضمن حل یه مثال اقتصادی از مدل پروبیت و لوجیت ارائه دهید تا ابهاماتی که در شروع کار داریم با اون کلا رفع شه واینکه در این زمینه ها نرم افزارهایی که استفاده میشه معایب و مزایااونهاو کتاب یا هر چیزی که در این زمینه کمک میکنه تا کسی که هیچ اشنایی با این مدلها نداره ره صد ساله رو یک شبه بره در اختیارمون بزارین. اجرشماهم با خدا..خدا کسایی رو که دل بنده ها رو شاد میکنه رو از یاد نمی بره....
5/8/1390 - ساعت -78/1/-613 مهدی خجسته کی | ايميل
با سلام و احترام خواهشمندم در صورت امکان درمورد نحوه اجرای رگرسیون متعامد(orthogonal) با استفاده از نرم افزار R مطلبی را همراه با مثال ارائه فرمائید با تشکر
1/8/1390 - ساعت -443/1/-609 مریم پناهی | ايميل
با سلام .با تشکر من فایل متنی نحوه محاسبه رگرسیون لجستیک را مطالعه کردم اما مشکلم در نحوه وارد کردن داده ها و اگر امکان دارد داده ها مثالی که در سایت گذاشتید را می خواهم . تشکر
13/7/1390 - ساعت -808/1/-605 زهرا رودباری | ايميل
سلامrnخواهش میکنم اگه براتون امکان داره نحوه محاسبه رگرسیون ordinal در نرم افزار R بنویسید این قسمت مقالات خیلی ضروریه ممنون میشم اگه همچین کاری کنیدrn
11/7/1390 - ساعت -443/1/-605 علی رحیمی
با سلام نحوه محاسبه logit در برنامه R می خواستم. ممنون از لطفتون