Dmitryy
Dmitryy личный блог
25 апреля 2019, 22:09

Подбрасываем монетку с помощью языка R

Данное руководство, прежде всего рассчитано для начинающих или тех, кто и слухом не слышал о таком прекрасном языке как R. Из-за своих математических особенностей, этот язык очень удобен для моделирования и анализа различных данных, в частности поведение активов.


На СЛ я часто замечаю, как умные и опытные люди моделируют или вычисляют всё в экселе. Это тоже отличный инструмент, но я думаю им стоит обратить внимание на язык R и попробовать, ничего сложного, как оказалось, там нет. Конечно какие-то базовые навыки программирования всё же потребуются.


Далее я напишу, как бесплатно и легально настроить свой компьютер для запуска среды. Потом приведу пример с подбрасыванием монетки 
(прошу прощения, если такая тема уже была, сделал поиск по сайту, из последних ничего не нашел).

Настройка среды для запуска R

Сразу хочу сказать, что ничего сложного в настройке нет. Нужно скачать пару файлов и последовательно их установить. Никаких особых настроек и сложных выборов, качаем и ставим, всё заработает.


Сначала вам необходимо поставить само ядро для языка R, его можно взять здесь cran.r-project.org/Там есть версии для всех популярных ОС, но я полагаю здесь большинство использует Windows, тогда переходим на cran.r-project.org/bin/windows/base/ и кликаем по «Download R 3.5.3 for Windows» (79Мб). Далее устанавливаем этот файл.


Затем нам нужно скачать саму среду разработки на языке R. Их большое множество, платных и бесплатных. Будем использовать самую популярную и бесплатную версию, идём сюда www.rstudio.com/products/rstudio/download/ и под самой левой опцией FREE, жмем зеленую кнопку Download (около 150Мб). После скачивания, устанавливаем и можно запускать.

Простой пример работы в RStudio

После того как вы открыли R студию, вы увидите открытую консоль слева. Давайте попробуем что-нибудь написать здесь, чтобы подогреть ваш интерес. Введите в консоль rnorm(10) — вы увидите 10 цифр сгенерированных по нормальному распределению. Введите hist(rnorm(100)) — вы увидите гистограмму для 100 цифр сгенерированных по нормальному распределению. Не правда ли удобно? Всего пара команд, одна строка, а у вас уже сгенерированные данные и график. Другие языки для этого требуют гораздо больше времени и умений.
Подбрасываем монетку с помощью языка R


Пример с подбрасыванием монетки

Теперь давайте попробуем подбросить монетку. Скажем мы хотим подбросить монетку N раз, в случае орла мы умножаем результат на 1.01, в случае решки на 0.99. И построим график. Для этого создадим небольшой скрипт. Можно конечно сделать это и в консоли, но для общего развития сделаем скрипт. Выберем File -> New File -> R Script.


В окно скрипта, запишем следующий скрипт (можно скопировать и вставить):

x <- 100         # начальное значение
n <- 100         # количество подбрасываний
a <- array(n)   # пустой массив для результата

# lognormal
toss <- function(x)
   ifelse(rnorm(1, 0) > 0, x * 1.01, x * 0.99)  # если сл. число > 0 то умножаем на 1.01, иначе на 0.99

for (i in 1:n) {   # цикл от 1 до n
  x <- toss(x)    # подбрасываем и записываем результат в x
  a[i] <- x         # записываем x в массив результатов
}

plot(a, type = «l»)   # строим график результата

(если плохо копируется, код также есть на гитхабе https://github.com/dmitryy/finance/blob/master/RScripts/1.%20toss%20the%20coin.r)

Нажмем на кнопку с зеленой стрелочкой Source, это позволяет запустить весь файл. Увидим нечто подобное на графике:
Подбрасываем монетку с помощью языка R


Каждый раз нажимая на кнопку, график будет меняться. Таким образом мы написали небольшую простенькую модель поведения актива, используя до селе нам не известный язык R. Далее попробую написать что-то более сложное и описать, если кому-то будет интересно.


Более подробная документация на русском языке по R tsamsonov.github.io/r-geo-course/ 

Также буду благодарен, если подскажите другие источники для обучения, т.к. я сам только начинаю его осваивать.
20 Комментариев
  • Дмитрий Ш
    25 апреля 2019, 22:23
    Тьфу, блин… Я монетку при помощи языка подбрасываю до небес
    А тут ещё R какоета
  • _sg_
    25 апреля 2019, 22:34
    Поскольку на этом сайте обитает много любителей С Диез,
    то можно добавить сюда еще и ссылку на R for .NET

    https://archive.codeplex.com/?p=rdotnet
  • AlexeyTikhonov
    25 апреля 2019, 23:19
    Достоинство R в том, что все вышеизложенное можно написать просто в одну строчку так;)
    plot(100*cumprod(1+sign(rnorm(100))/100), type = «l»)   
  • Value
    25 апреля 2019, 23:41
    Почему R а не Python?

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн