library(tidyverse)
library(ggplot2)
library(plotly)
library(mFilter)
data = data.frame(t = seq(0,151), yt = rep(0,152), kt = rep(0,152), lt = rep(0,152), wt = rep(0,152), ct = rep(0,152), it = rep(0,152), rt = rep(0,152))
data$yt[1] = 125/18
data$kt[1] = 25/6
data$lt[1] = 65/54
data$wt[1] = 155/27
data$ct[1] = 61/18
data$it[1] = 25/6
data$rt[1] = 5/18
data$kt[2] = data$kt[1]
data_permanent = data
data_transitory = data

Пункт а

Перманентный шок

for (i in 2:(nrow(data_permanent)-1)){
  data_permanent$yt[i] = (19/69)*data_permanent$kt[i]+(404/69)
  data_permanent$lt[i] = (7/207)*data_permanent$kt[i]+(1111/1035)
  data_permanent$wt[i] = (50/207)*data_permanent$kt[i]+(4949/1035)
  data_permanent$ct[i] = (11/69)*data_permanent$kt[i]+(4747/1725)
  data_permanent$it[i] = (15/23)*data_permanent$kt[i]+(551/345)
  data_permanent$rt[i] = (202/345) - (5/69)*data_permanent$kt[i]
  data_permanent$kt[i+1] = (563/575)*data_permanent$kt[i] + (551/5750)
}
data_permanent = data_permanent[-152,]

Функция реакции выпуска

Период полу-распада шока для выпуска

T=1
while (data_permanent$yt[T] <= ((2563/360)+(125/18))/2){
    T=T+1
}
T-1
## [1] 15
g <- ggplot(data = data_permanent, aes(x=t, y=yt)) + 
geom_point(color="#FA8072", size=1)+
geom_path(color = "#8B0000", size = 0.75)+
geom_hline(aes(yintercept = ((2563/360)+(125/18))/2), color = "#FFA07A")+
annotate(geom="text", label="Yсредний = 7.032", x=100, y=7.04, size=4)+
geom_vline(aes(xintercept = T-1), color = "#FFA07A")+
annotate(geom="text", label="T=15", x=21, y=7.1, size=4)+
xlab("Время") + 
ylab("Выпуск")+
theme_minimal()
fig <- ggplotly(g)
fig

Функция реакции капитала

Период полу-распада шока для капитала

T=1
while (data_permanent$kt[T] <= ((551/120)+(25/6))/2){
    T=T+1
}
T-1
## [1] 34
g <- ggplot(data = data_permanent, aes(x=t, y=kt)) + 
geom_point(color="#6495ED", size=1)+
geom_path(color = "#191970", size = 0.75)+
geom_hline(aes(yintercept = ((551/120)+(25/6))/2), color = "#00688B")+
annotate(geom="text", label="Ксредний = 4.379", x=100, y=4.4, size=4)+
geom_vline(aes(xintercept = T-1), color = "#00688B")+
annotate(geom="text", label="T=34", x=40, y=4.55, size=4)+
xlab("Время") + 
ylab("Капитал")+
theme_minimal()
fig <- ggplotly(g)
fig

Функция реакции рабочей силы

Период полу-распада шока для рабочей силы

T=1
while (data_permanent$lt[T] <= ((1327/1080)+(65/54))/2){
    T=T+1
}
T-1
## [1] 8
g <- ggplot(data = data_permanent, aes(x=t, y=lt)) + 
geom_point(color="#90EE90", size=1)+
geom_path(color = "#006400", size = 0.75)+
geom_hline(aes(yintercept = ((1327/1080)+(65/54))/2), color = "#00FA9A")+
annotate(geom="text", label="Lсредняя = 1.216", x=100, y=1.218, size=4)+
geom_vline(aes(xintercept = T-1), color = "#00FA9A")+
annotate(geom="text", label="T=8", x=14, y=1.225, size=4)+
xlab("Время") + 
ylab("Рабочая сила")+
theme_minimal()
fig <- ggplotly(g)
fig

