SlideShare uma empresa Scribd logo
1 de 37
Основы R
Базовые команды и операции
Финансовая эконометрика
Содержание
•   операции с числами и векторами
•   массивы и матрицы
•   циклы и условия
•   функции и графики
•   статистический анализ
•   загрузка пакетов и данных
Операции с числами и векторами
Присвоение значений
# создание скалярной переменной
x <- 5
x
[1] 5

# создание векторной переменной
x <- c(1,2,3)
[1] 1 2 3
x <- 1:5
[1] 1 2 3 4 5

# повторение числа (вектора) несколько раз
y <- rep(0,times=2)
[1] 0 0
y <- rep(x,times=2)
[1] 1 2 3 4 5 1 2 3 4 5
Векторная арифметика
# операции с векторами выполняются покомпонентно
# вектора меньшей длины повторяются несколько раз
# размеры векторов должны быть кратными
x +   1
[1]   2 3 4 5 6
x +   c(1:3,4,4)
[1]   2 4 6 8 9

# допустимые операции: +, -, *, /, ^
# арифметические функции:
# log(), exp(), sqrt(), sin(), cos(), tan(), min(), max(), abs(), …
# константа «пи»
pi
[1] 3.141593
Статистические функции
# диапазон значений: range(x) == c(min(x),max(x))
range(x)
[1] 1 5
# длина вектора
length(x)
[1] 5
# сумма и произведение элементов
sum(x)
[1] 15
prod(x)
[1] 120
# среднее и дисперсия
mean(x)
[1] 3
var(x)
[1] 2.5
Сортировка значений и последовательности
  # сортировка
  y <- c(10,-3,6,0)
  sort(y,decreasing=FALSE)
  [1] -3 0 6 10
  sort(y,decreasing=TRUE)
  [1] 10 6 0 -3

  # последовательность с заданным шагом
  seq(0,1,by=0.2)
  [1] 0 0.2 0.4 0.6 0.8 1
  # последовательность заданной длины
  seq(0,9,length=4)
  [1] 0 3 6 9
Логические векторы
# операции сравнения: <, >, <=, >=, ==, !=
y <- x > 3
[1] FALSE FALSE FALSE TRUE TRUE
# логические операторы: &, |, !
y <- ( (x>=3) & (x<=4) )
[1] FALSE FALSE TRUE TRUE FALSE
y <- ( (x<3) | (x>4) )
[1] TRUE TRUE FALSE FALSE TRUE
!y
[1] FALSE FALSE TRUE TRUE FALSE

# в арифметических операциях TRUE == 1, FALSE == 0
sum(x>3)
[1] 2
Обращение к элементам вектора
# с помощью логического вектора
x[y]
[1] 1 2 5
# с помощью набора положительных чисел
x[1:3]
[1] 1 2 3
# с помощью набора отрицательных чисел,
# убирая указанные элементы
x[-(1:3)]
[1] 4 5

# с помощью названий элементов
names(x) <- c("mon","tue","wed","thu","fri")
x[c("mon","thu")]
mon thu
  1   4
Массивы и матрицы
Создание массива
# изменение размерности вектора
z <- 1:1500
dim(z) <- c(3,5,100)
# в результате z — матрица 3 на 5 на 100
# произведение размерностей равно длине вектора
# порядок значений: z[1,1,1], z[2,1,1+, …, z*2,5,100], z[3,5,100]
# с помощью функций matrix() и array()
z <- matrix(1:20,nrow=5,ncol=4)
z <- array(1:20,dim=c(5,4))
      [,1] [,2] [,3] [,4]
[1,]    1    6   11   16
[2,]    2    7   12   17
[3,]    3    8   13   18
[4,]    4    9   14   19
[5,]    5   10   15   20
Обращение к элементам матрицы
z <- array(1:20,dim=c(5,4))
      [,1] [,2] [,3] [,4]
[1,]    1    6   11   16
[2,]    2    7   12   17
[3,]    3    8   13   18
[4,]    4    9   14   19
[5,]    5   10   15   20

z[,1]
[1] 1 2 3 4 5
z[1,]
[1] 1 6 11 16
z[1:2,1:2]
      [,1] [,2]
[1,]    1     6
[2,]    2     7
Действия с матрицами
# транспонирование
tz <- t(z)

# обращение
inv.z <- solve(z)

# умножение
z.tz <- z %*% tz

# создание диагональной матрицы
y <- diag(1:5)

# собственные значения и вектора
e <- eigen(y)
e$vectors; e$values

# квадратный корень из матрицы
y.sqrt <- e$vectors %*% diag(sqrt(e$values)) %*% t(e$vectors)
Циклы и условия
Циклы и условия

# цикл с предусловием    # оператор условия
y <- numeric(); i <- 1   if (y[1] == 1) {
while (i <= 5) {           y <- y + 5
  y[i] <- i^2            }
  i <- i + 1             [1] 5 9 14 21 30
}
[1] 1 4 9 16 25

# цикл «от–до»
y <- numeric()
for (i in 1:5) {
  y[i] <- i^2
}
[1] 1 4 9 16 25
Пользовательские функции и
    рисование графиков
Пользовательские функции
•
Двумерные графики
g <- function(x,c=1) c*abs(x)^0.5
x <- seq(-5,5,length=101)

# команда «plot» рисует новый график
plot(x,g(x),type="l",lty="solid",xlim=c(-5,5),ylim=c(0,2.5),
main="График",xlab="Аргумент",ylab="Функция")
• type — вид графика: "l" — линии, "p" — точки, ...
• lty — вид линии: "solid" — сплошная, "dashed" —
  пунктирная, "dotted" — точками, ...
• xlim, ylim — границы графика по осям x и y
• main, xlab, ylab — подписи графика и осей
# «lines» добавляет линии на существующий график
lines(x,g(x,c=0.5),lty="dashed")
Трёхмерные графики и линии уровня
x <- y <- seq(-5,5,length=51)
z <- outer(x,y,f)

# команда «persp» рисует трёхмерный график
persp(x,y,z,theta=30,phi=10,col="white",ticktype="detailed")
• theta, phi — углы обзора по горизонтали и вертикали
• col — цвет графика (см. функцию colors())
• ticktype — маркировка осей: "detailed" — точные значения,
  "simple" — только стрелки
• xlim, ylim, main, xlab, ylab — аналогично команде «plot»
# «contour» рисует линии уровня функции f
contour(x,y,z,nlevels=5)
• nlevels — количество линий уровня
Статистический анализ
Затабулированные распределения
    Название          Обозначение в R        Параметры
Нормальное        norm                  mean, sd
t-распределение   t                     df
Равномерное       unif                  min, max
Хи-квадрат        chisq                 df
F-распределение   f                     df1, df2
Гамма             gamma                 shape, scale
…                 …                     …
# пример со стандартным нормальным распределением
N <- 100; x <- seq(-5,5,by=0.1); alpha <- 0.95
rnorm(n=N,mean=0,sd=1)             # генератор случайных чисел
qnorm(alpha,mean=0,sd=1)           # квантиль
pnorm(x,mean=0,sd=1)               # функция распределения
dnorm(x,mean=0,sd=1)               # функция плотности
Гистограмма и эмпирическая плотность
y <- faithful$eruptions        # исходные данные
# гистограмма с диапазоном данных от 1.6 до 5.2
# длина интервалов — 0.2
hist(y,breaks=seq(1.6,5.2,by=0.2),prob=TRUE)

# добавление эмпирической плотности
                                                                     Histogram of y
y.pdf <- density(y,bw="ucv")
lines(y.pdf)




                                             0.7
                                             0.6
# добавление исходных данных

                                             0.5
rug(y)
                                             0.4
                                   Density

                                             0.3
                                             0.2
                                             0.1
                                             0.0




                                                   1.5   2.0   2.5   3.0    3.5       4.0   4.5   5.0

                                                                           y
Эмпирическая функция распределения
•




                                             ecdf(y)




                               1.0
                               0.8
                               0.6
                       Fn(x)

                               0.4
                               0.2
                               0.0




                                     2   3             4   5

                                                x
