Основи програмування на R. Середовище статистичних обчислень R: досвід використання у викладанні Мова програмування r для початківців

Про курс
У цьому вся курсі ми розглянемо R насамперед як мову програмування, а чи не як інструмент застосування конкретних алгоритмів. У програмі представлені основні типи даних та універсальні семантичні правила, а також порушені деякі складні теми, пов'язані з типовими завданнями, що виникають під час обробки та аналізу даних.

Що потрібно для проходження
Власне, мова R (версії 3.2.0 чи новіше). Як середовище розробки у відеоуроках використовуватиметься RStudio. Втім, за бажанням можна працювати в будь-якій іншій IDE або улюбленому редакторі.

Сертифікат
Прохідний бал для отримання сертифіката 70 балів зі 100. Для сертифіката з відзнакою - 92 .

Who is this course for

Студенти та аспіранти, наукові співробітники, аналітики та дослідники, що працюють у галузі аналізу даних

Курс передбачає знання R або інших мов програмування. Проте наявність досвіду у обробці даних чи знання основних принципів програмування полегшить проходження уроків. Даний курс добре сумісний з курсом "Аналіз даних у R". Ці курси незалежні і можуть відбуватися в будь-якому порядку.

Статистичний аналіз є невід'ємною частиною наукового дослідження. Якісна обробка даних підвищує шанси опублікувати статтю у солідному журналі та вивести дослідження на міжнародний рівень. Існує багато програм, здатних забезпечити якісний аналіз, проте більшість із них платні, і найчастіше ліцензія коштує від кількох сотень доларів та вище. Але сьогодні ми поговоримо про статистичне середовище, за яке не треба платити, а його надійність і популярність конкурують із кращими комерційними статами. пакетами: ми познайомимося із R!

Що таке R?

Перш ніж дати чітке визначення, слід зазначити, що R - це більше, ніж просто програма: це і середовище, і мова, і навіть рух! Ми розглянемо R із різних ракурсів.

R - це середовище обчислень, розроблена вченими для обробки даних, математичного моделювання та роботи з графікою. R можна використовувати як простий калькулятор, можна проводити прості статистичні аналізи (наприклад, ANOVA або регресійний аналіз) і більш складні тривалі обчислення, перевіряти гіпотези, будувати векторні графіки і карти. Це далеко не повний перелік того, що можна робити у цьому середовищі. Варто відзначити, що вона розповсюджується безкоштовно і може бути встановлена ​​як на Windows, так і на операційні системи класу UNIX (Linux та MacOS X). Іншими словами, R - це вільний та кросплатформовий продукт.

R – це мова програмуваннязавдяки чому можна писати власні програми ( скрипти) за допомогою , а також використовувати та створювати спеціалізовані розширення ( пакети). Пакет - це набір файлів з довідковою інформацією та прикладами, зібраних разом в одному архіві. грають важливу роль, тому що вони використовуються як додаткові розширення на базі R. Кожен пакет, як правило, присвячений конкретній темі, наприклад: пакет "ggplot2" використовується для побудови красивих векторних графіків певного дизайну, а пакет "qtl" ідеально підходить для генетичного картування . Таких пакетів у бібліотеці R налічується на даний момент понад 7000! Усі вони перевірені щодо помилок і перебувають у відкритому доступі.


R - це спільнота/рух.
Так як R - це безкоштовний продукт з відкритим кодом, його розробкою, тестуванням і налагодженням займається не окрема компанія з найнятим персоналом, а самі користувачі. За два десятиліття з ядра розробників та ентузіастів сформувалося величезне співтовариство. За останніми даними, більше 2 млн людей так чи інакше допомагали розвивати та просувати R на добровільній основі, починаючи від перекладів документації, створення навчальних курсів та закінчуючи розробкою нових додатків для науки та промисловості. В інтернеті існує безліч форумів, на яких можна знайти відповіді на більшість питань, пов'язаних з R.

Як виглядає середовище R?

Існує багато "оболонок" для R, зовнішній вигляд та функціональність яких можуть сильно відрізнятися. Але ми коротко розглянемо лише три найбільш популярні варіанти: Rgui, Rstudio і R, запущений у терміналі Linux/UNIX у вигляді командного рядка.


Мова R у світі статистичних програм