Функция реакции зарплаты

Период полу-распада шока для зарплаты

T=1
while (data_permanent$wt[T] <= ((3181/540)+(155/27))/2){
    T=T+1
}
T-1
## [1] 16
g <- ggplot(data = data_permanent, aes(x=t, y=wt)) + 
geom_point(color="#FFA500", size=1)+
geom_path(color = "#FF6347", size = 0.75)+
geom_hline(aes(yintercept = ((3181/540)+(155/27))/2), color = "#FFD700")+
annotate(geom="text", label="Wсредняя = 5.815", x=100, y=5.821, size=4)+
geom_vline(aes(xintercept = T-1), color = "#FFD700")+
annotate(geom="text", label="T=16", x=22, y=5.85, size=4)+
xlab("Время") + 
ylab("Зарплата")+
theme_minimal()
fig <- ggplotly(g)
fig

Функция реакции потребления

Период полу-распада шока для потребления

T=1
while (data_permanent$ct[T] <= ((6271/1800)+(61/18))/2){
    T=T+1
}
T-1
## [1] 18
g <- ggplot(data = data_permanent, aes(x=t, y=ct)) + 
geom_point(color="#DDA0DD", size=1)+
geom_path(color = "#9400D3", size = 0.75)+
geom_hline(aes(yintercept = ((6271/1800)+(61/18))/2), color = "#D8BFD8")+
annotate(geom="text", label="Cсреднее = 3.436", x=100, y=3.44, size=4)+
geom_vline(aes(xintercept = T-1), color = "#D8BFD8")+
annotate(geom="text", label="T=18", x=25, y=3.46, size=4)+
xlab("Время") + 
ylab("Потребление")+
theme_minimal()
fig <- ggplotly(g)
fig

Функция реакции инвестиций

Период полу-распада шока для инвестиций

T=1
while (data_permanent$it[T] <= ((551/120)+(25/6))/2){
    T=T+1
}
T-1
## [1] 14
g <- ggplot(data = data_permanent, aes(x=t, y=it)) + 
geom_point(color="#D2691E", size=1)+
geom_path(color = "#8B4513", size = 0.75)+
geom_hline(aes(yintercept = ((551/120)+(25/6))/2), color = "#F4A460")+
annotate(geom="text", label="Iсреднее = 4.379", x=100, y=4.4, size=4)+
geom_vline(aes(xintercept = T-1), color = "#F4A460")+
annotate(geom="text", label="T=14", x=20, y=4.5, size=4)+
xlab("Время") + 
ylab("Инвестиции")+
theme_minimal()
fig <- ggplotly(g)
fig

Функция реакции процентной ставки

Период полу-распада шока для процентной ставки

T=1
while (data_permanent$rt[T] >= ((91/360)+(5/18))/2){
    T=T+1
}
T-1
## [1] 44
g <- ggplot(data = data_permanent, aes(x=t, y=rt)) + 
geom_point(color="#A9A9A9", size=1)+
geom_path(color = "#696969", size = 0.75)+
geom_hline(aes(yintercept = ((91/360)+(5/18))/2), color = "#708090")+
annotate(geom="text", label="r среднее = 0.265", x=100, y=0.2665, size=4)+
geom_vline(aes(xintercept = T-1), color = "#708090")+
annotate(geom="text", label="T=44", x=50, y=0.27, size=4)+
xlab("Время") + 
ylab("Процентная ставка")+
theme_minimal()
fig <- ggplotly(g)
fig

Временный шок

data_transitory$yt[2] = (19/69)*data_transitory$kt[2]+(404/69)
data_transitory$lt[2] = (7/207)*data_transitory$kt[2]+(1111/1035)
data_transitory$wt[2] = (50/207)*data_transitory$kt[2]+(4949/1035)
data_transitory$ct[2] = (11/69)*data_transitory$kt[2]+(4747/1725)
data_transitory$it[2] = (15/23)*data_transitory$kt[2]+(551/345)
data_transitory$rt[2] = (202/345) - (5/69)*data_transitory$kt[i]
data_transitory$kt[3] = (563/575)*data_transitory$kt[2] + (551/5750)

for (i in 3:(nrow(data_transitory)-1)){
  data_transitory$yt[i] = (19/69)*data_transitory$kt[i]+(400/69)
  data_transitory$lt[i] = (7/207)*data_transitory$kt[i]+(220/207)
  data_transitory$wt[i] = (50/207)*data_transitory$kt[i]+(980/207)
  data_transitory$ct[i] = (11/69)*data_transitory$kt[i]+(188/69)
  data_transitory$it[i] = (15/23)*data_transitory$kt[i]+(100/69)
  data_transitory$rt[i] = (40/69) - (5/69)*data_transitory$kt[i]
  data_transitory$kt[i+1] = (563/575)*data_transitory$kt[i] + (2/23)
}
data_transitory = data_transitory[-152,]

Функция реакции выпуска

Период полу-распада шока для выпуска

T=2
while (data_transitory$yt[T] >= ((data_transitory$yt[2])+(data_transitory$yt[1]))/2){
    T=T+1
}
T-1
## [1] 2
g <- ggplot(data = data_transitory, aes(x=t, y=yt)) + 
geom_point(color="#FA8072", size=1)+
geom_path(color = "#8B0000", size = 0.75)+
geom_hline(aes(yintercept = ((data_transitory$yt[2])+(data_transitory$yt[1]))/2), color = "#FFA07A")+
annotate(geom="text", label="Yсредний = 6.973", x=100, y=6.976, size=4)+
geom_vline(aes(xintercept = T-1), color = "#FFA07A")+
annotate(geom="text", label="T=2", x=5, y=7, size=4)+
xlab("Время") + 
ylab("Выпуск")+
theme_minimal()
fig <- ggplotly(g)
fig

Функция реакции капитала

Период полу-распада шока для капитала

T=3
while (data_transitory$kt[T] >= ((data_transitory$kt[3])+(data_transitory$kt[1]))/2){
    T=T+1
}
T-1
## [1] 35
g <- ggplot(data = data_transitory, aes(x=t, y=kt)) + 
geom_point(color="#6495ED", size=1)+
geom_path(color = "#191970", size = 0.75)+
geom_hline(aes(yintercept = ((data_transitory$kt[3])+(data_transitory$kt[1]))/2), color = "#00688B")+
annotate(geom="text", label="Ксредний = 4.171", x=100, y=4.1714, size=4)+
geom_vline(aes(xintercept = T-1), color = "#00688B")+
annotate(geom="text", label="T=35", x=41, y=4.172, size=4)+
xlab("Время") + 
ylab("Капитал")+
theme_minimal()
fig <- ggplotly(g)
fig

Функция реакции рабочей силы

Период полу-распада шока для рабочей силы

T=2
while (data_transitory$lt[T] >= ((data_transitory$lt[2])+(data_transitory$lt[1]))/2){
    T=T+1
}
T-1
## [1] 2
g <- ggplot(data = data_transitory, aes(x=t, y=lt)) + 
geom_point(color="#90EE90", size=1)+
geom_path(color = "#006400", size = 0.75)+
geom_hline(aes(yintercept = ((data_transitory$lt[2])+(data_transitory$lt[1]))/2), color = "#00FA9A")+
annotate(geom="text", label="Lсредний = 1.209", x=100, y=1.2094, size=4)+
geom_vline(aes(xintercept = T-1), color = "#00FA9A")+
annotate(geom="text", label="T=2", x=5, y=1.2125, size=4)+
xlab("Время") + 
ylab("Рабочая сила")+
theme_minimal()
fig <- ggplotly(g)
fig

Функция реакции зарплаты

Период полу-распада шока для зарплаты