Сравнение с затабулированным
распределением
        y.long <- y[y>3]
        plot(ecdf(y.long),do.points=FALSE,verticals=TRUE)
        x <- seq(3,5.4,by=0.1)
        # график нормального распределения
        lines(x,pnorm(x,mean=mean(y.long),sd=var(y.long)^0.5),lty=3)

        # график квантиль–квантиль
        qqplot(rnorm(n=10^5,mean=mean(y.long),
        sd=var(y.long)^0.5),y.long); abline(0,1)
                          ecdf(y.long)
        1.0




                                                              5.0
        0.8




                                                              4.5
        0.6




                                                     y.long
Fn(x)




                                                              4.0
        0.4




                                                              3.5
        0.2
        0.0




                                                              3.0




              3.0   3.5     4.0          4.5   5.0                  2          3                 4                5                  6

                                  x                                     rnorm(n = 10^5, mean = mean(y.long), sd = var(y.long)^0.5)
Тесты на нормальность
•
Сравнение двух нормальных выборок
•
Сравнение двух произвольных выборок
•
Домашнее задание
• скачать данные о доходности акций или биржевых индексов
  с сайта finam.ru
• провести тесты на нормальность их распределения
• рассмотреть график «квантиль–квантиль» для
  эмпирического распределения доходностей и нормального
  распределения, сделать комментарии по внешнему виду
  графика и толщине хвостов
Установка пакетов, загрузка и
     сохранение данных
Установка пакетов из локального диска
          Шаг 1. Выбор команды из меню
Установка пакетов из локального диска
         Шаг 2. Выбор пакетного zip-файла
Установка пакетов из локального диска
          Шаг 3. Объявление библиотеки
Установка пакетов с сайта R
          Шаг 1. Выбор команды из меню
Установка пакетов с сайта R
              Шаг 2. Выбор зеркала
Установка пакетов с сайта R
              Шаг 3. Выбор пакета
Установка пакетов с сайта R
           Шаг 4. Объявление библиотеки
Загрузка и сохранение данных
# загрузка данных из Excel
# (*.xls-файл должен существовать)
library(xlsReadWrite)
xls.getshlib()   # только для первого раза
dat <- read.xls("C:/R/input.xls",colNames=FALSE)
dat
 V1 V2 V3
1 1 0 0
2 0 1 1
3 1 1 0

# экспорт данных в Excel
# (*.xls-файл может не существовать)
write.xls(dat,"C:/R/output.xls",colNames=FALSE)

Mais conteúdo relacionado

Mais procurados

Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)Mikhail Kurnosov
 
Лекция 2. Алгоритмы сортировки
Лекция 2. Алгоритмы сортировкиЛекция 2. Алгоритмы сортировки
Лекция 2. Алгоритмы сортировкиMikhail Kurnosov
 
Лекция 4. Префиксные деревья (tries, prefix trees)
Лекция 4. Префиксные деревья (tries, prefix trees)Лекция 4. Префиксные деревья (tries, prefix trees)
Лекция 4. Префиксные деревья (tries, prefix trees)Mikhail Kurnosov
 
Data Mining - lecture 3 - 2014
Data Mining - lecture 3 - 2014Data Mining - lecture 3 - 2014
Data Mining - lecture 3 - 2014Andrii Gakhov
 
Java. Массивы. Многомерные массивы.
Java. Массивы. Многомерные массивы.Java. Массивы. Многомерные массивы.
Java. Массивы. Многомерные массивы.Unguryan Vitaliy
 
Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование Theoretical mechanics department
 
13.b naibolshe i naimenshee zna4enie funkcii
13.b naibolshe i naimenshee zna4enie funkcii13.b naibolshe i naimenshee zna4enie funkcii
13.b naibolshe i naimenshee zna4enie funkciiNarvatk
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиMikhail Kurnosov
 
Data Mining - lecture 7 - 2014
Data Mining - lecture 7 - 2014Data Mining - lecture 7 - 2014
Data Mining - lecture 7 - 2014Andrii Gakhov
 
Data Mining - lecture 6 - 2014
Data Mining - lecture 6 - 2014Data Mining - lecture 6 - 2014
Data Mining - lecture 6 - 2014Andrii Gakhov
 