На даний момент налічуються десятки якісних статистичних пакетів, серед яких явними лідерами є SPSS, SAS та MatLab. Однак, у 2013 році, незважаючи на високу конкуренцію, R став найвикористовуваним програмним продуктом для статистичного аналізу у наукових публікаціях (http://r4stats.com/articles/popularity/). Крім того, в останнє десятиліття R стає все більш затребуваним і в бізнес-секторі: такі компанії-гіганти, як Google, Facebook, Ford та New York Times активно використовують його для збирання, аналізу та візуалізації даних (http://www.revolutionanalytics) .com/companies-using-r). Для того щоб зрозуміти причини популярності мови R, звернемо увагу на її загальні риси і відмінності від інших статистичних продуктів.

Загалом більшість статистичних інструментів можна поділити на три типи:

  1. програми з графічним інтерфейсом, засновані на принципі "клікни тут, тут і отримай готовий результат";
  1. статистичні мови програмування, у роботі з якими необхідні базові навички програмування;
  1. "змішаний", у яких є і графічний інтерфейс ( GUI), та можливість створення скриптових програм (наприклад: SAS, STATA, Rcmdr).

Особливості програм з GUI

Програми з графічним інтерфейсом мають звичний для звичайного користувача вигляд та легкі у освоєнні. Але для вирішення нетривіальних завдань вони не підходять, оскільки мають обмежений набір стат. методів і них неможливо писати власні алгоритми. Змішаний тип поєднує зручність GUI оболонки і потужність мов програмування. Однак при детальному порівнянні статистичних можливостей з мовами програмування SAS і STATA програють і R, і MatLab (порівняння статистичних методів R, MatLab, STATA, SAS, SPSS). До того ж за ліцензію для цих програм доведеться викласти пристойну суму грошей, а єдиною безкоштовною альтернативою є Rcmdr: оболонка для R з GUI (Rcommander).

Порівняння R з мовами програмування MatLab, Python та Julia

Серед мов програмування, які у статистичних розрахунках, лідируючі позиції займають R і Matlab. Вони схожі між собою, як на вигляд, так і по функціональності; але мають різні лобі користувачів, що визначає їх специфіку. Історично MatLab був орієнтований на прикладні науки інженерних спеціальностей, тому його найсильнішими сторонами є мат. моделювання та розрахунки, до того ж він набагато швидше за R! Але оскільки R розроблявся як вузькопрофільна мова для статистичної обробки даних, багато експериментальних стат. методи з'являлися та закріплювалися саме в ньому. Цей факт і нульова вартість зробили R ідеальним майданчиком для розробки та використання нових пакетів, що застосовуються у фундаментальних науках.

Іншими "конкуруючими" мовами є Python та Julia. На мою думку, Python, будучи універсальною мовою програмування, більше підходить для обробки даних та збору інформації із застосуванням веб-технологій, ніж для статистичного аналізу та візуалізації (основні відмінності R від Python добре описані). А ось статистична мова Julia – досить молодий та претензійний проект. Основною особливістю цієї мови є швидкість обчислень, яка в деяких тестах перевищує R в 100 разів! Поки Julia знаходиться на ранній стадії розвитку і має мало додаткових пакетів та послідовників, але у віддаленій перспективі Julia – це, мабуть, єдиний потенційний конкурент R.

Висновок

Таким чином, в даний час мова R є одним із провідних статистичних інструментів у світі. Він активно застосовується в генетиці, молекулярній біології та біоінформатиці, науках про навколишнє середовище (екологія, метеорологія) та сільськогосподарських дисциплінах. Також R все більше використовується для обробки медичних даних, витісняючи з ринку такі комерційні пакети, як SAS і SPSS.

Переваги середовища R:

  • безкоштовна та кросплатформова;
  • багатий арсенал стат. методів;
  • якісна векторна графіка;
  • понад 7000 перевірених пакетів;
  • гнучка у використанні:
    - дозволяє створювати/редагувати скрипти та пакети,
    - взаємодіє з іншими мовами, такими: C, Java та Python,
    - може працювати з форматами даних для SAS, SPSS та STATA;
  • активне співтовариство користувачів та розробників;
  • регулярні оновлення, хороша документація та тех. підтримка.

Недоліки:

  • невеликий обсяг інформації російською мовою (хоча за останні п'ять років з'явилося кілька навчальних курсів та цікавих книг);
  • відносна складність у використанні користувача, незнайомого з мовами програмування. Частково це можна згладити працюючи в GUI оболонці Rcmdr, про яку я писав вище, але для нестандартних рішень все ж таки необхідно використовувати командний рядок.

Список корисних джерел

  1. Офіційний сайт: http://www.r-project.org/
  2. Сайт для початківців: http://www.statmethods.net/
  3. Один з найкращих довідників: The R Book, 2nd Edition by Michael J. Crawley, 2012
  4. Список доступної літератури російською + хороший блог

]. «Пролетар розумової праці». За освітою фізик. Працюю на ниві обробки медичної та біологічної інформації 30+ років.
У R працюю рівно 10 років, мігрувавши на нього після 15 років щільного співробітництва з Matlab. Першопричиною міграції на іншу робочу платформу стала моя власна фізична міграція на протилежний край Землі в Окланд, Нова Зеландія. Тут життя з перших днів штовхнуло мене в обійми R, про що мені ще не доводилося шкодувати.

