فهرست
R چیست؟
آر (R) یک محیط پرقدرت، منعطف و در عین حال ساده برای پردازش و تحلیل داده است. شما در R به گسترۀ وسیعی از روشها و مدلهای آماری، الگوریتمهای دادهکاوی و یادگیری ماشین، ابزارهای مدیریت داده و امکانات بصریسازیِ داده دسترسی دارید.
تاریخچه مختصر
این زبان یا محیط نرمافزاری در دهه 90 میلادی از موجود دیگری به نام S که آن هم برای محاسبات آماری ساخته شده بود منشعب شد و به صورت رایگان و متنباز (Open Source) در اختیار عموم قرار گرفت. این اقدام سبب شد تا R به مرور محبوبیت زیادی در میان تحلیلگران داده در دنیا پیدا کند. نخستین نسخه پایدار آر R.1.0.0 در سال 2000 منتشر شد و از آن زمان تا کنون بارها به روز شده و ارتقا یافته است.
بسیاری از کاربران R کسانی هستند که پیش از کار با آن هیچ سررشتهای در آمار و تحلیل داده نداشتهاند اما پس از استفاده از آن نه تنها به تحلیل داده و یادگیری ماشین و … علاقهمند شده بلکه دستی در برنامهنویسی نیز پیدا کردهاند و با اتکّا به R هر کاری که لازم باشد میتوانند با دادهها انجام دهند.
چرا R ؟
چرا R در دو دهه اخیر در مراکز تحقیقاتی، دانشگاهها و کسبوکارهای دنیا همواره با استقبال روبرو بوده است؟
برنامهنویسیِ ناخواسته
یکی از بهترین پاسخها به این سوال را جان چَمبِرز (John Chambers) مُبدِع زبان S و عضو کنونی هیئت مرکزیِ ویرایشگرانِ R داده است. چمبرز وقتی داستان رشدِ S (مادر زبان R) را بازگو میکند از نوعی ابهامِ معنادار در نامگذاری S سخن میگوید در ابتدا S به عنوان یک «سیستم» معرفی میشد، بعدتر از «زبان» برای توصیف آن استفاده کردیم، پس از آن، لفظِ «محیط» را به کار بردیم. در نسخههای بعدی، «سیستم» به فراموشی سپرده شد و دوباره از کلمۀ «زبان» بیشتر استفاده شد. اما در تمامی این مراحل، از واژۀ برنامهنویسی برای توصیف آن خودداری کردیم تا S به عنوان یک ابزار تحلیل و مصورسازیِ داده در مقایسه با سایر نرمافزارهای آماری چندان غیرمعمول و عجیب به نظر نیاید.
این ویژگی در مورد R نیز صادق است. هنگام کارکردن با R کاربر ابتدا خود را در محیطی تعاملی مییابد و بدون آنکه خود را برنامهنویس قلمداد کند دستور مورد نیاز برای انجام یک محاسبه آماری یا ترسیم یک نمودار به کامپیوتر میدهد و نتایج آن را بلافاصله روی صفحۀ مانیتورش مشاهده میکند. در این تجربه، همزمان با مطرح شدنِ نیازهای دیگر، کاربر در مییابد که با اجرای چند خط برنامه کامپیوتری به زبان R میتواند کارهای جذاب و ارزشمندِ بیشتری بکند.
از کاربر به برنامهنویس!
تبدیل نامحسوسِ کاربرِ یک بستۀ نرمافزاری به یک توسعهدهنده یا برنامهنویس چیزی است که چمبرز از آن به عنوان فلسفه آموزش و ترویج S و R یاد میکند. ( Chambers, Stages in the Evolution of S ) .
تحلیلگر داده یا آماردانی که از R در کارهای خود استفاده میکند رفتهرفته یاد میگیرد که چگونه مفاهیم اساسی توسعه نرمافزار را در پردازش و تحلیل دادهها به کار ببرد و توانمندی خود در کار با دادهها ارتقا دهد.
زبان سطح بالا و صرفهجویی در زمان تحلیلگر
دستوراتی که در زبانهای برنامهنویسی مختلف اجرا میشوند مراحل میانی گوناگون زیادی را طی میکنند تا به زبان ماشین نزدیک شود و روی سختافزار ماشین اجرا شود. این مراحل میانی به وسیلۀ مترجم (compiler) یا مفسر (interpreter) یا ترکیبی از این دو انجام میشود.
هرچه این مراحل میانی کمتر باشد آن زبان به ماشین نزدیکتر است و برای اجرا روی سختافزار آن آمادگی بیشتری دارد، در نتیجه سریعتر اجرا میشود. زبانهایی مانند C و Fortran که به زبان ماشین نزدیکترند را اصطلاحاً زبانهای سطح پایین و زبانهایی مانند R و Python که ترجمه و تفسیر بیشتری برای تبدیل شدن به زبان ماشین لازم دارند را اصطلاحاً زبانهای سطح بالا میگویند. زبانهای سطح بالا در مقایسه با زبانهای سطح پایین کندتر اجرا میشوند اما متن برنامه در آن کوتاهتر و برای انسان قابل فهمتر است.
به بیان دیگر زبان سطح بالا به زبان آدم نزدیکتر و زبان سطح پایین به زبان ماشین نزدیکتر است. در نتیجه میتوان گفت زبان سطح پایین، زمان پردازش ماشین و زبان سطح بالا زمان تحلیلگر و برنامهنویس را بهینه میکند.
علوم داده بیش از هر چیزی محصول افزایش توان پردازش کامپیوتر است. با این حال گلوگاه اصلی فعالیتهای آن، هنوز نیروی انسانی متخصص است. به همین دلیل کسی برای تحلیل سراغ زبانهای سطح پایین نمیرود. زبانهایی مانند R با امکاناتِ پیشساختۀ بسیاری برای پردازش و تحلیل داده ساخته شدهاند و استفاده از آنها زمان تحلیلگر را به صورت قابل توجهی کاهش میدهد. به عنوان نمونه یک دستور که با نیمسطر کد در R قابل اجراست ممکن است در یک زبان سطح پایین چندین سطر برنامهنویسی نیاز داشته باشد.
اجرای سطر به سطر و امکان تعامل با داده
در زبانهایی که مترجم دارند باید ابتدا کل برنامه به زبانی قابل فهم برای ماشین ترجمه (compile) شوند و سپس روی سختافزارِ ماشین اجرا شوند و خروجیهای مورد نظر را تحویل دهند. اما در زبانهایی که مفسر دارند برنامه به صورت تکهتکه – مثلا به صورت سطر به سطر – به زبانی قابل فهم برای ماشین تبدیل و اجرا میشود. به بیان دیگر هر تکه از برنامه، پیش از رفتن سراغ تکۀ بعد، تفسیر (interpret) و روی سختافزار ماشین اجرا میشود و به خروجی قابل مشاهده برای کاربر میرسد.
تحلیل داده در اغلب موارد ماهیت آزمونوخطا و اکتشاف دارد و نیازمند تعامل چندباره با دادههاست. بنابراین، زبانهای برنامهنویسی که مترجم دارند و مفسر ندارند نمیتوانند بستری برای تعامل سریعِ تحلیلگر با دادهها فراهم کنند و در نتیجه تحلیلگر را با دشواریهای زیادی مواجه خواهند کرد.
R و Python به عنوان ابزارهای اصلی تحلیل داده، هر دو از مفسر استفاده میکنند و امکان تعامل سریع تحلیلگر با دادهها و آزمون و خطای بدون دردسر را فراهم میکنند. ویرایشگرهای R همگی به گونهای طراحی شدهاند که امکان اجرای سطر به سطر یا تکهتکۀ دستورات و مشاهده نتایج فراهم باشد.
کنترلِ کامل روی داده
همیشه بیشترین زمان یک تحلیلگر داده صرف پیشپردازش و پاکسازی دادهها میشود. برای همین، ابزاری لازم است که امکانِ مواجهه با هر گونه وضعیت ناخواسته با اتکّا به آن فراهم باشد. در محیط R، به دلیل شباهت آن با زبانهای برنامهنویسی، تحلیلگر روی دادهها کنترل کامل دارد و در صورت لزوم میتواند تغییرات خاص و جزئی را هم روی دادهها اعمال کند.
این ویژگی در بسیاری از نرمافزارهای محاسبات عددی و آمار مانند اکسل excel، اسپیاساس spss، مینیتب minitab و … وجود ندارد. مثلا اگر ساختار دادههایی که میخواهید آن را در یک مدلسازی آماری استفاده کنید با آنچه انتظار دارید متفاوت است باید ابتدا ساختار آن را تغییر دهید تا مدلسازی امکانپذیر شود. بستههای نرمافزاری که کنترل کاملی روی دادهها ندارند معمولا چندان در تغییر ساختار دادهها و انجام تغییرات موردی توانا نیستند. R برای این نوع پیشپردازشها بسیار کارآمد است.
تکرارپذیریِ تحلیل
تکرارپذیری یکی از محورهای اصلی در تحلیلهای کمّی و تحقیقات علمی است. اگر تحلیل خود را در قالب دنبالهای مشخص از دستورات در قالب یک برنامه کامپیوتری صورتبندی کنید که به صورت سطر به سطر روی دادهها اجرا شود، تحلیل مورد نظر شما قدم به قدم پیش میرود و دادههای خام را تحت یک فرایند روشن و شفاف (الگوریتم) به اطلاعات مورد نظر تبدیل میکند. در این رویکرد، دیگران نیز میتوانند با در اختیار داشتن برنامۀ کامپیوتری و دادهها آن را اجرا کنند و مورد ارزیابی قرار دهند، نکاتی را به آن اضافه کنند و آن را توسعه دهند. در این شیوه، هیچ یک از گامهای تحلیل گم نمیشود و در صورتِ بروز خطا، رهگیری منشأ مشکل در سطرهای مختلفِ برنامه امکانپذیر است در حالیکه در برخی ابزارهای تحلیلی گامهای میانی تحلیل به راحتی قابل مشاهده نیست افراد نمیتوانند مستقل از تحلیلگر به راحتی تحلیل را تکرار و نقد کنند.
تکرارپذیری (Reproducibility) یک رویکرد در ساماندهی مراحل تحلیل و شیوه پیادهسازی است و اختصاصی به R ندارد اما در R یا هر محیط دیگری که قابلیت ذخیرهسازی تحلیل در قالب یک برنامه کامپیوتری در آنها وجود دارد به راحتی قابل اجرا است.
کار با دادههای حجیم
این که منظور از دادۀ بزرگ و حجیم (Big Data) چیست چندان مشخص نیست. بزرگ و حجیم دانستنِ داده، بیش از هر چیز به امکانات ما برای پردازش و تحلیل آن بستگی دارد. با توجه به این که محبوبترین ابزار تحلیل داده در دنیا اکسل و انواع دیگر spreadsheet است، میتوانیم داده بزرگ را دادهای در نظر بگیریم که با اکسل به زحمت میتوان آن را پردازش کرد. در اکسل چون تحلیلگر باید دادهها را ببیند و با انتخاب ستونها و ردیفهای مورد نظرش تحلیل را پیش ببرد حافظه قابل توجهی صرف به رویت رساندنِ دادهها میشود اما در محیط R یا هر محیط برنامهنویسی دیگری مشاهدۀ یکبارۀ دادهها ضرورت ندارد در نتیجه میتوان دادههای به مراتب بزرگتری را روی حافظه کوتاهمدت کامپیوتر (RAM) فراخواند و با سرعت بیشتری با آنها کار کرد؛ حتی اگر دادهای روی حافظه کوتاهمدت کامپیوتر جا نشود راهکارهایی برای مواجه شدن با آن در R وجود دارد.
البته این تنها دلیل توانمندی R در پردازش و تحلیل دادههای بزرگ نیست. کتابخانههای زیادی در R هست که با زبانهای نزدیک به زبان ماشین مانند زبان C نوشته شدهاند و سرعت بالایی در پردازش داده دارند.
جامعۀ بزرگ و فعال
برای نصب R روی کامپیوتر یک فایلِ نسبتاً کوچک و کمحجم را دانلود میکنیم. این فایل حاوی هستۀ اصلی (R-base) و مجموعهای از برنامههای کامپیوتری در بستههای مستقل از یکدیگر است. به این بستهها اصطلاحاً کتابخانههای پایه base libraries میگویند. مثلا کتابخانه graphics عملیات ترسیم نمودار را انجام میدهد یا کتابخانه stats محاسبات و مدلسازیهای آماری را انجام میدهد. اما کتابخانههای R به هیچ وجه به همین موارد ختم نمیشود.
متنباز بودنِ آن سبب شده کتابخانههای بسیاری برای اهداف مختلف روی R توسعه داده شود. افزایش روزافزون تعداد این کتابخانهها در دو دهه گذشته پویایی اجتماع تحلیلگران و برنامهنویسان R را به خوبی نشان میدهد. در میان زبانهای خاصمنظوره (domain-specific)، R با چند میلیون کاربر در سراسر دنیا یکی از محبوبترین زبانهاست.
چنین رشدی در برنامههایی مانند Matlab که متنباز و رایگان نیستند مشاهده نمیشود.

R یا Python ؟!
پایتون و آر دو ابزار اصلی پردازش و تحلیل داده در دنیا هستند. هر دوی این ابزارها بسیار قدرتمند و پرکاربرد هستند و در بیشتر موارد هر یک به تنهایی میتوانند کار شما را در علوم داده راه بیندازند.
از کجا بدانیم سراغ کدام برویم؟
پایتون یک زبان برنامهنویسی همهمنظوره (general-purpose) است که امکانات پردازش و تحلیل داده در کتابخانههای زیادی به آن اضافه شده است. اما R از ابتدا برای پردازش و تحلیل داده یعنی به صورت خاصمنظوره (Domain Specific) به وجود آمده؛ اگرچه به مرور برخی قابلیتهای دیگر در قالب کتابخانههای جدید به آن افزوده شده است.
معمولاً کسانی که پیشزمینۀ کاری یا تحصیلیشان علوم یا مهندسی کامپیوتر است با پایتون بیشتر ارتباط برقرار میکنند و کسانی که زمینه کاری آنها آمار، علوم پایه، سایر شاخههای مهندسی، علوم انسانی و روزنامهنگاریِ داده (چیزی غیر از کامپیوتر) است با R بیشتر ارتباط برقرار میکنند و آن را سریعتر و راحتتر فرا میگیرند و به رشد و توسعه آن نیز کمک میکنند.
اگر با این سوال مواجه شدهاید که برای ورود به علوم داده کدام یک از این دو زبان را یاد بگیرید ممکن است توصیه بالا بتواند به شما کمک کند.
* * *
اهمیت R در تحلیلهای کمّی به اندازهای است که برَدلی اِفرون، استاد سرشناس آمار دانشگاه استنفورد، در کتاب استنتاج آماری در عصر کامپیوتر آن را یکی از تحولات کلیدی در توسعه روشهای آماری مبتنی بر پردازش کامپیوتری دانسته است (B. Efron; Computer Age Statistical Inference, Cambridge 2016, Page 6).
اگر به عنوان کارشناس یا تحلیلگر در یک کسب و کار یا سازمان مشغول به فعالیت هستید یا به عنوان پژوهشگر در دانشگاه و دیگر موسسات تحقیقاتی اشتغال دارید یا صرفاً به مطالعاتِ کمّی و علوم دقیقه علاقهمندید یادگیری R را از دست ندهید.
در درس بعد خواهید دید چگونه میتوانید R را به راحتی نصب کنید و کار با آن را شروع کنید.