## ----setup, include=FALSE-----------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  warning = FALSE,
  message = FALSE
)
library(csdm)

## ----data---------------------------------------------------------------------
data(PWT_60_07, package = "csdm")

keep_ids <- unique(PWT_60_07$id)[1:15]
dat <- subset(PWT_60_07, id %in% keep_ids & year >= 1970)

dim(dat)
range(dat$year)

## ----specifications-----------------------------------------------------------
form <- log_rgdpo ~ log_hc + log_ck + log_ngd
csa_vars <- c("log_rgdpo", "log_hc", "log_ck", "log_ngd")

static_csa <- csdm_csa(vars = csa_vars)
dynamic_csa <- csdm_csa(vars = csa_vars, lags = 3)
ardl_1_0 <- csdm_lr(type = "ardl", ylags = 1, xdlags = 0)

## ----mg-----------------------------------------------------------------------
fit_mg <- csdm(
  form, data = dat, id = "id", time = "year", model = "mg"
)
summary(fit_mg)

## ----cce----------------------------------------------------------------------
fit_cce <- csdm(
  form, data = dat, id = "id", time = "year", model = "cce",
  csa = static_csa
)
summary(fit_cce)

## ----dcce---------------------------------------------------------------------
fit_dcce <- csdm(
  form, data = dat, id = "id", time = "year", model = "dcce",
  csa = dynamic_csa,
  lr = ardl_1_0
)
summary(fit_dcce)

## ----cs-ardl------------------------------------------------------------------
fit_cs_ardl <- csdm(
  form, data = dat, id = "id", time = "year", model = "cs_ardl",
  csa = dynamic_csa,
  lr = ardl_1_0
)

summary(fit_cs_ardl)
coef(fit_cs_ardl, component = "long_run")

## ----methods------------------------------------------------------------------
coef(fit_cce)
sqrt(diag(vcov(fit_cce)))
nobs(fit_cce)
head(model.frame(fit_cce))

head(residuals(fit_cce, format = "long"))
head(fitted(fit_cce, format = "vector"))

## ----tidy, eval=FALSE---------------------------------------------------------
# broom::tidy(fit_cce, conf.int = TRUE)
# broom::glance(fit_cce)
# broom::augment(fit_cce)
# 
# modelsummary::modelsummary(
#   list(MG = fit_mg, CCE = fit_cce, DCCE = fit_dcce),
#   statistic = "std.error"
# )

## ----cd-tests-----------------------------------------------------------------
cd_test(fit_mg, type = "CD")
cd_test(fit_cce, type = "all", seed = 42)

## ----cd-balanced, eval=FALSE--------------------------------------------------
# cd_test(
#   fit_cce,
#   type = "all",
#   seed = 42,
#   na.action = "drop.incomplete.times"
# )

