Начал постепенное изучение программирования на языке 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”)