Слайд 1Основы статистического анализа
Финансовая эконометрика
Слайд 2Содержание
операции с числами и векторами
массивы и матрицы
циклы и условия
функции и
графики
статистический анализ
загрузка пакетов и данных
Слайд 3Операции с числами и векторами
Слайд 4Присвоение значений
# создание скалярной переменной
x
переменной
x
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
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
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
результате 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
[,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
значения и вектора
e <- eigen(y)
e$vectors; e$values
# квадратный корень из матрицы
y.sqrt <- e$vectors %*% diag(sqrt(e$values)) %*% t(e$vectors)
Слайд 15Циклы и условия
# цикл с предусловием
y
1
while (i
i + 1
}
[1] 1 4 9 16 25
# цикл «от–до»
y <- numeric()
for (i in 1:5) {
y[i] <- i^2
}
[1] 1 4 9 16 25
# оператор условия
if (y[1] == 1) {
y <- y + 5
}
[1] 5 9 14 21 30
Слайд 16Пользовательские функции и рисование графиков
Слайд 18Двумерные графики
g
новый график
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
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Затабулированные распределения
# пример со стандартным нормальным распределением
N
распределения
dnorm(x,mean=0,sd=1) # функция плотности
Слайд 22Гистограмма и эмпирическая плотность
y
диапазоном данных от 1.6 до 5.2
# длина интервалов — 0.2
hist(y,breaks=seq(1.6,5.2,by=0.2),prob=TRUE)
#
добавление эмпирической плотности
y.pdf <- density(y,bw="ucv")
lines(y.pdf)
# добавление исходных данных
rug(y)
Слайд 23Эмпирическая функция распределения
Слайд 24Сравнение с затабулированным распределением
y.long 3]
plot(ecdf(y.long),do.points=FALSE,verticals=TRUE)
x
распределения
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)
Слайд 26Сравнение двух нормальных выборок
Слайд 27Сравнение двух произвольных выборок
Слайд 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
# (*.xlsx-файл должен
существовать)
library(xlsx)
dat
1 1
3 1 1 0
# экспорт данных в Excel
# (*.xlsx-файл может не существовать)
write.xlsx(dat,"C:/R/output.xlsx",sheetName="Таблица1",
col.names=TRUE,row.names=FALSE,append=FALSE)
Слайд 38Загрузка и сохранение данных
# загрузка данных из *.csv
dat
header=TRUE, sep=",")
header == TRUE, если в файле есть заголовки столбцов
sep
— разделитель столбцов ("," для *.csv)
# загрузка данных из *.txt
dat <- read.table("C:/R/input.txt",
header=TRUE, sep="," ,dec=".")
dec — разделитель целой и дробной частей
header, sep — аналогично read.csv