T=2
while (data_transitory$wt[T] >= ((data_transitory$wt[2])+(data_transitory$wt[1]))/2){
    T=T+1
}
T-1
## [1] 2
g <- ggplot(data = data_transitory, aes(x=t, y=wt)) + 
geom_point(color="#FFA500", size=1)+
geom_path(color = "#FF6347", size = 0.75)+
geom_hline(aes(yintercept = ((data_transitory$wt[2])+(data_transitory$wt[1]))/2), color = "#FFD700")+
annotate(geom="text", label="Wсредняя = 5.764", x=100, y=5.7659, size=4)+
geom_vline(aes(xintercept = T-1), color = "#FFD700")+
annotate(geom="text", label="T=2", x=5, y=5.785, size=4)+
xlab("Время") + 
ylab("Зарплата")+
theme_minimal()
fig <- ggplotly(g)
fig

Функция реакции потребления

Период полу-распада шока для потребления

T=2
while (data_transitory$ct[T] >= ((data_transitory$ct[2])+(data_transitory$ct[1]))/2){
    T=T+1
}
T-1
## [1] 2
g <- ggplot(data = data_transitory, aes(x=t, y=ct)) + 
geom_point(color="#DDA0DD", size=1)+
geom_path(color = "#9400D3", size = 0.75)+
geom_hline(aes(yintercept = ((data_transitory$ct[2])+(data_transitory$ct[1]))/2), color = "#D8BFD8")+
annotate(geom="text", label="Cсреднее = 3.402", x=100, y=3.4035, size=4)+
geom_vline(aes(xintercept = T-1), color = "#D8BFD8")+
annotate(geom="text", label="T=2", x=5, y=3.415, size=4)+
xlab("Время") + 
ylab("Потребление")+
theme_minimal()
fig <- ggplotly(g)
fig

Функция реакции инвестиций

Период полу-распада шока для инвестиций

T=2
while (data_transitory$it[T] >= ((data_transitory$it[2])+(data_transitory$it[1]))/2){
    T=T+1
}
T-1
## [1] 2
g <- ggplot(data = data_transitory, aes(x=t, y=it)) + 
geom_point(color="#D2691E", size=1)+
geom_path(color = "#8B4513", size = 0.75)+
geom_hline(aes(yintercept = ((data_transitory$it[2])+(data_transitory$it[1]))/2), color = "#F4A460")+
annotate(geom="text", label="Iсреднее = 4.241", x=100, y=4.245, size=4)+
geom_vline(aes(xintercept = T-1), color = "#F4A460")+
annotate(geom="text", label="T=2", x=5, y=4.3, size=4)+
xlab("Время") + 
ylab("Инвестиции")+
theme_minimal()
fig <- ggplotly(g)
fig

Функция реакции процентной ставки

Период полу-распада шока для процентной ставки

T=2
while (data_transitory$rt[T] >= ((data_transitory$rt[2])+(data_transitory$rt[1]))/2){
    T=T+1
}
T-1
## [1] 2
g <- ggplot(data = data_transitory, aes(x=t, y=rt)) + 
geom_point(color="#A9A9A9", size=1)+
geom_path(color = "#696969", size = 0.75)+
geom_hline(aes(yintercept = ((data_transitory$rt[2])+(data_transitory$rt[1]))/2), color = "#708090")+
annotate(geom="text", label="r среднее = 0.431", x=100, y=0.44, size=4)+
geom_vline(aes(xintercept = T-1), color = "#708090")+
annotate(geom="text", label="T=2", x=6, y=0.5, size=4)+
xlab("Время") + 
ylab("Процентная ставка")+
theme_minimal()
fig <- ggplotly(g)
fig

Пункт b

