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)