Все частіше спостерігаю спалахи інтересу до R у професійному рунете. От і на цьому шановному ресурсі з'являються статті про нього. Далі під катом моя перша спроба російськомовного введення в R – перша (словесна) частина презентації, яку я робив для колег факультету Animal Science, Iova State University три роки тому.
(в сторону:а як, виявляється, важко себе перекладати...)


У цьому пості

  • Що таке R
  • Звідки він узявся
  • За що я його люблю
  • Міфи і справді

Що таке R

В першу чергу Rце система для статистичних та інших наукових розрахунків, що використовує мову програмування S .

S- мова, написана статистики для статистиків.за визначенням автора Джона Чамберса. Мова з моменту його появи була дуже добре прийнята і протестована поколіннями дуже прискіпливих користувачів-статистиків. Можна вважати, що він досить широко відомий та прийнятий у світовій статистичній спільноті. Мовою Sреалізовані і досі експлуатуються низка критичних епідеміологічних, екологічних та фінансових моделей по всьому світу та у багатьох галузях. Як мова з погляду мене, як «пишучого користувача», Sє дуже приємною альтернативою мові SAS .

З мого власного досвіду - Знайомство та перші уроки Sя сам отримав на початку 90-х від експертів-статистиків ВООЗ, з якими перетинався з наукових досліджень того часу.

За багатьма оцінками R (як на мене - так і не сильно перебільшених) - один із найуспішніших проектів опенсорсу, поширюється вільно з десятків дзеркал по всьому світу за стандартами ліцензій GNU.
Автори відповідають категоричною відмовою на всі пропозиції щодо комерціалізації проекту, хоча на сьогодні є підстави припускати, що кількість встановлених копій R у світі перевищує сукупну кількість копій всіхінших систем статистичного аналізу.

З самого початку і досі проект викликає у мене глибоку повагу (на межі із захопленням) стабільністю, підтримкою користувача, сумісністю кодів та ін., що я об'єднав би в понятті культура.
Втім, остання пропозиція, скоріше, для наступних підрозділів.

Звідки взявся Sі яке це стосується R

Безперечно, вікіпедія дасть вам багато більше літер.
Я лише зазначу, що вважаю важливим для розуміння місця S і R у цьому житті в цьому світі.

Лабораторії Белла (ака Bell Labs, AT&T Bell Labaratories) досить відомі в історії науки та техніки, і АйТі зокрема. Статистичні дослідження там завжди були дуже серйозно і також серйозно підтримувалися всіма доступними комп'ютерними засобами (читай - тоннами фортрановского і лисповского коду).

Те, що потім стало мовою S, виникло в 70-х з ініціативи та під керівництвом Джона Чамберса (John Chambers), як набір скриптів, що полегшують «годування» даних фортранівського коду. Тобто. на чільне місце ставилося завдання інтерактивної маніпуляції даними, компактність, приємність у написанні і читаність коду і отримання пристойного виведення на різноманітні пристрої таблиць і графіків.

У синтаксисі мови передбачено побудову практично скільки завгодно складних структур даних, засоби для опису специфічних статистичних завдань та об'єктів - стат. тестів, моделей та ін.

З 1984 року мова знайшла ім'я, свою власну «Біблію» (видана книга Чамберса and Beckers: S: An Interactive Environment for Data Analysis and Graphics), став за умовчанням утримувати практично повний «джентельменський набір» статистика та «імовірностника» - розподіли, генератори випадкових чисел, статистичні тести, багато стандартних статистичних аналізів, роботи з матрицями та ін., не кажучи вже про розвинену систему наукової графіки. Найголовніше - він став доступний для користувачів по всьому світу за дуже помірну ціну.

У 1988 (видана ще одна книга The New S Langugage) - модифікований із застосуванням ООП, все стало об'єктами з досить розумними значеннями за умовчанням, доступністю для модифікації, елементами самодукоментування та ін.

У цей же час були лабораторіями опубліковані вихідники та «белл-лабовський» Sстав безкоштовним для студентів та для використання в наукових цілях. Це все було пов'язано з «розкулачуванням» AT&T, але мене вже ці подробиці не дуже цікавили.

Існували і, напевно, все ще існують комерційні реалізація мови S. Я стикався з S-Plusі S2000. Вони в різний час підтримувалися різними компаніями, переважно жили (живуть?) за рахунок підтримки раніше створених на Sдодатків. У цих пост-белівських версіях Sз'явилася нова версія ООП-движка, але для чистого користувача це пройшло майже безкровно щодо сумісності історичного коду.

R- єдина некомерційна повністю незалежна (від вихідної Белловської) реалізація мови S.

І за рідкісною в наш час угодою якимось неймовірним для мене способом розробники поточних версій комерційного Sта некомерційного Rпідтримують їх практично повну сумісність та наступність.

А тепер R

За будь-яким значним явищем у цьому житті стоїть якась харизматична особистість. Втім, це може статися і є визначенням значущості явища.

У випадку R таких людей троє.
Про Джона Чамберса вже сказав.

Росс Іхака (Ross Ihaka) – студент, а потім науковий співробітник факультету статистики Оклендського університету темою своєї дисертації (яка виконувалася в MIT, USA) вибрав дослідження можливості побудови віртуальної машини (VM) для статистичних мов програмування. Як проміжна мова була обрана Lisp (Common Lisp, CL) і на ньому реалізований прототип VM, що «розуміє» невеликі підмножини з SASі S.
Доопрацьовувати дисертацію Росс повернувся до Окланду, де незабаром зустрів Роберта Джентельменва і захопився проектом R.
Дисертацію Росс так і не захистив, але вже має вчений ступінь від кількох університетів «за сукупністю заслуг». Минулого року йому було присвоєно звання, і він отримав посаду Associate Professor (доцент) у своєму рідному університеті.

Роберт Джентелмен (Robert Gentleman) - ще один статистик із пристрастю до програмування, родом з Канади, будучи в Оклендському університеті на стажуванні (він тоді працював в Австралії), запропонував Россу «написати якийсь язичок».
Згідно з легендою, яку я сам чув від цих «батьків-засновників» лише за місяць вони в пориві шаленого ентузіазму переписали на CLпрактично всі команди Sвключаючи потужну бібліотеку лінійного моделювання.

Обчислювальним двигуном R, слідуючи традиціям прототипу, була обрана відома, загальновизнана та безкоштовна бібліотека BLAS (з можливістю використання ATLAS тощо з тим же інтерфейсом).
Пол Murrel, один з найближчих друзів Росса і також співробітник Окландського універу розстарався і написав (здається, на С) з нуля графічний двигун, що повністю відтворює функціональність такого в S.

В результаті вийшов безкоштовний повнофункціональний пакетик, який моментально отримав місце в навчальному процесі Окланлського університету, що повністю відповідає описам у дуже докладних і якісних книгах Чамберса, які за традицією видавалися в м'яких обкладинках та середньої якості друку, зате були дешеві та доступні.
Декілька груп-активістів GNU-шного (наприклад GIS) руху прийняли R як платформу для наукових обчислень.

Але воістину найширшу популярність Rпридбав у біоінформатиці, коли один із «батьків» Роберт Джентельмен, залучений на той час у роботи фірми Affimmetrix, продублював всю функціональність комерційного софту фірми і запустив (ну не один, звичайно) опенсорсний проект Bioconductor. В даний час Bioconductorє безумовним лідером біоінформатичного опенсорсу для всіх "оміксів" (genomics, proteomics, metabolomics etc.).

Єдиною мовою інтерфейсу для цього буйства біоінформатичних фантазій став, звичайно, R.

Коло замкнулося, коли Чамберс, що вийшов на пенсію, творець мови S, увійшов на права повноправного члена до групи активних розробників R.

