Знакомство с R основные моменты

Начал постепенное изучение программирования на языке R, хотел поделиться некоторыми полезными мыслями и функциями.

– В самом начале оптимально загрузить данные, есть множество различных способов – из текстовых фалов или с интернет страницы, но здесь мы пока рассмотрим лишь загрузку из Excell (.csv). Пример:  zadolgn_swop <- read.csv(‘zd1.csv’, sep=”;”)

При этом изначально необходимо понять где находится ваш рабочий каталог (где R и будет искать наш файл), для этого просто нажимаем getwd(), а если хотим поменять, то  setwd и путь где находится наша папка, например,(“E:/8/обработка данных”).

Для поиска данных существует также много бесплатных ресурсов, в частности пакет rusquant дает нам возможность скачивать котировки из Финама, МФД….

getSymbols(src=”../../Finam”,”VTBR”,from=’2007-07-23′,to=’2015-02-02′) – пример закачки данных из Финама

– первым делом после загрузки данных смотрим собственно какие они для этого есть такие функции как str(), glimpse()….

Также желательно всегда посмотреть первые и последние данные head()  и tail().

Очень часто впоследствии возникает определенная проблема с датами (они либо оказываются факторной переменной или числовой, но никак не в формате дат), тогда….

– as.Date (    …..factor=`%d.%m.%y’) может довольно часто быть необходима. При этом зачастую когда год длинный (2015, а не 15), то надо ставить Y  большое. as.factor тоже нужна будет

– colnames (x)->c (‘date’,’price’….) тоже очень полезная,  дает названия колонкам в определенном датафрэйме

и про ifelse точно забывать не стоит, она что-то наподобие функции если в Excell. Ifelse – условие ( Например, ifelse(a>0, ‘positive”,’negative’))

rbind и cbind – соединяют в 1 датафрэйм несколько страниц данных

rbind – нужно одинаковое количество столбцов (соединяет по строкам)

cbind – одинаковое количество строк (соединяет по столбцам)

aggregate –также полезная штука

– логарифмирование (log) оптимально делать когда видно что зависимость нелинейная  (например движение по некой экспоненте),  говоря просто логарифмирование – это действие обратное возведению в степень (т.е. логарифм числа … это показатель степени в которую надо возвести число … чтобы получить..)

qplot –  быстрый график, filter – отбирает например только значения где скажем только женщины, select – может выбрать конкретные колонки,

~.-пробует построить модель в зависимости от всех предикторов, вообще значок ~ отражает в языке R взаимосвязи

lm – собственно сама попытка предсказать

Одним из наиболее важных и полезных пакетов является ggplot2. Он может очень многое для визуализации данных. Здесь для начала главное помнить всего несколько ключевых моментов: внутри функции всегда нужно прописывать названия датафрейма, data=, далее необходимо прописывать функцию aes(х= , y= ,) , туда же можно добавлять расскраску или размерность в зависимости от других переменных. Например col=, size=. И  в самом конце мы обязательно прибавляем каким должен быть сам график: + geom_point(), geom_area(), geom_line ()……

Линию тренда можно легко добавить функцией geom_smooth(method=’lm’), без метода будут иногда линейны, а иногда возможно даже пораболические в зависимости от фактора. Поэтому надо смотреть/исследовать модели регрессионным методом добавляя те или иные факторы и рассматривая их на графике (далее можно их добавлять в модель случайный лес и генерировать уже полноценную работающую модель)

– простые показатели качества модели R^2 – правда немного страдает от увеличения количества предикторов, но эта проблема решена в adjusted R^2 (за усложнение идет небольшое наказание вычитание k)  также полезны AIC и BIC(штрафные критерии Акаики) – показывает ошибки… (чем меньше тем лучше)

– также стоит отметить что на изначально графике plot (х) мы наблюдаем примерно только сколько значений находится на тех или иных отметка

– p – вероятность, d – плотность

– mosaic из пакета vcd очень хорошо работает там где много качественных переменных

– + facet _ grid достаточна полезная функция и может добавить к текущему графику разделение еще на какие либо переменные по уровню плотности. Например facet _ grid  (~walk) или (metro~walk)

-sjp.lm – визуализирует модель (когда есть пересечения с 0, то коэффициент не значим)

– чтобы убрать логарифм надо взять экспоненту – exp ()

– predict () – для предсказания моделей

– для построения доверительного интервала добавить в predict  (interval = “confidence “), для какой то конкретной оптимально делать prediction  а не confidence

– mtable – можно посмотреть сразу несколько регрессий в одной таблице

– resettest – тест Рамсея ищет можно ли еще что-то включить модель (не пропустили ли мы что-то )

– cor () взять корреляцию возможно из всего набора данных, describe – описательные статистики

– scale = TRUE, – стандартизации переменных

– Метод главных компонент интересная штука – позволяет понять какими переменными можно фактически объяснить всю выборку

– for – применяется для написания циклов. Например она может пробегаться по нескольким файлам (или датафреймам) и собирать их в один массив

 

Есть обычная регрессия (lm() +иногда полезна функция cor) которые помогают определить взаимосвязи между объектами. Также здесь очень полезна будет функция  step(от большего к меньшему находит оптимальное количество значимых предикторов )

При этом есть логистическая регрессия (glm()), которая делает более интересные вещи – например определяет с какой вероятностью случится то или иное событие в зависимости от предикторов

 

Пакеты, которые практически всегда нужны:

library(“memisc”)

library(“lmtest”)

library(“ggplot2”)

library(“dplyr”)

library(“foreign”)

library(“vcd”)

library(“devtools”)

library(“hexbin”)

library(“pander”)

library(“sjPlot”)

library(“knitr”)

Loading Facebook Comments ...
Loading Disqus Comments ...