data$et =  rep(0,152)
set.seed(123)
data$et[2:152]=rnorm(151, 0, sqrt(0.1))
for (i in 2:(nrow(data)-1)){
data$yt[i] = (19/69)*data$kt[i] + (400/69) + (400/69)*data$et[i]
data$lt[i] = (7/207)*data$kt[i] + (220/207) + (220/207)*data$et[i]
data$wt[i] = (50/207)*data$kt[i] + (980/207) + (980/207)*data$et[i]
data$ct[i] = (11/69)*data$kt[i] + (188/69) + (188/69)*data$et[i]
data$it[i] = (15/23)*data$kt[i] + (100/69) + (340/23)*data$et[i]
data$rt[i] = (40/69) - (5/69)*data$kt[i] + (40/69)*data$et[i]
data$kt[i+1] = (563/575)*data$kt[i] + (2/23) + (102/115)*data$et[i]
}
data = data[-152,]

Функция реакции выпуска

g <- ggplot(data = data, aes(x=t, y=yt)) + 
geom_path(color = "#8B0000", size = 0.75)+
geom_hline(aes(yintercept = (125/18)), color = "#FFA07A")+
xlab("Время") + 
ylab("Выпуск")+
theme_minimal()
fig <- ggplotly(g)
fig

Функция реакции капитала

g <- ggplot(data = data, aes(x=t, y=kt)) + 
geom_path(color = "#191970", size = 0.75)+
geom_hline(aes(yintercept = (25/6)), color = "#00688B")+
xlab("Время") + 
ylab("Капитал")+
theme_minimal()
fig <- ggplotly(g)
fig

Функция реакции рабочей силы

g <- ggplot(data = data, aes(x=t, y=lt)) + 
geom_path(color = "#006400", size = 0.75)+
geom_hline(aes(yintercept = (65/54)), color = "#00FA9A")+
xlab("Время") + 
ylab("Рабочая сила")+
theme_minimal()
fig <- ggplotly(g)
fig

Функция реакции зарплаты

g <- ggplot(data = data, aes(x=t, y=wt)) + 
geom_path(color = "#FF6347", size = 0.75)+
geom_hline(aes(yintercept = (155/27)), color = "#FFD700")+
xlab("Время") + 
ylab("Зарплата")+
theme_minimal()
fig <- ggplotly(g)
fig

Функция реакции потребления

g <- ggplot(data = data, aes(x=t, y=ct)) + 
geom_path(color = "#9400D3", size = 0.75)+
geom_hline(aes(yintercept = (61/18)), color = "#D8BFD8")+
xlab("Время") + 
ylab("Потребление")+
theme_minimal()
fig <- ggplotly(g)
fig

Функция реакции инвестиций

g <- ggplot(data = data, aes(x=t, y=it)) + 
geom_path(color = "#8B4513", size = 0.75)+
geom_hline(aes(yintercept = (25/6)), color = "#F4A460")+
xlab("Время") + 
ylab("Инвестиции")+
theme_minimal()
fig <- ggplotly(g)
fig

Функция реакции процентной ставки

g <- ggplot(data = data, aes(x=t, y=rt)) + 
geom_path(color = "#696969", size = 0.75)+
geom_hline(aes(yintercept =(5/18)), color = "#708090")+
xlab("Время") + 
ylab("Процентная ставка")+
theme_minimal()
fig <- ggplotly(g)
fig

Пункт с

GDP <- read.csv("/Users/nikolajdolgih/Desktop/Advanced Macro/ДЗ1/GDP.csv")
GDP = GDP %>% select(TIME, Value)
colnames(GDP) = c("TIME", "GDP")
Cons <- read.csv("/Users/nikolajdolgih/Desktop/Advanced Macro/ДЗ1/Consumption.csv")
Cons = Cons %>% select(TIME, Value)
colnames(Cons) = c("TIME", "Cons")
Invest <- read.csv("/Users/nikolajdolgih/Desktop/Advanced Macro/ДЗ1/Investment.csv")
Invest = Invest %>% select(TIME, Value)
colnames(Invest) = c("TIME", "Invest")
US = inner_join(GDP, Cons, by = "TIME")
US = inner_join(US, Invest, by = "TIME")

Дисперсия выпуска