Лекция №12 "Ограниченная машина Больцмана"
Лекция №12 "Ограниченная машина Больцмана" Лекция №12 "Ограниченная машина Больцмана"
Лекция №12 "Ограниченная машина Больцмана" Technosphere1
 
Основы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторыОсновы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторыTheoretical mechanics department
 
Лекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовЛекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовMikhail Kurnosov
 
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...Mikhail Kurnosov
 
Лекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные спискиЛекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные спискиMikhail Kurnosov
 
Лекция №9 "Алгоритмические композиции. Начало"
Лекция №9 "Алгоритмические композиции. Начало"Лекция №9 "Алгоритмические композиции. Начало"
Лекция №9 "Алгоритмические композиции. Начало"Technosphere1
 
Лекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графовЛекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графовMikhail Kurnosov
 

Mais procurados (20)

Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
 
Лекция 2. Алгоритмы сортировки
Лекция 2. Алгоритмы сортировкиЛекция 2. Алгоритмы сортировки
Лекция 2. Алгоритмы сортировки
 
Лекция 4. Префиксные деревья (tries, prefix trees)
Лекция 4. Префиксные деревья (tries, prefix trees)Лекция 4. Префиксные деревья (tries, prefix trees)
Лекция 4. Префиксные деревья (tries, prefix trees)
 
Data Mining - lecture 3 - 2014
Data Mining - lecture 3 - 2014Data Mining - lecture 3 - 2014
Data Mining - lecture 3 - 2014
 
Java. Массивы. Многомерные массивы.
Java. Массивы. Многомерные массивы.Java. Массивы. Многомерные массивы.
Java. Массивы. Многомерные массивы.
 
Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование
 
13.b naibolshe i naimenshee zna4enie funkcii
13.b naibolshe i naimenshee zna4enie funkcii13.b naibolshe i naimenshee zna4enie funkcii
13.b naibolshe i naimenshee zna4enie funkcii
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
 
Основы SciPy
Основы SciPyОсновы SciPy
Основы SciPy
 
Data Mining - lecture 7 - 2014
Data Mining - lecture 7 - 2014Data Mining - lecture 7 - 2014
Data Mining - lecture 7 - 2014
 
Data Mining - lecture 6 - 2014
Data Mining - lecture 6 - 2014Data Mining - lecture 6 - 2014
Data Mining - lecture 6 - 2014
 
Основы MATLAB. Лекция 1.
Основы MATLAB. Лекция 1.Основы MATLAB. Лекция 1.
Основы MATLAB. Лекция 1.
 
Лекция №12 "Ограниченная машина Больцмана"
Лекция №12 "Ограниченная машина Больцмана" Лекция №12 "Ограниченная машина Больцмана"
Лекция №12 "Ограниченная машина Больцмана"
 
Основы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторыОсновы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторы
 
Лекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовЛекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмов
 
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
 
Лекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные спискиЛекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные списки
 
Лекция №9 "Алгоритмические композиции. Начало"
Лекция №9 "Алгоритмические композиции. Начало"Лекция №9 "Алгоритмические композиции. Начало"
Лекция №9 "Алгоритмические композиции. Начало"
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировки
 
Лекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графовЛекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графов
 

Destaque

венчурные инвестиции отбор проектов
венчурные инвестиции отбор проектоввенчурные инвестиции отбор проектов
венчурные инвестиции отбор проектовmsuteam
 
3. теория экстремальных значений
3. теория экстремальных значений3. теория экстремальных значений
3. теория экстремальных значенийmsuteam
 
CMF_Presentation
CMF_PresentationCMF_Presentation
CMF_Presentationmsuteam
 
2. моделирование доходности финансовых активов с использованием копул
2. моделирование доходности финансовых активов с использованием копул2. моделирование доходности финансовых активов с использованием копул
2. моделирование доходности финансовых активов с использованием копулmsuteam
 
1. оценка рыночных рисков
1. оценка рыночных рисков1. оценка рыночных рисков
1. оценка рыночных рисковmsuteam
 
