# NOT RUN {
### A benchmark plm without and with speed-up
library("plm")
library("collapse")
library("microbenchmark")
rm(list = ls())
data("wlddev", package = "collapse")
form <- LIFEEX ~ PCGDP + GINI
# produce big data set (taken from collapse's vignette)
wlddevsmall <- get_vars(wlddev, c("iso3c","year","OECD","PCGDP","LIFEEX","GINI","ODA"))
wlddevsmall$iso3c <- as.character(wlddevsmall$iso3c)
data <- replicate(100, wlddevsmall, simplify = FALSE)
rm(wlddevsmall)
uniquify <- function(x, i) {
x$iso3c <- paste0(x$iso3c, i)
x
}
data <- unlist2d(Map(uniquify, data, as.list(1:100)), idcols = FALSE)
data <- pdata.frame(data, index = c("iso3c", "year"))
pdim(data) # Balanced Panel: n = 21600, T = 59, N = 1274400 // but many NAs
# data <- na.omit(data)
# pdim(data) # Unbalanced Panel: n = 13300, T = 1-31, N = 93900
options("plm.fast" = FALSE) # default: fast functions of 'collapse' not in use
times <- 3 # no. of repetitions for benchmark - this takes quite long!
bench_res_plm_baseR <- microbenchmark(
plm(form, data = data, model = "within"),
plm(form, data = data, model = "within", effect = "twoways"),
plm(form, data = data, model = "random"),
plm(form, data = data, model = "random", effect = "twoways"),
times = times)
options("plm.fast" = TRUE)
bench_res_plm_collapse <- microbenchmark(
plm(form, data = data, model = "within"),
plm(form, data = data, model = "within", effect = "twoways"),
plm(form, data = data, model = "random"),
plm(form, data = data, model = "random", effect = "twoways"),
times = times)
print(bench_res_plm_baseR, unit = "s")
print(bench_res_plm_collapse, unit = "s")
# }
Run the code above in your browser using DataLab