g <- ggplot(data = US, aes(x=TIME, y=GDP)) + 
geom_path(color = "#8B0000", size = 0.75)+
xlab("Время") + 
ylab("Выпуск")+
theme_minimal()
fig <- ggplotly(g)
fig

Сглаживание временного ряда с помощью фильтра Ходрика-Прескотта

gdp.decom = hpfilter(US$GDP, freq = 1600, type = "lambda")
US$GDP_trend = gdp.decom$trend
US$GDP_cycle = gdp.decom$cycle
g <- ggplot(data = US) + 
geom_path(aes(x=TIME, y=GDP), color = "#8B0000", size = 0.75)+
geom_path(aes(x=TIME, y=GDP_trend), color = "#FFA07A", size = 0.75)+
xlab("Время") + 
ylab("Выпуск")+
theme_minimal()
fig <- ggplotly(g)
fig

Цикл

g <- ggplot(data = US) + 
geom_path(aes(x=TIME, y=GDP_cycle), color = "#8B0000", size = 0.75)+
geom_hline(aes(yintercept = 0), color = "#FFA07A")+
xlab("Время") + 
ylab("Выпуск")+
theme_minimal()
fig <- ggplotly(g)
fig
var(US$GDP_cycle)
## [1] 79602968915

Относительная дисперсия потребления по отношению к выпуску

g <- ggplot(data = US, aes(x=TIME, y=Cons)) + 
geom_path(color = "#9400D3", size = 0.75)+
xlab("Время") + 
ylab("Потребление")+
theme_minimal()
fig <- ggplotly(g)
fig

Сглаживание временного ряда с помощью фильтра Ходрика-Прескотта

Cons.decom = hpfilter(US$Cons, freq = 1600, type = "lambda")
US$Cons_trend = Cons.decom$trend
US$Cons_cycle = Cons.decom$cycle
g <- ggplot(data = US) + 
geom_path(aes(x=TIME, y=Cons), color = "#9400D3", size = 0.75)+
geom_path(aes(x=TIME, y=Cons_trend), color = "#D8BFD8", size = 0.75)+
xlab("Время") + 
ylab("Потреление")+
theme_minimal()
fig <- ggplotly(g)
fig

Цикл

g <- ggplot(data = US) + 
geom_path(aes(x=TIME, y=Cons_cycle), color = "#9400D3", size = 0.75)+
geom_hline(aes(yintercept = 0), color = "#D8BFD8")+
xlab("Время") + 
ylab("Потребление")+
theme_minimal()
fig <- ggplotly(g)
fig
var(US$Cons_cycle)/var(US$GDP_cycle)
## [1] 0.473585

Относительная дисперсия инвестиций по отношению к выпуску

g <- ggplot(data = US, aes(x=TIME, y=Invest)) + 
geom_path(color = "#8B4513", size = 0.75)+
xlab("Время") + 
ylab("Инвестиции")+
theme_minimal()
fig <- ggplotly(g)
fig

Сглаживание временного ряда с помощью фильтра Ходрика-Прескотта

Invest.decom = hpfilter(US$Invest, freq = 1600, type = "lambda")
US$Invest_trend = Invest.decom$trend
US$Invest_cycle = Invest.decom$cycle
g <- ggplot(data = US) + 
geom_path(aes(x=TIME, y=Invest), color = "#8B0000", size = 0.75)+
geom_path(aes(x=TIME, y=Invest_trend), color = "#F4A460", size = 0.75)+
#geom_hline(aes(yintercept = 0), color = "#FFA07A")+
xlab("Время") + 
ylab("Инвестиции")+
theme_minimal()
fig <- ggplotly(g)
fig

Цикл

g <- ggplot(data = US) + 
geom_path(aes(x=TIME, y=Invest_cycle), color = "#8B0000", size = 0.75)+
geom_hline(aes(yintercept = 0), color = "#F4A460")+
xlab("Время") + 
ylab("Инвестиции")+
theme_minimal()
fig <- ggplotly(g)
fig
var(US$Invest_cycle)/var(US$GDP_cycle)
## [1] 0.3456617