Venture investments selection
Venture investments selectionVenture investments selection
Venture investments selectionmsuteam
 
венчурные инвестиции структурирование_сделок
венчурные инвестиции структурирование_сделоквенчурные инвестиции структурирование_сделок
венчурные инвестиции структурирование_сделокmsuteam
 
4. непараметрическое моделирование
4. непараметрическое моделирование4. непараметрическое моделирование
4. непараметрическое моделированиеmsuteam
 
Venture investments structuring
Venture investments structuringVenture investments structuring
Venture investments structuringmsuteam
 
Cmf enrolled students_2016_new
Cmf enrolled students_2016_newCmf enrolled students_2016_new
Cmf enrolled students_2016_newCMF_Moscow
 
A study on construction of optimal portfolio using sharpe’s single index model
A study on construction of optimal portfolio using sharpe’s single index modelA study on construction of optimal portfolio using sharpe’s single index model
A study on construction of optimal portfolio using sharpe’s single index modelProjects Kart
 
5. регрессионный анализ
5. регрессионный анализ5. регрессионный анализ
5. регрессионный анализmsuteam
 

Destaque (14)

венчурные инвестиции отбор проектов
венчурные инвестиции отбор проектоввенчурные инвестиции отбор проектов
венчурные инвестиции отбор проектов
 
3. теория экстремальных значений
3. теория экстремальных значений3. теория экстремальных значений
3. теория экстремальных значений
 
CMF_Presentation
CMF_PresentationCMF_Presentation
CMF_Presentation
 
2. моделирование доходности финансовых активов с использованием копул
2. моделирование доходности финансовых активов с использованием копул2. моделирование доходности финансовых активов с использованием копул
2. моделирование доходности финансовых активов с использованием копул
 
1. оценка рыночных рисков
1. оценка рыночных рисков1. оценка рыночных рисков
1. оценка рыночных рисков
 
Venture investments selection
Venture investments selectionVenture investments selection
Venture investments selection
 
венчурные инвестиции структурирование_сделок
венчурные инвестиции структурирование_сделоквенчурные инвестиции структурирование_сделок
венчурные инвестиции структурирование_сделок
 
4. непараметрическое моделирование
4. непараметрическое моделирование4. непараметрическое моделирование
4. непараметрическое моделирование
 
Sound waves
Sound wavesSound waves
Sound waves
 
Venture investments structuring
Venture investments structuringVenture investments structuring
Venture investments structuring
 
Cmf enrolled students_2016_new
Cmf enrolled students_2016_newCmf enrolled students_2016_new
Cmf enrolled students_2016_new
 
Cmf 2016-2017
Cmf 2016-2017Cmf 2016-2017
Cmf 2016-2017
 
A study on construction of optimal portfolio using sharpe’s single index model
A study on construction of optimal portfolio using sharpe’s single index modelA study on construction of optimal portfolio using sharpe’s single index model
A study on construction of optimal portfolio using sharpe’s single index model
 
5. регрессионный анализ
5. регрессионный анализ5. регрессионный анализ
5. регрессионный анализ
 

Semelhante a 0. основы r

Использование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетовИспользование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетовТранслируем.бел
 
Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.Roman Brovko
 
Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Яковенко Кирилл
 
Matematicheskie trenazhery
Matematicheskie trenazheryMatematicheskie trenazhery
Matematicheskie trenazheryssusera868ff
 
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Python Meetup
 
Learning from Swift sources, Иван Сметанин
Learning from Swift sources, Иван СметанинLearning from Swift sources, Иван Сметанин
Learning from Swift sources, Иван СметанинMail.ru Group
 
производящие функции(продолжение)
производящие функции(продолжение)производящие функции(продолжение)
производящие функции(продолжение)Mariya_Lastochkina
 
8 встреча — Язык программирования Python (В. Ананьев)
8 встреча — Язык программирования Python (В. Ананьев)8 встреча — Язык программирования Python (В. Ананьев)
8 встреча — Язык программирования Python (В. Ананьев)Smolensk Computer Science Club
 
лекция 3. программирование циклов
лекция 3. программирование цикловлекция 3. программирование циклов
лекция 3. программирование цикловstudent_kai
 
производящие функции
производящие функциипроизводящие функции
производящие функцииMariya_Lastochkina
 
Python и его тормоза
Python и его тормозаPython и его тормоза
Python и его тормозаAlexander Shigin
 
Лекция о языке программирования Haskell
Лекция о языке программирования HaskellЛекция о языке программирования Haskell
Лекция о языке программирования Haskellhusniyarova
 
Pyton – пробуем функциональный стиль
Pyton – пробуем функциональный стильPyton – пробуем функциональный стиль
Pyton – пробуем функциональный стильPython Meetup
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3Eugeniy Tyumentcev
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3etyumentcev
 

Semelhante a 0. основы r (20)

Использование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетовИспользование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетов
 
Основы MATLAB. Численные методы
Основы MATLAB. Численные методыОсновы MATLAB. Численные методы
Основы MATLAB. Численные методы
 
Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.
 
Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3
 
КР 1 с решением
КР 1 с решениемКР 1 с решением
КР 1 с решением
 
Matematicheskie trenazhery
Matematicheskie trenazheryMatematicheskie trenazhery
Matematicheskie trenazhery
 
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
 
Learning from Swift sources, Иван Сметанин
Learning from Swift sources, Иван СметанинLearning from Swift sources, Иван Сметанин
Learning from Swift sources, Иван Сметанин
 
производящие функции(продолжение)
производящие функции(продолжение)производящие функции(продолжение)
производящие функции(продолжение)
 
8 встреча — Язык программирования Python (В. Ананьев)
8 встреча — Язык программирования Python (В. Ананьев)8 встреча — Язык программирования Python (В. Ананьев)
8 встреча — Язык программирования Python (В. Ананьев)
 
Charming python sc2-8
Charming python sc2-8Charming python sc2-8
Charming python sc2-8
 
лекция 3. программирование циклов
лекция 3. программирование цикловлекция 3. программирование циклов
лекция 3. программирование циклов
 
производящие функции
производящие функциипроизводящие функции
производящие функции
 
Основы NumPy
Основы NumPyОсновы NumPy
Основы NumPy
 
Python и его тормоза
Python и его тормозаPython и его тормоза
Python и его тормоза
 
Лекция о языке программирования Haskell
Лекция о языке программирования HaskellЛекция о языке программирования Haskell
Лекция о языке программирования Haskell
 
8
88
8
 
Pyton – пробуем функциональный стиль
Pyton – пробуем функциональный стильPyton – пробуем функциональный стиль
Pyton – пробуем функциональный стиль
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3
 

0. основы r

  • 1. Основы R Базовые команды и операции Финансовая эконометрика
  • 2. Содержание • операции с числами и векторами • массивы и матрицы • циклы и условия • функции и графики • статистический анализ • загрузка пакетов и данных
  • 3. Операции с числами и векторами
  • 4. Присвоение значений # создание скалярной переменной x <- 5 x [1] 5 # создание векторной переменной x <- c(1,2,3) [1] 1 2 3 x <- 1:5 [1] 1 2 3 4 5 # повторение числа (вектора) несколько раз y <- rep(0,times=2) [1] 0 0 y <- rep(x,times=2) [1] 1 2 3 4 5 1 2 3 4 5
  • 5. Векторная арифметика # операции с векторами выполняются покомпонентно # вектора меньшей длины повторяются несколько раз # размеры векторов должны быть кратными x + 1 [1] 2 3 4 5 6 x + c(1:3,4,4) [1] 2 4 6 8 9 # допустимые операции: +, -, *, /, ^ # арифметические функции: # log(), exp(), sqrt(), sin(), cos(), tan(), min(), max(), abs(), … # константа «пи» pi [1] 3.141593
  • 6. Статистические функции # диапазон значений: range(x) == c(min(x),max(x)) range(x) [1] 1 5 # длина вектора length(x) [1] 5 # сумма и произведение элементов sum(x) [1] 15 prod(x) [1] 120 # среднее и дисперсия mean(x) [1] 3 var(x) [1] 2.5
  • 7. Сортировка значений и последовательности # сортировка y <- c(10,-3,6,0) sort(y,decreasing=FALSE) [1] -3 0 6 10 sort(y,decreasing=TRUE) [1] 10 6 0 -3 # последовательность с заданным шагом seq(0,1,by=0.2) [1] 0 0.2 0.4 0.6 0.8 1 # последовательность заданной длины seq(0,9,length=4) [1] 0 3 6 9
  • 8. Логические векторы # операции сравнения: <, >, <=, >=, ==, != y <- x > 3 [1] FALSE FALSE FALSE TRUE TRUE # логические операторы: &, |, ! y <- ( (x>=3) & (x<=4) ) [1] FALSE FALSE TRUE TRUE FALSE y <- ( (x<3) | (x>4) ) [1] TRUE TRUE FALSE FALSE TRUE !y [1] FALSE FALSE TRUE TRUE FALSE # в арифметических операциях TRUE == 1, FALSE == 0 sum(x>3) [1] 2
  • 9. Обращение к элементам вектора # с помощью логического вектора x[y] [1] 1 2 5 # с помощью набора положительных чисел x[1:3] [1] 1 2 3 # с помощью набора отрицательных чисел, # убирая указанные элементы x[-(1:3)] [1] 4 5 # с помощью названий элементов names(x) <- c("mon","tue","wed","thu","fri") x[c("mon","thu")] mon thu 1 4
  • 11. Создание массива # изменение размерности вектора z <- 1:1500 dim(z) <- c(3,5,100) # в результате z — матрица 3 на 5 на 100 # произведение размерностей равно длине вектора # порядок значений: z[1,1,1], z[2,1,1+, …, z*2,5,100], z[3,5,100] # с помощью функций matrix() и array() z <- matrix(1:20,nrow=5,ncol=4) z <- array(1:20,dim=c(5,4)) [,1] [,2] [,3] [,4] [1,] 1 6 11 16 [2,] 2 7 12 17 [3,] 3 8 13 18 [4,] 4 9 14 19 [5,] 5 10 15 20
  • 12. Обращение к элементам матрицы z <- array(1:20,dim=c(5,4)) [,1] [,2] [,3] [,4] [1,] 1 6 11 16 [2,] 2 7 12 17 [3,] 3 8 13 18 [4,] 4 9 14 19 [5,] 5 10 15 20 z[,1] [1] 1 2 3 4 5 z[1,] [1] 1 6 11 16 z[1:2,1:2] [,1] [,2] [1,] 1 6 [2,] 2 7
  • 13. Действия с матрицами # транспонирование tz <- t(z) # обращение inv.z <- solve(z) # умножение z.tz <- z %*% tz # создание диагональной матрицы y <- diag(1:5) # собственные значения и вектора e <- eigen(y) e$vectors; e$values # квадратный корень из матрицы y.sqrt <- e$vectors %*% diag(sqrt(e$values)) %*% t(e$vectors)
  • 15. Циклы и условия # цикл с предусловием # оператор условия y <- numeric(); i <- 1 if (y[1] == 1) { while (i <= 5) { y <- y + 5 y[i] <- i^2 } i <- i + 1 [1] 5 9 14 21 30 } [1] 1 4 9 16 25 # цикл «от–до» y <- numeric() for (i in 1:5) { y[i] <- i^2 } [1] 1 4 9 16 25
  • 16. Пользовательские функции и рисование графиков
  • 18. Двумерные графики g <- function(x,c=1) c*abs(x)^0.5 x <- seq(-5,5,length=101) # команда «plot» рисует новый график plot(x,g(x),type="l",lty="solid",xlim=c(-5,5),ylim=c(0,2.5), main="График",xlab="Аргумент",ylab="Функция") • type — вид графика: "l" — линии, "p" — точки, ... • lty — вид линии: "solid" — сплошная, "dashed" — пунктирная, "dotted" — точками, ... • xlim, ylim — границы графика по осям x и y • main, xlab, ylab — подписи графика и осей # «lines» добавляет линии на существующий график lines(x,g(x,c=0.5),lty="dashed")
  • 19. Трёхмерные графики и линии уровня x <- y <- seq(-5,5,length=51) z <- outer(x,y,f) # команда «persp» рисует трёхмерный график persp(x,y,z,theta=30,phi=10,col="white",ticktype="detailed") • theta, phi — углы обзора по горизонтали и вертикали • col — цвет графика (см. функцию colors()) • ticktype — маркировка осей: "detailed" — точные значения, "simple" — только стрелки • xlim, ylim, main, xlab, ylab — аналогично команде «plot» # «contour» рисует линии уровня функции f contour(x,y,z,nlevels=5) • nlevels — количество линий уровня
  • 21. Затабулированные распределения Название Обозначение в R Параметры Нормальное norm mean, sd t-распределение t df Равномерное unif min, max Хи-квадрат chisq df F-распределение f df1, df2 Гамма gamma shape, scale … … … # пример со стандартным нормальным распределением N <- 100; x <- seq(-5,5,by=0.1); alpha <- 0.95 rnorm(n=N,mean=0,sd=1) # генератор случайных чисел qnorm(alpha,mean=0,sd=1) # квантиль pnorm(x,mean=0,sd=1) # функция распределения dnorm(x,mean=0,sd=1) # функция плотности
  • 22. Гистограмма и эмпирическая плотность y <- faithful$eruptions # исходные данные # гистограмма с диапазоном данных от 1.6 до 5.2 # длина интервалов — 0.2 hist(y,breaks=seq(1.6,5.2,by=0.2),prob=TRUE) # добавление эмпирической плотности Histogram of y y.pdf <- density(y,bw="ucv") lines(y.pdf) 0.7 0.6 # добавление исходных данных 0.5 rug(y) 0.4 Density 0.3 0.2 0.1 0.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 y
  • 23. Эмпирическая функция распределения • ecdf(y) 1.0 0.8 0.6 Fn(x) 0.4 0.2 0.0 2 3 4 5 x
  • 24. Сравнение с затабулированным распределением y.long <- y[y>3] plot(ecdf(y.long),do.points=FALSE,verticals=TRUE) x <- seq(3,5.4,by=0.1) # график нормального распределения lines(x,pnorm(x,mean=mean(y.long),sd=var(y.long)^0.5),lty=3) # график квантиль–квантиль qqplot(rnorm(n=10^5,mean=mean(y.long), sd=var(y.long)^0.5),y.long); abline(0,1) ecdf(y.long) 1.0 5.0 0.8 4.5 0.6 y.long Fn(x) 4.0 0.4 3.5 0.2 0.0 3.0 3.0 3.5 4.0 4.5 5.0 2 3 4 5 6 x rnorm(n = 10^5, mean = mean(y.long), sd = var(y.long)^0.5)
  • 28. Домашнее задание • скачать данные о доходности акций или биржевых индексов с сайта finam.ru • провести тесты на нормальность их распределения • рассмотреть график «квантиль–квантиль» для эмпирического распределения доходностей и нормального распределения, сделать комментарии по внешнему виду графика и толщине хвостов
  • 29. Установка пакетов, загрузка и сохранение данных
  • 30. Установка пакетов из локального диска Шаг 1. Выбор команды из меню
  • 31. Установка пакетов из локального диска Шаг 2. Выбор пакетного zip-файла
  • 32. Установка пакетов из локального диска Шаг 3. Объявление библиотеки
  • 33. Установка пакетов с сайта R Шаг 1. Выбор команды из меню
  • 34. Установка пакетов с сайта R Шаг 2. Выбор зеркала
  • 35. Установка пакетов с сайта R Шаг 3. Выбор пакета
  • 36. Установка пакетов с сайта R Шаг 4. Объявление библиотеки
  • 37. Загрузка и сохранение данных # загрузка данных из Excel # (*.xls-файл должен существовать) library(xlsReadWrite) xls.getshlib() # только для первого раза dat <- read.xls("C:/R/input.xls",colNames=FALSE) dat V1 V2 V3 1 1 0 0 2 0 1 1 3 1 1 0 # экспорт данных в Excel # (*.xls-файл может не существовать) write.xls(dat,"C:/R/output.xls",colNames=FALSE)