За що я його люблю (список)

  1. Інтерактивність, "Програмування з даними" - мій улюблений стиль роботи
  2. Витончена (на любителя) мова - люблю списки, data frames, функціональне програмування та лямбда-функції (а-la)ю Свобода самовираження: одне й те саме завдання можна вирішити десятьма способами (пом'якшує відчуття рутини)
  3. «Тверезо дивиться на цей світ» - рідко «падає» або кого-нитка «підвішує», логічні операції з пропущеними даними, обробка помилок під час виконання (try-error), легкий обмін із системою на рівні стандартного I/O та ін.
  4. Повний набір готових до вживання статистичних процедур
  5. Добре документований і добре супроводжується – сумісність, наступність тощо.
  6. Зібрав навколо себе приємну професійну спільноту (форуми, конференції користувачів та ін.)
  7. Добре документований інтерфейс для зовнішніх бібліотек і функцій на чому завгодно - Фортран, С, Java. Звідси море добре документованих бібліотек з усіх аспектів статистики та обробки даних практично у всіх сферах науки, але з основним упором на біоінформатику/біостатистику; все регулярно і коректно оновлюється, якщо є авторська воля
  8. Відсутність обов'язкового GUI в "базовій комплектації" - Ну не "мишачий" я людина!
Поза списком: Мені просто приємно, що мій основний робочий інструмент має душу.
Що я насправді й намагаюся показати у своїй статті.

Навіщо і як я його використовую (приклади)

Почав писати до цього розділу, але зупинився.
Інакше я б ніколи не закінчив.
Ой, напевно, якось потім.

Міфи і справді

R повільний
R - "тонкий", для обчислень використовує blas/lapack/atlas бібліотеки, спробуйте написати що-небудь швидше цих старих добрих фортранівських (часто) "робочих конячок". Всі критичні функції, як правило, використовують векторні операції та реалізовані на З.
R нераціонально використовує обчислювальні ресурси, зокрема пам'ять
Так, розробники визнають такий злочин. Але робочий час фахівця зараз всяко дорожчий за «залізо». Вивантажте з сучасного робочого комп'ютера іграшки і з більшістю справжніх наборів даних у вас з проблем не буде.
Безкоштовний софт не може бути надійним
Може: Fortran, Linux, C, Lisp, Java etc.
Замість Епілога
Як сказано вище, пост нижче є фактично перекладом моєї презентації для досить специфічної цільової аудиторії, і я коротко опишу цю аудиторію.

Багатьом «чистим» АйТі з такими людьми доведеться зустрітися, оскільки виробництво продуктів харчування із залучення капіталу та генерації прибутків уже давно змагається з нафтою та іншими енергоносіями. А ємність біоінформатичного ринку при медицині та фармакології обмежена, як не крути.

Отже, моя аудиторія – люди, з базовою освітою в генетиці та селекції, ветеринарії, рідше – біології (переважно – молекулярної). Дядьки і тітки (останніх більше), років по 20-30... програмуючі (!) на FORTRANEабо VB, що хвацько управляються з excel-таблицями в 100к рядків/стовпців і періодично «роняють» своїми завданнями (і своїм програмуванням) свій обчислювальний лінуксовий 500+ядерний кластер 12Тб загальної пам'яті і іноді вимагають розширення дискової пам'яті черговим десятком терабайт.

Методична основа - гримуча суміш древніх як світ дисперсійних аналізів зі змішаними моделями, розв'язуваними не інакше, як тільки методом максимальної правдоподібності, що «плавлять мозок» байєсовські мережі тощо.

Дані - таблиці даних від одиниць до десятків тисяч рядків, що включають іноді 1-5 колонок з фенотипами, але все частіше - десятки або сотні "Ка" стовпців змінних, що слабо корелюють між собою і з фенотипами.

Так, ще у них є «хороша традиція» розглядати все в аспекті родинних зв'язків (генетика, як-не-як). Споріднені зв'язки традиційно представлені у вигляді матриці «споріднених зв'язків» (pedigree) розмірами, наприклад 40 000 х 40 000 (це якщо 40 000 тварин). Ну або (поки, на щастя, тільки в проекті) 20 000 000 х 20 000 000 – це щоб «охопити» єдиною моделлю всі 20 млн. історичних тварин, що є в базі даних ( DB2, якщо комусь цікаво, і навіть Сobol ще «випилили» не звідусіль...)

За столами, заваленими літературою (одночасно) Fortran, Java, C#, Scal, Octavia, Linux for Dummiesможна дізнатися про недавніх випускників-біоінформатиків. Але якось швидко багато хто з них іде з науки в «кодери».

Втім, знаю і випадок зворотного руху. Так що R ще багатьом знадобиться.

]. «Пролетар розумової праці». За освітою фізик. Працюю на ниві обробки медичної та біологічної інформації 30+ років.
У R працюю рівно 10 років, мігрувавши на нього після 15 років щільного співробітництва з Matlab. Першопричиною міграції на іншу робочу платформу стала моя власна фізична міграція на протилежний край Землі в Окланд, Нова Зеландія. Тут життя з перших днів штовхнуло мене в обійми R, про що мені ще не доводилося шкодувати.

Все частіше спостерігаю спалахи інтересу до R у професійному рунете. От і на цьому шановному ресурсі з'являються статті про нього. Далі під катом моя перша спроба російськомовного введення в R – перша (словесна) частина презентації, яку я робив для колег факультету Animal Science, Iova State University три роки тому.
(в сторону:а як, виявляється, важко себе перекладати...)


У цьому пості

  • Що таке R
  • Звідки він узявся
  • За що я його люблю
  • Міфи і справді

Що таке R

В першу чергу Rце система для статистичних та інших наукових розрахунків, що використовує мову програмування S .

S- мова, написана статистики для статистиків.за визначенням автора Джона Чамберса. Мова з моменту його появи була дуже добре прийнята і протестована поколіннями дуже прискіпливих користувачів-статистиків. Можна вважати, що він досить широко відомий та прийнятий у світовій статистичній спільноті. Мовою Sреалізовані і досі експлуатуються низка критичних епідеміологічних, екологічних та фінансових моделей по всьому світу та у багатьох галузях. Як мова з погляду мене, як «пишучого користувача», Sє дуже приємною альтернативою мові SAS .

З мого власного досвіду - Знайомство та перші уроки Sя сам отримав на початку 90-х від експертів-статистиків ВООЗ, з якими перетинався з наукових досліджень того часу.

За багатьма оцінками R (як на мене - так і не сильно перебільшених) - один із найуспішніших проектів опенсорсу, поширюється вільно з десятків дзеркал по всьому світу за стандартами ліцензій GNU.
Автори відповідають категоричною відмовою на всі пропозиції щодо комерціалізації проекту, хоча на сьогодні є підстави припускати, що кількість встановлених копій R у світі перевищує сукупну кількість копій всіхінших систем статистичного аналізу.

З самого початку і досі проект викликає у мене глибоку повагу (на межі із захопленням) стабільністю, підтримкою користувача, сумісністю кодів та ін., що я об'єднав би в понятті культура.
Втім, остання пропозиція, скоріше, для наступних підрозділів.

Звідки взявся Sі яке це стосується R

Безперечно, вікіпедія дасть вам багато більше літер.
Я лише зазначу, що вважаю важливим для розуміння місця S і R у цьому житті в цьому світі.

Лабораторії Белла (ака Bell Labs, AT&T Bell Labaratories) досить відомі в історії науки та техніки, і АйТі зокрема. Статистичні дослідження там завжди були дуже серйозно і також серйозно підтримувалися всіма доступними комп'ютерними засобами (читай - тоннами фортрановского і лисповского коду).

Те, що потім стало мовою S, виникло в 70-х з ініціативи та під керівництвом Джона Чамберса (John Chambers), як набір скриптів, що полегшують «годування» даних фортранівського коду. Тобто. на чільне місце ставилося завдання інтерактивної маніпуляції даними, компактність, приємність у написанні і читаність коду і отримання пристойного виведення на різноманітні пристрої таблиць і графіків.

У синтаксисі мови передбачено побудову практично скільки завгодно складних структур даних, засоби для опису специфічних статистичних завдань та об'єктів - стат. тестів, моделей та ін.

З 1984 року мова знайшла ім'я, свою власну «Біблію» (видана книга Чамберса and Beckers: S: An Interactive Environment for Data Analysis and Graphics), став за умовчанням утримувати практично повний «джентельменський набір» статистика та «імовірностника» - розподіли, генератори випадкових чисел, статистичні тести, багато стандартних статистичних аналізів, роботи з матрицями та ін., не кажучи вже про розвинену систему наукової графіки. Найголовніше - він став доступний для користувачів по всьому світу за дуже помірну ціну.

У 1988 (видана ще одна книга The New S Langugage) - модифікований із застосуванням ООП, все стало об'єктами з досить розумними значеннями за умовчанням, доступністю для модифікації, елементами самодукоментування та ін.

У цей же час були лабораторіями опубліковані вихідники та «белл-лабовський» Sстав безкоштовним для студентів та для використання в наукових цілях. Це все було пов'язано з «розкулачуванням» AT&T, але мене вже ці подробиці не дуже цікавили.

Існували і, напевно, все ще існують комерційні реалізація мови S. Я стикався з S-Plusі S2000. Вони в різний час підтримувалися різними компаніями, переважно жили (живуть?) за рахунок підтримки раніше створених на Sдодатків. У цих пост-белівських версіях Sз'явилася нова версія ООП-движка, але для чистого користувача це пройшло майже безкровно щодо сумісності історичного коду.

R- єдина некомерційна повністю незалежна (від вихідної Белловської) реалізація мови S.

І за рідкісною в наш час угодою якимось неймовірним для мене способом розробники поточних версій комерційного Sта некомерційного Rпідтримують їх практично повну сумісність та наступність.

А тепер R

За будь-яким значним явищем у цьому житті стоїть якась харизматична особистість. Втім, це може статися і є визначенням значущості явища.

У випадку R таких людей троє.
Про Джона Чамберса вже сказав.

Росс Іхака (Ross Ihaka) – студент, а потім науковий співробітник факультету статистики Оклендського університету темою своєї дисертації (яка виконувалася в MIT, USA) вибрав дослідження можливості побудови віртуальної машини (VM) для статистичних мов програмування. Як проміжна мова була обрана Lisp (Common Lisp, CL) і на ньому реалізований прототип VM, що «розуміє» невеликі підмножини з SASі S.
Доопрацьовувати дисертацію Росс повернувся до Окланду, де незабаром зустрів Роберта Джентельменва і захопився проектом R.
Дисертацію Росс так і не захистив, але вже має вчений ступінь від кількох університетів «за сукупністю заслуг». Минулого року йому було присвоєно звання, і він отримав посаду Associate Professor (доцент) у своєму рідному університеті.

Роберт Джентелмен (Robert Gentleman) - ще один статистик із пристрастю до програмування, родом з Канади, будучи в Оклендському університеті на стажуванні (він тоді працював в Австралії), запропонував Россу «написати якийсь язичок».
Згідно з легендою, яку я сам чув від цих «батьків-засновників» лише за місяць вони в пориві шаленого ентузіазму переписали на CLпрактично всі команди Sвключаючи потужну бібліотеку лінійного моделювання.

Обчислювальним двигуном R, слідуючи традиціям прототипу, була обрана відома, загальновизнана та безкоштовна бібліотека BLAS (з можливістю використання ATLAS тощо з тим же інтерфейсом).
Пол Murrel, один з найближчих друзів Росса і також співробітник Окландського універу розстарався і написав (здається, на С) з нуля графічний двигун, що повністю відтворює функціональність такого в S.

В результаті вийшов безкоштовний повнофункціональний пакетик, який моментально отримав місце в навчальному процесі Окланлського університету, що повністю відповідає описам у дуже докладних і якісних книгах Чамберса, які за традицією видавалися в м'яких обкладинках та середньої якості друку, зате були дешеві та доступні.
Декілька груп-активістів GNU-шного (наприклад GIS) руху прийняли R як платформу для наукових обчислень.

Але воістину найширшу популярність Rпридбав у біоінформатиці, коли один із «батьків» Роберт Джентельмен, залучений на той час у роботи фірми Affimmetrix, продублював всю функціональність комерційного софту фірми і запустив (ну не один, звичайно) опенсорсний проект Bioconductor. В даний час Bioconductorє безумовним лідером біоінформатичного опенсорсу для всіх "оміксів" (genomics, proteomics, metabolomics etc.).

Єдиною мовою інтерфейсу для цього буйства біоінформатичних фантазій став, звичайно, R.

Коло замкнулося, коли Чамберс, що вийшов на пенсію, творець мови S, увійшов на права повноправного члена до групи активних розробників R.

За що я його люблю (список)

  1. Інтерактивність, "Програмування з даними" - мій улюблений стиль роботи
  2. Витончена (на любителя) мова - люблю списки, data frames, функціональне програмування та лямбда-функції (а-la)ю Свобода самовираження: одне й те саме завдання можна вирішити десятьма способами (пом'якшує відчуття рутини)
  3. «Тверезо дивиться на цей світ» - рідко «падає» або кого-нитка «підвішує», логічні операції з пропущеними даними, обробка помилок під час виконання (try-error), легкий обмін із системою на рівні стандартного I/O та ін.
  4. Повний набір готових до вживання статистичних процедур
  5. Добре документований і добре супроводжується – сумісність, наступність тощо.
  6. Зібрав навколо себе приємну професійну спільноту (форуми, конференції користувачів та ін.)
  7. Добре документований інтерфейс для зовнішніх бібліотек і функцій на чому завгодно - Фортран, С, Java. Звідси море добре документованих бібліотек з усіх аспектів статистики та обробки даних практично у всіх сферах науки, але з основним упором на біоінформатику/біостатистику; все регулярно і коректно оновлюється, якщо є авторська воля
  8. Відсутність обов'язкового GUI в "базовій комплектації" - Ну не "мишачий" я людина!
Поза списком: Мені просто приємно, що мій основний робочий інструмент має душу.
Що я насправді й намагаюся показати у своїй статті.

Навіщо і як я його використовую (приклади)

Почав писати до цього розділу, але зупинився.
Інакше я б ніколи не закінчив.
Ой, напевно, якось потім.

Міфи і справді

R повільний
R - "тонкий", для обчислень використовує blas/lapack/atlas бібліотеки, спробуйте написати що-небудь швидше цих старих добрих фортранівських (часто) "робочих конячок". Всі критичні функції, як правило, використовують векторні операції та реалізовані на З.
R нераціонально використовує обчислювальні ресурси, зокрема пам'ять
Так, розробники визнають такий злочин. Але робочий час фахівця зараз всяко дорожчий за «залізо». Вивантажте з сучасного робочого комп'ютера іграшки і з більшістю справжніх наборів даних у вас з проблем не буде.
Безкоштовний софт не може бути надійним
Може: Fortran, Linux, C, Lisp, Java etc.
Замість Епілога
Як сказано вище, пост нижче є фактично перекладом моєї презентації для досить специфічної цільової аудиторії, і я коротко опишу цю аудиторію.

Багатьом «чистим» АйТі з такими людьми доведеться зустрітися, оскільки виробництво продуктів харчування із залучення капіталу та генерації прибутків уже давно змагається з нафтою та іншими енергоносіями. А ємність біоінформатичного ринку при медицині та фармакології обмежена, як не крути.

Отже, моя аудиторія – люди, з базовою освітою в генетиці та селекції, ветеринарії, рідше – біології (переважно – молекулярної). Дядьки і тітки (останніх більше), років по 20-30... програмуючі (!) на FORTRANEабо VB, що хвацько управляються з excel-таблицями в 100к рядків/стовпців і періодично «роняють» своїми завданнями (і своїм програмуванням) свій обчислювальний лінуксовий 500+ядерний кластер 12Тб загальної пам'яті і іноді вимагають розширення дискової пам'яті черговим десятком терабайт.

Методична основа - гримуча суміш древніх як світ дисперсійних аналізів зі змішаними моделями, розв'язуваними не інакше, як тільки методом максимальної правдоподібності, що «плавлять мозок» байєсовські мережі тощо.

Дані - таблиці даних від одиниць до десятків тисяч рядків, що включають іноді 1-5 колонок з фенотипами, але все частіше - десятки або сотні "Ка" стовпців змінних, що слабо корелюють між собою і з фенотипами.

Так, ще у них є «хороша традиція» розглядати все в аспекті родинних зв'язків (генетика, як-не-як). Споріднені зв'язки традиційно представлені у вигляді матриці «споріднених зв'язків» (pedigree) розмірами, наприклад 40 000 х 40 000 (це якщо 40 000 тварин). Ну або (поки, на щастя, тільки в проекті) 20 000 000 х 20 000 000 – це щоб «охопити» єдиною моделлю всі 20 млн. історичних тварин, що є в базі даних ( DB2, якщо комусь цікаво, і навіть Сobol ще «випилили» не звідусіль...)

За столами, заваленими літературою (одночасно) Fortran, Java, C#, Scal, Octavia, Linux for Dummiesможна дізнатися про недавніх випускників-біоінформатиків. Але якось швидко багато хто з них іде з науки в «кодери».

Втім, знаю і випадок зворотного руху. Так що R ще багатьом знадобиться.

Давайте трохи поговоримо про мову програмування під назвою R. Останнім часом ви могли у нас у блогах прочитати статті про та , ті сфери, де просто необхідно під рукою мати потужну мову для роботи зі статистикою та графіками. І R якраз із таких. Новачку у світі програмування буде досить непросто в це повірити, але сьогодні R вже популярніший за SQL, він активно використовується в комерційних організаціях, дослідницьких та університетах.

Не вникаючи у правила, синтаксис та конкретні області застосування, просто давайте розглянемо основні книги та ресурси, які допоможуть вам з нуля вивчити R.

Що таке мова R, навіщо вона вам потрібна і як її можна використовувати з розумом, можна дізнатися з прекрасного Руслана Купцова, який він провів трохи менше року тому в рамках GeekWeek-2015.

Книжки

Тепер, коли в голові є певний порядок, можна приступати до читання літератури, благо її більш ніж достатньо. Почнемо з вітчизняних авторів:


Інтернет ресурси

Будь-яка людина, яка бажає вивчити будь-яку мову програмування, обов'язково повинна відвідати в пошуках знань два ресурси: офіційний сайт його розробників і найбільша онлайн спільнота. Що ж. не будемо робити виняток і для R:

Але знову перейнявшись турботою до тих, хто англійську мову вивчити ще не встиг, а ось вивчити R ну дуже хоче, згадаємо кілька російських ресурсів:

А поки що довершимо картину невеликим списком англомовних, але від цього не менш пізнавальних сайтів:

CRAN - власне, місце де можна завантажити до себе на комп'ютер середу розробки R. Крім того, мануали, приклади та інше корисне чтиво;

Quick-R - коротко і відомо про статистику, способи її обробки та мову R;

Burns-Stat - для R і для попередника його S з безліччю прикладів;

R for Data Science – ще одна книга від Гаррета Гроулмунда (Garrett Grolemund), переведена у формат онлайн підручника;

Awesome R - добірка найкращого коду з офіційного сайту, розміщена на нашому улюбленому GitHub;

Mran – мова R від Microsoft;

Tutorial R – ще один ресурс із впорядкованою інформацією з офіційного сайту.



Схожі публікації