Opgave 2.1 – Opdatering af DI’s forbrugertillidsindikator Opdatér DI’s forbrugertillidsindikator med data frem til og med 2022 fra artiklen “Forbruget fortsætter fremgangen i 2016” (Baum, 2016). Lav vurdering af om forbrugertillidsindikatoren fra DI fortsat er bedre end forbrugertillidsindikatoren fra DST.
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.3.6 ✔ purrr 0.3.4
## ✔ tibble 3.1.8 ✔ dplyr 1.0.10
## ✔ tidyr 1.2.1 ✔ stringr 1.4.1
## ✔ readr 2.1.3 ✔ forcats 0.5.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
library("dplyr")
library(lubridate)
##
## Vedhæfter pakke: 'lubridate'
##
## De følgende objekter er maskerede fra 'package:base':
##
## date, intersect, setdiff, union
library("ggpubr")
options(scipen = 100)
Get data:
fti <- readRDS('fti.RDS')
forbr <- readRDS('forbr.RDS')
Subset af data 2022Q3 som input til forecasting:
fti_q3_2022 <- fti[fti$date > '2022 Q2',]
Subset af FTI data, samme tidsserie som forbrug:
fti <- fti[fti$date > "1999 Q4" & fti$date < '2022 Q3', ]
Merge data til en df som input til lineær regressions model:
df <- merge(fti, forbr, by="date")
Ny kolonne med vækst som kategorisk data (vækst over eller under gns):
avg <- mean(df$vkst_pct)
avg
## [1] 0.01431006
df$vkst_fakt <- ifelse((df$vkst_pct > avg), 1, 0)
Beregning af DI’s forbrugertillids indikator, jvf.Baums artikel:
df$di_fti <- rowMeans(df[ , c(3,5,7,8)])
Lineær regr.model for forbrug ~ Di FTI indikator:
lm_di <- lm(vkst_pct ~ di_fti , data = df)
fi_cor <- cor(df$vkst_pct, df$di_fti)
str_c("R squared =", summary(lm_di)$r.squared, sep=" ")
## [1] "R squared = 0.350952387594057"
str_c("Correlation =", fi_cor, sep=" ")
## [1] "Correlation = 0.592412345916303"
Lineær regr.model for forbrug ~ DST’s FTI indikator:
lm_dst <- lm(vkst_pct ~ fti, data = df)
dst_cor <- cor(df$vkst_pct, df$fti)
str_c("R squared =", summary(lm_dst)$r.squared, sep=" ")
## [1] "R squared = 0.275283867602506"
str_c("Correlation =", dst_cor, sep=" ")
## [1] "Correlation = 0.524675011414214"
Nye kolonner med modellernes output:
df$fitted_di.lm <- lm_di$fitted.values
df$fitted_dst.lm <- lm_dst$fitted.values
Plot af faktiske værdier for forbrugsudvikling (%) mod forecast baseret på DI’s indikator:
plot(x = df$vkst_pct,
y = df$fitted_di.lm,
xlab = "Faktiske værdier",
ylab = "Forecastede værdier",
main = "Lin.regression forecast af vækst ud fra DI's indikator \n
mod faktiske værdier.")
abline(b = 1, a = 0)
Plot af faktiske værdier for forbrugsudvikling (%) mod forecast baseret på DST’s indikator:
plot(x = df$vkst_pct,
y = df$fitted_dst.lm,
xlab = "Faktiske værdier",
ylab = "Forecastede værdier",
main = "Lin.regression forecast af vækst ud fra DST's FTI indikator \n
mod faktiske værdier.")
abline(b = 1, a = 0)