برنامه‌نویسی به زبان R

برنامه‌نویسی به زبان R

دوستان عزیز جهت انجام پروژه‌های آماری و برنامه‌نویسی پایان‌نامه می‌توانید با آدرس الکترونیکی rprogramming.iran@gmail.com تماس حاصل نمائید.
برنامه‌نویسی به زبان R

برنامه‌نویسی به زبان R

دوستان عزیز جهت انجام پروژه‌های آماری و برنامه‌نویسی پایان‌نامه می‌توانید با آدرس الکترونیکی rprogramming.iran@gmail.com تماس حاصل نمائید.

محاسبه انتگرال

برای محاسبه انتگرال با استفاده از برنامه R روش‌های مختلفی وجود دارند که به ذکر دو روش می‌پردازیم.

1) با استفاده از تابع ()integrate

2) با استفاده از شبیه‌سازی به روش مونت کارلو.

به طور مثال فرض کنید که تابع زیر را در نظر داریم و می‌خواهیم انتگرال تابع زیر را در حدود انتگرالی 0 و 10 محاسبه کنیم:

 f<-function(x){

exp(-x)/sqrt(x)

}

حال برای محاسبه انتگرال تابع فوق کافی است داخل آرگومان تابع ()integrate به ترتیب تابع، حد پائین و حد بالای انتگرال را قرارداده و اجرا کنیم که به صورت ذیل است:

(integrate(f,0,10

برای محاسبه انتگرال به روش مونت کارلو کافی است  ابتدا تعدادی متغیر تصادفی از توزیع یکنواخت پیوسته با حدود بالا و پائین همانند حدود انتگرال تولید می‌کنیم. سپس مقدار تابع را به ازای این تعداد متغیر تصادفی یکنواخت محاسبه و سپس میانگین این مقادیر را به دست می‌آوریم و این حاصل را در تفاضل حدود انتگرال (یا همان حدود متغیر یکنواخت تولید شده) ضرب می‌کنیم. جواب به ددست آمده تقریب دیگری برای محاسبه انتگرال در برنامه R است که برای تابع فوق به شکل زیر به دست می‌آید:

(u<-runif(1000000,min=0,max=10

((10*mean(f(u

RStudio

Rstudio شرکتی است که تهیه نرم‌افزار، آموزش و خدماتی را برای محیط محاسباتی برنامه آر تخصیص داده است. برنامه ساخته شده توسط این شرکت، محیطی توسعه یافته و یکپارچه برای نرم افزار آر به حساب می‌آید.

از قابلیت‌های این محیط می‌توان به:

1) ابزارهای سودمند قدرتمند (متمایز کردن، کامل شدن دستورات، دندانه‌های هوشمند...)

2) محیط برنامه‌نویسی ساخته شده برای نرم‌افزار آر (جستجو در فضای کاری، نمایشگر داده‌ها خروجی پی‌دی‌اف و ...)

3) سازگار (قابلیت کار کردن با هر نسخه‌ای از نرم‌افزار آر (نسخه‌های 2.11.1 به بالا)، رایگان و منبع آزاد و...)،

اشاره کرد.

برای دانلود این نرم‌افزار می‌توانید به لینک زیر مراجعه کنید.

http://www.rstudio.com/ide/download/desktop

ترسیم نقشه

یکی از قابلیت‌های موجود در R محیط گرافیکی آن است. به‌طور مثال در این محیط می‌توان با در دست داشتن فایل‌های مربوط به نقشه یک شهر یا کشور (فایل‌های GIS)، نقشه نقطه مورد نظر را ترسیم کرد. جهت ترسیم، این فایل باید به صورت چندضلعی (Polygon) باشد.

برای رسم نقشه پس نصب و بارگذاری بسته maptools  از دستور  ()readShapePoly استفاده می‌کنیم. قبل از استفاده از این دستور بایستی فایل‌های نقشه منطقه مورد نظر را (پس از نصب بسته maptools) در شاخه library\maptools\shapes ذخیره کنیم. به‌طور مثال می‌توانید نقشه شهر تهران و کشور ایران را از لینک‌های زیر:

http://mihanbit.com/download/51d83e40c9807/tehran.zip

و

http://mihanbit.com/download/51d83e6be541f/IRN_adm.zip

دانلود کنید و در شاخه فوق (پس از خارج کردن فایل‌ها از حالت فشرده) ذخیره کنید. حال برای ترسیم این دو نقشه از دستور ()readShapePoly استفاده می‌کنیم، یعنی:

("nc_shp1<-system.file("shapes/IRN_adm/IRN_adm0.shp", package = "maptools

(("")nc1<-readShapePoly(nc_shp1, proj4string = CRS

(plot(nc1, axes=TRUE, las=1

سطر اول فراخوانی بسته maptools و فایل مربوط به منطقه مورد نظر (که در اینجا کشور ایران و شهر تهران ) است. سطر دوم ساخت فایل نقشه با توجه به فایل نقشه است و سطر سوم ترسیم نقشه با توجه به فایل نقشۀ ساخته شده است. 

توجه کنید که فایل مورد نظر برای ترسیم نقشه فایل‌های با فرمت shp هستند.

در پایان این پست، از دوست خوبم سرکار خانم دکتر برزگر به جهت آموزش این مطلب به بنده کمال تشکر و قدردانی را دارم.

رگرسیون غیرخطی

فرض کنید دو بردار از مشاهدات x و y را در اختیار داریم و به نظر می‌رسد که رگرسیونی غیرخطی برای این دو بردار برقرار است. یعنی حدس ما این است که بردار y تابعی غیرخطی از بردار x است. برای بدست آوردن پارامترهای مربوط به این رگرسیون از تابع ()nls استفاده می‌کنیم. برای این منظور فرض کنید:

 a<- 1:1000

 b<-3*a^2+a+5

 حال با اضافه کردن برداری از نویزها به بردار b مقادیر آن را کمی متفاوت از بردار اصلی b تغییر می‌دهیم. یعنی خواهیم داشت:

 (c<-b+rnorm(1000,0,1

 حال مساله را این طور مطرح می‌کنیم که فرض کنیم بردار x و z را در اختیار داریم  (که به صورت زیر هستند) و می‌دانیم بین بردار z و x رگرسیونی غیرخطی از نوع درجه دو برقرار است. حال می‌خواهیم برای این حدس ضرائب رگرسیون غیرخطی فوق را بدست آوریم. یعنی می‌خواهیم ببینیم که برای حدس مدل رگرسیونی به شکل:

 z=rx2+ux+s

 ضرائب این رگرسیون چند است.

 برای این منظور داریم:

 (abc <-matrix(c(a,b,c),ncol=3

 [x<-abc[,1

[y<- abc [,2

[z<- abc [,3

((nls(z~r*x^2+u*x+s,list(abc),start=list(r=1,u=1,s=1

 که در توضیح تابع باید گفت که در قسمت اول آرگومان تابع باید فرمول مورد نظر، در قسمت دوم آرگومان مجموعه داده‌ای که این دو بردار در آن موجود هستند که باید به صورت list باشند و در قسمت سوم آرگومان تابع، مقادیر اولیه پارامترهایی که می‌خواهیم بررسی شوند به صورت list نوشته می‌شوند.