#ATIVIDADE CÁLCULO 3 - Equações em diferenças no R #Marina Gavioli - 813320
#Biblioteca
library(ggplot2)
library(tidyverse)
## Warning: pacote 'tidyverse' foi compilado no R versão 4.4.2
## Warning: pacote 'readr' foi compilado no R versão 4.4.2
## Warning: pacote 'forcats' foi compilado no R versão 4.4.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ lubridate 1.9.3 ✔ tibble 3.2.1
## ✔ purrr 1.0.2 ✔ tidyr 1.3.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
X <- numeric(10)
X[1] = 10
for(i in 2:10){
X[i] = X[i -1] + 2
}
X
## [1] 10 12 14 16 18 20 22 24 26 28
Time <- 1:10
X_time <- tibble(X, Time)
ggplot(X_time, aes(x = Time, y = X)) +
geom_line()
#Exercício 1
Beta <- 1.1
t <- seq(from=0,to=30,by=1)
N <- numeric(length(t))
N[1] <- 10
for (h in seq_len(length(t)-1)) {
N[h+1] <- Beta*N[h]
}
ggplot(data=data.frame(t=t,N=N),mapping=aes(x=t,y=N))+geom_line()
#Exercício 2
betas <- c(0.9, 1.0, 1.1, 1.2)
t <- seq(from = 0, to = 30, by = 1)
trajectories <- data.frame()
for (Beta in betas) {
N <- numeric(length(t))
N[1] <- 10
for (h in seq_len(length(t) - 1)) {
N[h + 1] <- Beta * N[h]
}
trajectories <- rbind(trajectories, data.frame(t = t, N = N, Beta = Beta))
}
ggplot(trajectories, aes(x = t, y = N, color = as.factor(Beta))) +
geom_line() +
labs(
title = "Efeito do Valor de Beta sobre a Trajetória da Variável N",
x = "Tempo (t)",
y = "Valor de N",
color = "Beta"
) +
theme_minimal()
#Exercício 3
#Modelo Acelerador Multiplicador
b = 0.9 # propensao marginal a consumir
k = 0.5 # acelerador do investimento
G = 10 # gastos do governo (variável exógena)
n = 100 # número de replicações que iremos usar nas simulações a seguir
Y = rep(0,n)
C = rep(0,n)
Iind = rep(0,n)
I = rep(0,n)
Y[1] = 1 # renda nacional
for (t in 2:n){
C[t] = b*Y[t-1] # consumo das familias
Iind[t] = k*(C[t] - C[t-1]) #equação do Investimento (depende da variação do consumo)
I[t] = Iind[t] + G #soma do investimento com gastos do governo
Y[t] = C[t] + I[t] #identidade básica das contas nacionais para economia fechada
}
time = seq(1,n,1)
plot(time, Y, col="blue", type="o", pch=21)
par(new=TRUE)
lines(time, C, col="red", type="o", lty=2, pch=22)
par(new=FALSE)
lines(time, I, col="green", type="o", lty=2, pch=23)
par(new=FALSE)
title(xlab="time")
title(ylab="Y, C,I")
legend( "topright", c("Y","C", "I"), col=c("blue","red", "green"), pch=21:23,
lty=1:2, inset = .02, lwd=1, bty="n")
#Encontrando as raízes para Y
#a1 Y_(t) + a1 Y_(t-1)+ a0 Y_(t-2)= G
a2 = 1
a1 = -b*(k+1)
a0 = b*k
coefs = c(a0, a1, a2)
delta = a1*a1 -4*a2*a0 # calculando o discriminante (fórmula de báskara)
delta #retorna o valor de delta
## [1] 0.0225
#abaixo calcula os valores das raízes para os casos de raízes reais e também para o caso de raízes complexas.
if (delta >=0) {
roots = Re(polyroot( coefs ))
roots
} else {
R <- Mod(roots[1])
R
}
## [1] 0.60 0.75
#Exercício 4
#i) b = 0.9 e k =0.5
b = 0.9 # propensao marginal a consumir
k = 0.5 # acelerador do investimento
G = 10 # gastos do governo (variável exógena)
n = 100 # número de replicações que iremos usar nas simulações a seguir
Y = rep(0,n)
C = rep(0,n)
Iind = rep(0,n)
I = rep(0,n)
Y[1] = 1 # renda nacional
for (t in 2:n){
C[t] = b*Y[t-1] # consumo das familias
Iind[t] = k*(C[t] - C[t-1]) #equação do Investimento (depende da variação do consumo)
I[t] = Iind[t] + G #soma do investimento com gastos do governo
Y[t] = C[t] + I[t] #identidade básica das contas nacionais para economia fechada
}
time = seq(1,n,1)
plot(time, Y, col="blue", type="o", pch=21)
par(new=TRUE)
lines(time, C, col="red", type="o", lty=2, pch=22)
par(new=FALSE)
lines(time, I, col="green", type="o", lty=2, pch=23)
par(new=FALSE)
title(xlab="time")
title(ylab="Y, C,I")
legend( "topright", c("Y","C", "I"), col=c("blue","red", "green"), pch=21:23,
lty=1:2, inset = .02, lwd=1, bty="n")
#Encontrando as raízes para Y
#a1 Y_(t) + a1 Y_(t-1)+ a0 Y_(t-2)= G
a2 = 1
a1 = -b*(k+1)
a0 = b*k
coefs = c(a0, a1, a2)
delta = a1*a1 -4*a2*a0 # calculando o discriminante (fórmula de báskara)
delta #retorna o valor de delta
## [1] 0.0225
#abaixo calcula os valores das raízes para os casos de raízes reais e também para o caso de raízes complexas.
if (delta >=0) {
roots = Re(polyroot( coefs ))
roots
} else {
R <- Mod(roots[1])
R
}
## [1] 0.60 0.75
#ii) b = 0.5 e k =1.5
b = 0.5 # propensao marginal a consumir
k = 1.5 # acelerador do investimento
G = 10 # gastos do governo (variável exógena)
n = 100 # número de replicações que iremos usar nas simulações a seguir
Y = rep(0,n)
C = rep(0,n)
Iind = rep(0,n)
I = rep(0,n)
Y[1] = 1 # renda nacional
for (t in 2:n){
C[t] = b*Y[t-1] # consumo das familias
Iind[t] = k*(C[t] - C[t-1]) #equação do Investimento (depende da variação do consumo)
I[t] = Iind[t] + G #soma do investimento com gastos do governo
Y[t] = C[t] + I[t] #identidade básica das contas nacionais para economia fechada
}
time = seq(1,n,1)
plot(time, Y, col="blue", type="o", pch=21)
par(new=TRUE)
lines(time, C, col="red", type="o", lty=2, pch=22)
par(new=FALSE)
lines(time, I, col="green", type="o", lty=2, pch=23)
par(new=FALSE)
title(xlab="time")
title(ylab="Y, C,I")
legend( "topright", c("Y","C", "I"), col=c("blue","red", "green"), pch=21:23,
lty=1:2, inset = .02, lwd=1, bty="n")
a2 = 1
a1 = -b*(k+1)
a0 = b*k
coefs = c(a0, a1, a2)
delta = a1*a1 -4*a2*a0 # calculando o discriminante (fórmula de báskara)
delta #retorna o valor de delta
## [1] -1.4375
if (delta >=0) {
roots = Re(polyroot( coefs ))
roots
} else {
R <- Mod(roots[1])
R
}
## [1] 0.6
#iii) b = 0.5 e k =0.3
b = 0.5 # propensao marginal a consumir
k = 0.3 # acelerador do investimento
G = 10 # gastos do governo (variável exógena)
n = 100 # número de replicações que iremos usar nas simulações a seguir
Y = rep(0,n)
C = rep(0,n)
Iind = rep(0,n)
I = rep(0,n)
Y[1] = 1 # renda nacional
for (t in 2:n){
C[t] = b*Y[t-1] # consumo das familias
Iind[t] = k*(C[t] - C[t-1]) #equação do Investimento (depende da variação do consumo)
I[t] = Iind[t] + G #soma do investimento com gastos do governo
Y[t] = C[t] + I[t] #identidade básica das contas nacionais para economia fechada
}
time = seq(1,n,1)
plot(time, Y, col="blue", type="o", pch=21)
par(new=TRUE)
lines(time, C, col="red", type="o", lty=2, pch=22)
par(new=FALSE)
lines(time, I, col="green", type="o", lty=2, pch=23)
par(new=FALSE)
title(xlab="time")
title(ylab="Y, C,I")
legend( "topright", c("Y","C", "I"), col=c("blue","red", "green"), pch=21:23,
lty=1:2, inset = .02, lwd=1, bty="n")
a2 = 1
a1 = -b*(k+1)
a0 = b*k
coefs = c(a0, a1, a2)
delta = a1*a1 -4*a2*a0 # calculando o discriminante (fórmula de báskara)
delta #retorna o valor de delta
## [1] -0.1775
#abaixo calcula os valores das raízes para os casos de raízes reais e também para o caso de raízes complexas.
if (delta >=0) {
roots = Re(polyroot( coefs ))
roots
} else {
R <- Mod(roots[1])
R
}
## [1] 0.6
#iv) b = 0.9 e k = 2
b = 0.9 # propensao marginal a consumir
k = 2 # acelerador do investimento
G = 10 # gastos do governo (variável exógena)
n = 100 # número de replicações que iremos usar nas simulações a seguir
Y = rep(0,n)
C = rep(0,n)
Iind = rep(0,n)
I = rep(0,n)
Y[1] = 1 # renda nacional
for (t in 2:n){
C[t] = b*Y[t-1] # consumo das familias
Iind[t] = k*(C[t] - C[t-1]) #equação do Investimento (depende da variação do consumo)
I[t] = Iind[t] + G #soma do investimento com gastos do governo
Y[t] = C[t] + I[t] #identidade básica das contas nacionais para economia fechada
}
time = seq(1,n,1)
plot(time, Y, col="blue", type="o", pch=21)
par(new=TRUE)
lines(time, C, col="red", type="o", lty=2, pch=22)
par(new=FALSE)
lines(time, I, col="green", type="o", lty=2, pch=23)
par(new=FALSE)
title(xlab="time")
title(ylab="Y, C,I")
legend( "topright", c("Y","C", "I"), col=c("blue","red", "green"), pch=21:23,
lty=1:2, inset = .02, lwd=1, bty="n")
a2 = 1
a1 = -b*(k+1)
a0 = b*k
coefs = c(a0, a1, a2)
delta = a1*a1 -4*a2*a0 # calculando o discriminante (fórmula de báskara)
delta #retorna o valor de delta
## [1] 0.09
#abaixo calcula os valores das raízes para os casos de raízes reais e também para o caso de raízes complexas.
if (delta >=0) {
roots = Re(polyroot( coefs ))
roots
} else {
R <- Mod(roots[1])
R
}
## [1] 1.2 1.5
#Exercício 5
# (i) - Y (neutra e não oscilatória) / C (neutra e não oscilatória)
# (ii) - Y (convergente e oscilatória) / C (convergente e oscilatória)
# (iii) - Y (neutra e não oscilatória) / C (neutra e não oscilatória)
# (iv) - Y (explosiva e não oscilatória) / C (explosiva e não oscilatória)