## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(collapse = TRUE, comment = "#>")

## ----setup--------------------------------------------------------------------
library(fgls)

## ----table1-------------------------------------------------------------------
sim <- simulate_serial(500, seed = 7) # AR(1) 0.8, x_t = v_t + e_{t-1}
fits <- list(
  OLS = ols_robust(y ~ x, data = sim),
  `Cochrane-Orcutt` = cochrane_orcutt(y ~ x, data = sim),
  Durbin = durbin_estimator(y ~ x, data = sim),
  FGLS = serial_fgls(y ~ x, data = sim),
  `GLS (known rho)` = infeasible_gls(y ~ x, data = sim, rho = 0.8)
)
sapply(fits, function(f) coef(f)[["x"]])

## ----variance-----------------------------------------------------------------
fit <- fits$FGLS
cbind(robust = sqrt(diag(vcov(fit))), naive = sqrt(diag(vcov(fit, type = "naive"))))
fit$nonexogeneity_share

## ----ic-----------------------------------------------------------------------
plot(fit, which = 3)
fit$bic_path

## ----wallis-------------------------------------------------------------------
set.seed(3)
n <- 400
w <- rnorm(n + 1)
u <- as.numeric(stats::filter(rnorm(n + 1), 0.5, method = "recursive"))
yy <- numeric(n + 1)
for (t in 2:(n + 1)) yy[t] <- 0.4 * yy[t - 1] + 1 + w[t] + u[t]
dyn <- data.frame(y = yy[-1], ylag = yy[-(n + 1)], w = w[-1])
fit_dyn <- serial_fgls(y ~ ylag + w, data = dyn, lagged_dep_vars = "ylag")
coef(fit_dyn)
fit_dyn$rho

## ----gma----------------------------------------------------------------------
pred <- simulate_predictive(300, theta = -0.4, seed = 4)
serial_fgls(y ~ x, data = pred, serial = "ma1")

## ----predetermined------------------------------------------------------------
suppressWarnings(test_predetermined(y ~ x, data = sim))

