Справочник от Автор24
Поделись лекцией за скидку на Автор24

Статистический анализ доходности финансовых активов

  • 👀 215 просмотров
  • 📌 152 загрузки
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Статистический анализ доходности финансовых активов» pdf
Динамические модели в эконометрике Статистический анализ доходности финансовых активов Содержание • • • • • • операции с числами и векторами массивы и матрицы циклы и условия функции и графики статистический анализ загрузка пакетов и данных Операции с числами и векторами Присвоение значений # создание скалярной переменной 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] x + [1] 1 2 3 4 5 6 c(1:3,4,4) 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 while (i <= 5) { y[i] <- i^2 i <- i + 1 } [1] 1 4 9 16 25 if (y[1] == 1) { y <- y + 5 } [1] 5 9 14 21 30 # цикл «от–до» y <- numeric() for (i in 1:5) { y[i] <- i^2 } [1] 1 4 9 16 25 Пользовательские функции и рисование графиков Пользовательские функции # объявляем функцию , f <- function(x1,x2,c,alpha) { c - x1^alpha - x2^alpha } f(0.5,0.5,1,2) [1] 0.5 # заданные при объявлении функции значения параметров # воспринимаются как значения «по умолчанию» f <- function(x1,x2,c=1,alpha=2) c - x1^alpha - x2^alpha f(0.5,0.5) [1] 0.5 # обратиться к функции также можно, явно задав параметры f(alpha=2,x2=0.5,x1=0.5,c=1) [1] 0.5 Двумерные графики 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 0.6 0.7 y.pdf <- density(y,bw="ucv") lines(y.pdf) 0.3 0.2 0.1 0.0 Density rug(y) 0.4 0.5 # добавление исходных данных 1.5 2.0 2.5 3.0 3.5 y 4.0 4.5 5.0 Эмпирическая функция распределения y.cdf <- ecdf(y) # y.cdf — функция, подставляя в неё квантили, мы получаем # значения функции распределения # . ∑ y.cdf(3) [1] 0.3566176 # график plot(y.cdf,do.points=FALSE,verticals=TRUE) 0.0 0.2 0.4 Fn(x) 0.6 0.8 1.0 ecdf(y) 2 3 4 x 5 Сравнение с затабулированным распределением 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) 4.0 3.0 0.0 0.2 3.5 0.4 Fn(x) y.long 0.6 4.5 0.8 5.0 1.0 ecdf(y.long) 3.0 3.5 4.0 4.5 x 5.0 2 3 4 5 rnorm(n = 10^5, mean = mean(y.long), sd = var(y.long)^0.5) 6 Тесты на нормальность # Шапиро–Уилка # гипотеза: : ~ ∑ # статистика: # , ∑ ~ ̅ , ,…, . , 0,1 , shapiro.test(y.long) # Колмогорова–Смирнова # гипотеза: : ~ # статистика: sup . ks.test(y.long,"pnorm",mean=mean(y.long),sd=var(y.long)^0.5) Сравнение двух нормальных выборок # непарный t‐тест на равенство средних # гипотеза: : ̅ ̅ ̅ # статистика: ̅ . ~ 2 n1 <- rnorm(n=100,mean=0,sd=1) n2 <- rnorm(n=100,mean=0.1,sd=1.1) t.test(n1,n2,var.equal=FALSE,conf.level=0.95) # F‐тест на равенство дисперсий # гипотеза: # статистика: : 1 ~ , var.test(n1,n2,conf.level=0.95) Сравнение двух произвольных выборок # ранговый тест Уилкоксона на равенство средних # гипотеза: : ̅ ̅ # статистика: min , , ∑ t <- rt(n=100,df=5); n <- rnorm(n=100,mean=0,sd=1) wilcox.test(t,n,conf.level=0.95) # тест Колмогорова–Смирнова # гипотеза: : ≡ # статистика: ks.test(t,n) sup , Задание В файле «hw1.csv» по столбцам содержатся значения случайных величин. Количество этих величин равно 1000, и файл имеет 1000 столбцов Вашей задачей является определение нормальности этих случайных величин Ответ — в виде csv‐файла с вектором‐столбцом из нулей и единиц, где единица соответствует нормально распределённой случайной величине. Столбец этого файла должен иметь произвольный заголовок Установка пакетов, загрузка и сохранение данных Установка пакетов из локального диска Шаг 1. Выбор команды из меню Установка пакетов из локального диска Шаг 2. Выбор пакетного zip‐файла Установка пакетов из локального диска Шаг 3. Объявление библиотеки Установка пакетов с сайта R Шаг 1. Выбор команды из меню Установка пакетов с сайта R Шаг 2. Выбор зеркала Установка пакетов с сайта R Шаг 3. Выбор пакета Установка пакетов с сайта R Шаг 4. Объявление библиотеки Загрузка и сохранение данных # загрузка данных из Excel # (*.xlsx‐файл должен существовать) library(xlsx) dat <- read.xlsx("C:/R/input.xls",sheetIndex=1,header=TRUE) dat V1 V2 V3 1 1 0 0 2 0 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) Загрузка и сохранение данных # загрузка данных из *.csv dat <- read.csv("C:/R/input.csv", header=TRUE, sep=",") • header == TRUE, если в файле есть заголовки столбцов • sep — разделитель столбцов ("," для *.csv) # загрузка данных из *.txt dat <- read.table("C:/R/input.txt", header=TRUE, sep="," ,dec=".") • dec — разделитель целой и дробной частей • header, sep — аналогично read.csv
«Статистический анализ доходности финансовых активов» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

Тебе могут подойти лекции

Смотреть все 207 лекций
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot