From a0d88d2fda2d8317668fd4d5ac485178ea9a1727 Mon Sep 17 00:00:00 2001 From: Sebastian Krantz Date: Sun, 19 May 2024 16:38:16 +0200 Subject: [PATCH 1/7] Minors description. --- DESCRIPTION | 4 ++-- README.md | 2 +- man/collapse-package.Rd | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index a489795a..b205d6a7 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: collapse Title: Advanced and Fast Data Transformation Version: 2.0.14 -Date: 2024-05-01 +Date: 2024-05-19 Authors@R: c( person("Sebastian", "Krantz", role = c("aut", "cre"), email = "sebastian.krantz@graduateinstitute.ch", @@ -28,7 +28,7 @@ Description: A C/C++ based package for advanced data transformation and (grouped, weighted) summary statistics, powerful tools to work with nested data, fast data object conversions, functions for memory efficient R programming, and helpers to effectively deal with variable labels, attributes, and missing data. - It is well integrated with base R classes, 'dplyr'/'tibble', 'data.table', 'sf', + It is well integrated with base R classes, 'dplyr'/'tibble', 'data.table', 'sf', 'units', 'plm' (panel-series and data frames), and 'xts'/'zoo'. URL: https://sebkrantz.github.io/collapse/, https://github.com/SebKrantz/collapse, diff --git a/README.md b/README.md index 53f03043..96d83144 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ * To facilitate complex data transformation, exploration and computing tasks in R. * To help make R code fast, flexible, parsimonious and programmer friendly. -It further implements a [class-agnostic approach to R programming](https://sebkrantz.github.io/collapse/articles/collapse_object_handling.html), supporting base R, *tibble*, *grouped_df* (*tidyverse*), *data.table*, *sf*, *pseries*, *pdata.frame* (*plm*), and preserving many others (e.g. *units*, *xts*/*zoo*, *tsibble*). +It further implements a [class-agnostic approach to R programming](https://sebkrantz.github.io/collapse/articles/collapse_object_handling.html), supporting base R, *tibble*, *grouped_df* (*tidyverse*), *data.table*, *sf*, *units*, *pseries*, *pdata.frame* (*plm*), and *xts*/*zoo*. **Key Features:** diff --git a/man/collapse-package.Rd b/man/collapse-package.Rd index 8a415a8c..3ae8108c 100644 --- a/man/collapse-package.Rd +++ b/man/collapse-package.Rd @@ -12,7 +12,7 @@ Advanced and Fast Data Transformation \item To help make R code fast, flexible, parsimonious and programmer friendly. % \emph{collapse} is a fast %to facilitate (advanced) data manipulation in R % To achieve the latter, % collapse provides a broad set.. -> Nah, its not a misc package } -It is made compatible with the \emph{tidyverse}, \emph{data.table}, \emph{sf} and the \emph{plm} approach to panel data, and non-destructively handles other classes such as \emph{xts}. +It is made compatible with the \emph{tidyverse}, \emph{data.table}, \emph{sf}, \emph{units}, \emph{xts/zoo}, and the \emph{plm} approach to panel data. } \section{Getting Started}{ From 80093d5917e58e7f70e8037e8ec1f3a0486c868c Mon Sep 17 00:00:00 2001 From: Sebastian Krantz Date: Sun, 19 May 2024 17:42:29 +0200 Subject: [PATCH 2/7] NEWS for #574 fix. --- NEWS.md | 2 ++ vignettes/collapse_and_data.table.Rmd | 2 ++ vignettes/collapse_and_dplyr.Rmd | 2 ++ vignettes/collapse_and_plm.Rmd | 2 ++ 4 files changed, 8 insertions(+) diff --git a/NEWS.md b/NEWS.md index b8891de0..e7d69525 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,7 @@ # collapse 2.0.14 +* Fixed a bug in `join()` where a full join silently became a left join if there are no matches between the tables (#574). Thanks @D3SL for reporting. + * Added function `group_by_vars()`: A standard evaluation version of `fgroup_by()` that is slimmer and safer for programming, e.g. `data |> group_by_vars(ind1) |> collapg(custom = list(fmean = ind2, fsum = ind3))`. Or, using *magrittr*: ```r library(magrittr) diff --git a/vignettes/collapse_and_data.table.Rmd b/vignettes/collapse_and_data.table.Rmd index 94210f5f..5951d33a 100644 --- a/vignettes/collapse_and_data.table.Rmd +++ b/vignettes/collapse_and_data.table.Rmd @@ -11,6 +11,8 @@ vignette: > %\VignetteIndexEntry{collapse and data.table} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} +params: + cache: true --- ```{css, echo=FALSE} diff --git a/vignettes/collapse_and_dplyr.Rmd b/vignettes/collapse_and_dplyr.Rmd index a795d3d5..143958f6 100644 --- a/vignettes/collapse_and_dplyr.Rmd +++ b/vignettes/collapse_and_dplyr.Rmd @@ -11,6 +11,8 @@ vignette: > %\VignetteIndexEntry{collapse and dplyr} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} +params: + cache: true --- ```{css, echo=FALSE} diff --git a/vignettes/collapse_and_plm.Rmd b/vignettes/collapse_and_plm.Rmd index a110401e..ebd8f45c 100644 --- a/vignettes/collapse_and_plm.Rmd +++ b/vignettes/collapse_and_plm.Rmd @@ -11,6 +11,8 @@ vignette: > %\VignetteIndexEntry{collapse and plm} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} +params: + cache: true --- ```{css, echo=FALSE} From 780398c79b993db867739f1c5fe7261039e0a33e Mon Sep 17 00:00:00 2001 From: Sebastian Krantz Date: Sun, 19 May 2024 21:44:15 +0200 Subject: [PATCH 3/7] Adding function as_integer_factor(). --- NAMESPACE | 1 + NEWS.md | 2 ++ R/global_macros.R | 4 ++-- R/small_helper.R | 10 ++++++++++ man/collapse-documentation.Rd | 2 +- man/quick-conversion.Rd | 9 ++++++--- 6 files changed, 22 insertions(+), 6 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index 025c17ae..cccbc52f 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -405,6 +405,7 @@ importFrom("stats", "as.formula", "complete.cases", "cor", "cov", "var", "pt", export(fncol) export(fdim) export(as_numeric_factor) + export(as_integer_factor) export(as_character_factor) export(as.numeric_factor) export(as.character_factor) diff --git a/NEWS.md b/NEWS.md index e7d69525..12f00899 100644 --- a/NEWS.md +++ b/NEWS.md @@ -17,6 +17,8 @@ data %>% } ``` +* Added function `as_integer_factor()` to turn factors/factor columns into integer vectors. `as_numeric_factor()` already exists, but is memory inefficient for most factors where levels can be integers. + * `join()` now internally checks if the rows of the joined datasets match exactly. This check, using `identical(m, seq_row(y))`, is inexpensive, but, if `TRUE`, saves a full subset and deep copy of `y`. Thus `join()` now inherits the intelligence already present in functions like `fsubset()`, `roworder()` and `funique()` - a key for efficient data manipulation is simply doing less. * In `join()`, if `attr = TRUE`, the `count` option to `fmatch()` is always invoked, so that the attribute attached always has the same form, regardless of `verbose` or `validate` settings. diff --git a/R/global_macros.R b/R/global_macros.R index 2d59c083..96572bb8 100644 --- a/R/global_macros.R +++ b/R/global_macros.R @@ -105,7 +105,7 @@ get_collapse <- function(opts = NULL) if(is.null(opts)) as.list(.op) else if(len "%r-%", "%r*%", "%r/%", "%r+%", "%rr%", "add_stub", "add_vars", "add_vars<-", "all_funs", "all_identical", "all_obj_equal", "allNA", "alloc", "allv", "any_duplicated", "anyv", "as_character_factor", - "as_factor_GRP", "as_factor_qG", "as_numeric_factor", "as.character_factor", + "as_factor_GRP", "as_factor_qG", "as_numeric_factor", "as_integer_factor", "as.character_factor", "as.factor_GRP", "as.factor_qG", "as.numeric_factor", "atomic_elem", "atomic_elem<-", "av", "av<-", "B", "BY", "BY.data.frame", "BY.default", "BY.matrix", "cat_vars", "cat_vars<-", "char_vars", "char_vars<-", @@ -177,7 +177,7 @@ get_collapse <- function(opts = NULL) if(is.null(opts)) as.list(.op) else if(len .COLLAPSE_ALL <- sort(unique(c("%-=%", "%!=%", "%!iin%", "%!in%", "%*=%", "%/=%", "%+=%", "%=%", "%==%", "%c-%", "%c*%", "%c/%", "%c+%", "%cr%", "%iin%", "%r-%", "%r*%", "%r/%", "%r+%", "%rr%", "add_stub", "add_vars", "add_vars<-", "all_funs", "all_identical", "all_obj_equal", "allNA", "alloc", "allv", "any_duplicated", "anyv", "as_character_factor", - "as_factor_GRP", "as_factor_qG", "as_numeric_factor", "atomic_elem", "atomic_elem<-", "av", "av<-", "B", "BY", + "as_factor_GRP", "as_factor_qG", "as_numeric_factor", "as_integer_factor", "atomic_elem", "atomic_elem<-", "av", "av<-", "B", "BY", "cat_vars", "cat_vars<-", "char_vars", "char_vars<-", "cinv", "ckmatch", "collap", "collapg", "collapv", "colorder", "colorderv", "copyAttrib", "copyMostAttrib", "copyv", "D", "dapply", "date_vars", "Date_vars", "date_vars<-", "Date_vars<-", "descr", "Dlog", "fact_vars", "fact_vars<-", "fbetween", "fcompute", "fcomputev", "fcount", diff --git a/R/small_helper.R b/R/small_helper.R index c1d0db5a..4e74e79c 100644 --- a/R/small_helper.R +++ b/R/small_helper.R @@ -501,6 +501,16 @@ as_numeric_factor <- function(X, keep.attr = TRUE) { res } +as_integer_factor <- function(X, keep.attr = TRUE) { + if(is.atomic(X)) if(keep.attr) return(ffka(X, as.integer)) else + return(as.integer(attr(X, "levels"))[X]) + res <- duplAttributes(lapply(unattrib(X), + if(keep.attr) (function(y) if(is.factor(y)) ffka(y, as.integer) else y) else + (function(y) if(is.factor(y)) as.integer(attr(y, "levels"))[y] else y)), X) + if(inherits(X, "data.table")) return(alc(res)) + res +} + as_character_factor <- function(X, keep.attr = TRUE) { if(is.atomic(X)) if(keep.attr) return(ffka(X, tochar)) else return(as.character.factor(X)) diff --git a/man/collapse-documentation.Rd b/man/collapse-documentation.Rd index 644c31e8..0d1e48a5 100644 --- a/man/collapse-documentation.Rd +++ b/man/collapse-documentation.Rd @@ -26,7 +26,7 @@ The following table fully summarizes the contents of \emph{\link{collapse}}. The \link[=fast-data-manipulation]{Fast Data Manipulation} \tab\tab Fast and flexible select, subset, summarise, mutate/transform, sort/reorder, combine, join, reshape, rename and relabel data. Some functions modify by reference and/or allow assignment. In addition a set of (standard evaluation) functions for fast selecting, replacing or adding data frame columns, including shortcuts to select and replace variables by data type. \tab\tab \code{\link[=fselect]{fselect(<-)}}, \code{\link[=fsubset]{fsubset/ss}}, \code{\link{fsummarise}}, \code{\link{fmutate}}, \code{\link{across}}, \code{\link[=ftransform]{(f/set)transform(v)(<-)}}, \code{\link[=fcompute]{fcompute(v)}}, \code{\link[=roworder]{roworder(v)}}, \code{\link[=colorder]{colorder(v)}}, \code{\link{rowbind}}, \code{\link{join}}, \code{\link{pivot}}, \code{\link[=frename]{(f/set)rename}}, \code{\link[=relabel]{(set)relabel}}, \code{\link[=get_vars]{get_vars(<-)}}, \code{\link[=add_vars]{add_vars(<-)}}, \code{\link[=num_vars]{num_vars(<-)}}, \code{\link[=cat_vars]{cat_vars(<-)}}, \code{\link[=char_vars]{char_vars(<-)}}, \code{\link[=fact_vars]{fact_vars(<-)}}, \code{\link[=logi_vars]{logi_vars(<-)}}, \code{\link[=date_vars]{date_vars(<-)}} \cr \cr \cr -\link[=quick-conversion]{Quick Data Conversion} \tab\tab Quick conversions: data.frame <> data.table <> tibble <> matrix (row- or column-wise) <> list | array > matrix, data.frame, data.table, tibble | vector > factor, matrix, data.frame, data.table, tibble; and converting factors / all factor columns. \tab\tab \code{qDF}, \code{qDT}, \code{qTBL}, \code{qM}, \code{qF}, \code{mrtl}, \code{mctl}, \code{as_numeric_factor}, \code{as_character_factor} \cr \cr \cr +\link[=quick-conversion]{Quick Data Conversion} \tab\tab Quick conversions: data.frame <> data.table <> tibble <> matrix (row- or column-wise) <> list | array > matrix, data.frame, data.table, tibble | vector > factor, matrix, data.frame, data.table, tibble; and converting factors / all factor columns. \tab\tab \code{qDF}, \code{qDT}, \code{qTBL}, \code{qM}, \code{qF}, \code{mrtl}, \code{mctl}, \code{as_numeric_factor}, \code{as_integer_factor}, \code{as_character_factor} \cr \cr \cr \link[=advanced-aggregation]{Advanced Data Aggregation} \tab\tab Fast and easy (weighted and parallelized) aggregation of multi-type data, with different functions applied to numeric and categorical variables. Custom specifications allow mappings of functions to variables + renaming. \tab\tab \code{collap(v/g)} \cr \cr \cr diff --git a/man/quick-conversion.Rd b/man/quick-conversion.Rd index a9620506..8126a28d 100644 --- a/man/quick-conversion.Rd +++ b/man/quick-conversion.Rd @@ -8,6 +8,7 @@ \alias{mctl} \alias{mrtl} \alias{as_numeric_factor} +\alias{as_integer_factor} \alias{as_character_factor} %- Also NEED an '\alias' for EACH other topic documented here. \title{Quick Data Conversion} @@ -18,7 +19,7 @@ Fast, flexible and precise conversion of common data objects, without method dis \item \code{qM} converts vectors, higher-dimensional arrays, data frames and suitable lists to matrix. \item \code{mctl} and \code{mrtl} column- or row-wise convert a matrix to list, data frame or \emph{data.table}. They are used internally by \code{qDF/qDT/qTBL}, \code{\link{dapply}}, \code{\link{BY}}, etc\dots \item \code{\link{qF}} converts atomic vectors to factor (documented on a separate page). -\item \code{as_numeric_factor} and \code{as_character_factor} convert factors, or all factor columns in a data frame / list, to character or numeric (by converting the levels). +\item \code{as_numeric_factor}, \code{as_integer_factor}, and \code{as_character_factor} convert factors, or all factor columns in a data frame / list, to character or numeric (by converting the levels). } } \usage{ @@ -37,12 +38,13 @@ mrtl(X, names = FALSE, return = "list") # Converting factors or factor columns as_numeric_factor(X, keep.attr = TRUE) + as_integer_factor(X, keep.attr = TRUE) as_character_factor(X, keep.attr = TRUE) } %- maybe also 'usage' for other objects documented here. \arguments{ - \item{X}{a vector, factor, matrix, higher-dimensional array, data frame or list. \code{mctl} and \code{mrtl} only accept matrices, \code{as_numeric_factor} and \code{as_character_factor} only accept factors, data frames or lists.} + \item{X}{a vector, factor, matrix, higher-dimensional array, data frame or list. \code{mctl} and \code{mrtl} only accept matrices, \code{as_numeric_factor}, \code{as_integer_factor} and \code{as_character_factor} only accept factors, data frames or lists.} \item{row.names.col}{can be used to add an column saving names or row.names when converting objects to data frame using \code{qDF/qDT/qTBL}. \code{TRUE} will add a column \code{"row.names"}, or you can supply a name e.g. \code{row.names.col = "variable"}. With \code{qM}, the argument has the opposite meaning, and can be used to select one or more columns in a data frame/list which will be used to create the rownames of the matrix e.g. \code{qM(iris, row.names.col = "Species")}. In this case the column(s) can be specified using names, indices, a logical vector or a selector function. See Examples.} \item{keep.attr}{logical. \code{FALSE} (default) yields a \emph{hard} / \emph{thorough} object conversion: All unnecessary attributes are removed from the object yielding a plain matrix / data.frame / \emph{data.table}. \code{FALSE} yields a \emph{soft} / \emph{minimal} object conversion: Only the attributes 'names', 'row.names', 'dim', 'dimnames' and 'levels' are modified in the conversion. Other attributes are preserved. See also \code{class}.} \item{class}{if a vector of classes is passed here, the converted object will be assigned these classes. If \code{NULL} is passed, the default classes are assigned: \code{qM} assigns no class, \code{qDF} a class \code{"data.frame"}, and \code{qDT} a class \code{c("data.table", "data.frame")}. If \code{keep.attr = TRUE} and \code{class = NULL} and the object already inherits the default classes, further inherited classes are preserved. See Details and the Example. } @@ -77,7 +79,8 @@ The default \code{keep.attr = FALSE} ensures \emph{hard} conversions so that all \code{qM} - returns a matrix\cr \code{mctl}, \code{mrtl} - return a list, data frame or \emph{data.table} \cr \code{qF} - returns a factor\cr -\code{as_numeric_factor} - returns X with factors converted to numeric variables\cr +\code{as_numeric_factor} - returns X with factors converted to numeric (double) variables\cr +\code{as_integer_factor} - returns X with factors converted to integer variables\cr \code{as_character_factor} - returns X with factors converted to character variables } % \note{ From d1cd977859c15a7e0bdfcd0ac076810daa0c87ae Mon Sep 17 00:00:00 2001 From: Sebastian Krantz Date: Mon, 20 May 2024 00:06:06 +0200 Subject: [PATCH 4/7] Update collapse and sf vignette. --- NEWS.md | 2 + vignettes/collapse_and_sf.Rmd | 137 ++++++++++++++++++++++++---------- 2 files changed, 100 insertions(+), 39 deletions(-) diff --git a/NEWS.md b/NEWS.md index 12f00899..b6510677 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,7 @@ # collapse 2.0.14 +* Updated '*collapse* and *sf*' vignette to reflect the recent support for *units* objects, and added a few more examples. + * Fixed a bug in `join()` where a full join silently became a left join if there are no matches between the tables (#574). Thanks @D3SL for reporting. * Added function `group_by_vars()`: A standard evaluation version of `fgroup_by()` that is slimmer and safer for programming, e.g. `data |> group_by_vars(ind1) |> collapg(custom = list(fmean = ind2, fsum = ind3))`. Or, using *magrittr*: diff --git a/vignettes/collapse_and_sf.Rmd b/vignettes/collapse_and_sf.Rmd index bb8cc95c..954a1bf3 100644 --- a/vignettes/collapse_and_sf.Rmd +++ b/vignettes/collapse_and_sf.Rmd @@ -1,8 +1,8 @@ --- title: "collapse and sf" subtitle: "Fast Manipulation of Simple Features Data Frames" -author: "Sebastian Krantz, with a contribution by Grant McDermott" -date: "2021-08-09" +author: "Sebastian Krantz and Grant McDermott" +date: "2024-04-19" output: rmarkdown::html_vignette: toc: true @@ -26,7 +26,8 @@ pre[class] { ```{r, echo = FALSE, message = FALSE, warning=FALSE} -NMAC <- Sys.getenv("NMAC") == "TRUE" +NMAC <- nchar(system.file("shape/nc.shp", package = "sf")) > 1 # Sys.getenv("NMAC") == "TRUE" + if(NMAC) library(sf) library(microbenchmark) library(collapse) @@ -44,11 +45,11 @@ set.seed(101) 1. To facilitate complex data transformation, exploration and computing tasks in R. 2. To help make R code fast, flexible, parsimonious and programmer friendly. --> -This short vignette focuses on using *collapse* with the popular *sf* package by Edzer Pebesma. It shows that *collapse* supports easy manipulation of *sf* data frames, at computation speeds far above *dplyr*. +This short vignette focuses on using *collapse* with the popular *sf* package by Edzer Pebesma. It shows that *collapse* supports easy manipulation of *sf* data frames, at computation speeds far above *dplyr*. -*collapse* is class-agnostic and can theoretically be used to manipulate any kind of list, matrix or data frame based object. Previous versions of *collapse* could manipulate *sf* data frames, but required users to manually include the geometry column when using functions like in `fselect` and `fsubset`, and exclude it in other functions like `qsu`. +*collapse* v1.6.0 added internal support for *sf* data frames by having most essential functions (e.g., `fselect/gv`, `fsubset/ss`, `fgroup_by`, `findex_by`, `qsu`, `descr`, `varying`, `funique`, `roworder`, `rsplit`, `fcompute`, ...) internally handle the geometry column. -Version 1.6.0 of the package adds internal support for *sf* data frames where the geometry column is handled by most essential functions (`fselect`, `get_vars`, `num_vars`, `fsubset`, `ss`, `fgroup_by`, `qsu`, `descr`, `varying`, `funique`, `roworder`, `rsplit`, `fcompute`, ...). This largely does not affect previously written code where the geometry column is explicitly selected. To demonstrate these features, we can load a test dataset provided by *sf*: +To demonstrate this, we can load a test dataset provided by *sf*: ```{r, eval=NMAC} library(collapse) @@ -61,7 +62,7 @@ nc ## Summarising sf Data Frames -The first thing that *collapse* 1.6.0 adds is summary statistics for *sf* data frames that automatically exclude the 'geometry' column: +Computing summary statistics on *sf* data frames automatically excludes the 'geometry' column: ```{r, eval=NMAC} # Which columns have at least 2 non-missing distinct values @@ -77,7 +78,7 @@ descr(nc) ## Selecting Columns and Subsetting -We can now also easily select columns from the *sf* data frame without having to worry about taking along 'geometry': +We can select columns from the *sf* data frame without having to worry about taking along 'geometry': ```{r, eval=NMAC} # Selecting a sequence of columns @@ -90,14 +91,14 @@ gv(nc, c("AREA", "NAME", "FIPS", "FIPSNO")) The same applies to subsetting rows (and columns): ```{r, eval=NMAC} -# A fast and enhanced version of base::subset, now also supporting sf data +# A fast and enhanced version of base::subset fsubset(nc, AREA > fmean(AREA), AREA, NAME:FIPSNO) # A fast version of `[` (where i is used and optionally j) ss(nc, 1:10, c("AREA", "NAME", "FIPS", "FIPSNO")) ``` -This is significantly faster than using `[`, `dplyr::select` or `dplyr::filter`: +This is significantly faster than using `[`, `base::subset()`, `dplyr::select()` or `dplyr::filter()`: ```{r, eval=NMAC} library(microbenchmark) @@ -110,17 +111,19 @@ microbenchmark(collapse = fselect(nc, AREA, NAME:FIPSNO), sf = nc[c("AREA", "NAME", "FIPS", "FIPSNO")]) # Subsetting microbenchmark(collapse = fsubset(nc, AREA > fmean(AREA), AREA, NAME:FIPSNO), - dplyr = select(nc, AREA, NAME:FIPSNO) %>% filter(AREA > fmean(AREA)), + dplyr = select(nc, AREA, NAME:FIPSNO) |> filter(AREA > fmean(AREA)), collapse2 = ss(nc, 1:10, c("AREA", "NAME", "FIPS", "FIPSNO")), sf = nc[1:10, c("AREA", "NAME", "FIPS", "FIPSNO")]) ``` -It needs to be noted that at this point *collapse* functions don't subset the 'agr' attribute on selecting columns, which (if specified) relates columns (attributes) to the geometry, and also don't modify the 'bbox' attribute giving the overall boundaries of a set of geometries when subsetting the *sf* data frame. Keeping the full 'agr' attribute is not problematic for all practical purposes, but not changing 'bbox' upon subsetting may lead to too large margins when plotting the geometries of a subsetted *sf* data frame. +However, *collapse* functions don't subset the 'agr' attribute on selecting columns, which (if specified) relates columns (attributes) to the geometry, and also don't modify the 'bbox' attribute giving the overall boundaries of a set of geometries when subsetting the *sf* data frame. Keeping the full 'agr' attribute is not problematic for all practical purposes, but not changing 'bbox' upon subsetting may lead to too large margins when plotting the geometries of a subset *sf* data frame. + +One way to to change this is calling `st_make_valid()` on the subset frame; but `st_make_valid()` is very expensive, thus unless the subset frame is very small, it is better to use `[`, `base::subset()` or `dplyr::filter()` in cases where the bounding box size matters. ## Aggregation and Grouping -The flexibility and speed of `collap` for aggregation can be used on *sf* data frames. A separate method for *sf* objects was not considered necessary as one can simply aggregate the geometry column using `st_union`: +The flexibility and speed of `collap()` for aggregation can be used on *sf* data frames. A separate method for *sf* objects was not considered necessary as one can simply aggregate the geometry column using `st_union()`: ```{r, eval=NMAC} # Aggregating by variable SID74 using the median for numeric and the mode for categorical columns @@ -129,59 +132,88 @@ collap(nc, ~ SID74, custom = list(fmedian = is.numeric, st_union = "geometry")) # or use is.list to fetch the geometry ``` -*sf* data frames can also be grouped and then aggregated using `fsummarise`: +*sf* data frames can also be grouped and then aggregated using `fsummarise()`: ```{r, eval=NMAC} -nc %>% fgroup_by(SID74) +nc |> fgroup_by(SID74) -nc %>% fgroup_by(SID74) %>% +nc |> + fgroup_by(SID74) |> fsummarise(AREA_Ag = fsum(AREA), Perimeter_Ag = fmedian(PERIMETER), geometry = st_union(geometry)) ``` -It needs to be noted here that typically most of the time in aggregation is consumed by `st_union` so that the speed of *collapse* does not really become visible on most datasets. One exception is spatial panel data when aggregating over the time-dimension with identical geometries for each id over time. Such panels can quickly be aggregated using `ffirst` or `flast` to aggregate the geometry: +Typically most of the time in aggregation is consumed by `st_union()` so that the speed of *collapse* does not really become visible on most datasets. A faster alternative is to use *geos* (*sf* backend for planar geometries) or *s2* (*sf* backend for spherical geometries) directly: + +```{r, eval=NMAC} +# Using s2 backend: sensible for larger tasks +nc |> + fmutate(geometry = s2::as_s2_geography(geometry)) |> + fgroup_by(SID74) |> + fsummarise(AREA_Ag = fsum(AREA), + Perimeter_Ag = fmedian(PERIMETER), + geometry = s2::s2_union_agg(geometry)) |> + fmutate(geometry = st_as_sfc(geometry)) +``` + +In general, also upon aggregation with *collapse*, functions `st_as_sfc()`, `st_as_sf()`, or, in the worst case, `st_make_valid()`, may need to be invoked to ensure valid *sf* object output. Functions `collap()` and `fsummarise()` are attribute preserving but do not give special regard to geometry columns. + +One exception that both avoids the high cost of spatial functions in aggregation and any need for ex-post conversion/validation is aggregating spatial panel data over the time-dimension. Such panels can quickly be aggregated using `ffirst()` or `flast()` to aggregate the geometry: ```{r, eval=NMAC} # Creating a panel-dataset by simply duplicating nc for 2 different years -pnc <- list(`2000` = nc, `2001` = nc) %>% unlist2d("Year") %>% copyMostAttrib(nc) +pnc <- rowbind(`2000` = nc, `2001` = nc, idcol = "Year") |> as_integer_factor() pnc # Aggregating by NAME, using the last value for all categorical data collap(pnc, ~ NAME, fmedian, catFUN = flast, cols = -1L) # Using fsummarise to aggregate just two variables and the geometry -pnc_ag <- pnc %>% fgroup_by(NAME) %>% +pnc_ag <- pnc |> + fgroup_by(NAME) |> fsummarise(AREA_Ag = fsum(AREA), Perimeter_Ag = fmedian(PERIMETER), geometry = flast(geometry)) -# The geometry is still valid... +# The geometry is still valid... (slt = shorthand for fselect) plot(slt(pnc_ag, AREA_Ag)) ``` +## Indexing + +*sf* data frames can also become [*indexed frames*](https://sebkrantz.github.io/collapse/reference/indexing.html) (spatio-temporal panels): + +```{r, eval=NMAC} +pnc <- pnc |> findex_by(CNTY_ID, Year) +pnc +qsu(pnc$AREA) +settransform(pnc, AREA_diff = fdiff(AREA)) +psmat(pnc$AREA_diff) |> head() +pnc <- unindex(pnc) +``` ## Unique Values, Ordering, Splitting, Binding -Functions `funique` and `roworder(v)` work on sf data frames and ignore the geometry column for determining the unique values / order of rows. `rsplit` can be used to (recursively) split an *sf* data frame into multiple chunks. +Functions `funique()` and `roworder[v]()` ignore the 'geometry' column in determining the unique values / order of rows when applied to *sf* data frames. `rsplit()` can be used to (recursively) split an *sf* data frame into multiple chunks. ```{r, eval=NMAC} # Splitting by SID74 -rsplit(nc, ~ SID74) %>% head(2) +rsplit(nc, ~ SID74) |> head(2) ``` -It should be noted here that the default in `rsplit` for data frames is `simplify = TRUE`, which for a single LHS variable would just split the column-vector. This does not apply to *sf* data frames as the 'geometry' column is always selected as well. +The default in `rsplit()` for data frames is `simplify = TRUE`, which, for a single LHS variable, would just split the column-vector. This does not apply to *sf* data frames as the 'geometry' column is always selected as well. ```{r, eval=NMAC} # Only splitting Area -rsplit(nc, AREA ~ SID74) %>% head(1) +rsplit(nc, AREA ~ SID74) |> head(1) # For data frames the default simplify = TRUE drops the data frame structure -rsplit(qDF(nc), AREA ~ SID74) %>% head(1) +rsplit(qDF(nc), AREA ~ SID74) |> head(1) ``` -*sf* data frames can be combined using `rowbind()`, which will preserve the attributes of the first object. +*sf* data frames can be combined using `rowbind()`, which, by default, preserves the attributes of the first object. ```{r, eval=NMAC} # Splitting by each row and recombining @@ -191,40 +223,67 @@ identical(nc, nc_combined) ## Transformations -For transforming and computing columns, `ftransform(v)` and `settransform(v)` apply as to any other data frame. - +For transforming and computing columns, `fmutate()` and `ftransform[v]()` apply as to any other data frame. ```{r, eval=NMAC} -ftransform(nc, scaled_AREA = fscale(AREA), - gsum_AREA = fsum(AREA, SID74, TRA = "replace_fill")) +fmutate(nc, gsum_AREA = fsum(AREA, SID74, TRA = "fill")) |> head() -# settransform materializes the change, same as nc <- ftransform(nc, ...) -settransform(nc, scaled_AREA = fscale(AREA), - gsum_AREA = fsum(AREA, SID74, TRA = "replace_fill")) -nc +# Same thing, more expensive +nc |> fgroup_by(SID74) |> fmutate(gsum_AREA = fsum(AREA)) |> fungroup() |> head() ``` -Special attention to *sf* data frames is afforded by `fcompute`, which can be used to compute new columns dropping existing ones - except for the geometry column and any columns selected through the `keep` argument. +Special attention to *sf* data frames is afforded by `fcompute()`, which can be used to compute new columns dropping existing ones - except for the geometry column and any columns selected through the `keep` argument. ```{r, eval=NMAC} fcompute(nc, scaled_AREA = fscale(AREA), - gsum_AREA = fsum(AREA, SID74, TRA = "replace_fill"), + gsum_AREA = fsum(AREA, SID74, TRA = "fill"), keep = .c(AREA, SID74)) ``` ## Conversion to and from *sf* -The quick converters `qDF`, `qDT` and `qTBL` can be used to very efficiently convert *sf* data frames to standard data frames, *data.table*'s or *tibbles*, and the result can be converted back to the original *sf* data frame using `setAttrib`, `copyAttrib` or `copyMostAttrib`. +The quick converters `qDF()`, `qDT()`, and `qTBL()` can be used to efficiently convert *sf* data frames to standard data frames, *data.table*'s or *tibbles*, and the result can be converted back to the original *sf* data frame using `setAttrib()`, `copyAttrib()` or `copyMostAttrib()`. ```{r, eval=NMAC} library(data.table) -qDT(nc)[, list(roll_AREA = frollmean(AREA, 2), geometry), by = SID74] %>% copyMostAttrib(nc) +# Create a data.table on the fly to do an fast grouped rolling mean and back to sf +qDT(nc)[, list(roll_AREA = frollmean(AREA, 2), geometry), by = SID74] |> copyMostAttrib(nc) +``` + +The easiest way to strip a geometry column off an *sf* data frame is via the function `atomic_elem()`, which removes list-like columns and, by default, also the class attribute. For example, we can create a *data.table* without list column using + +```{r, eval=NMAC} +qDT(atomic_elem(nc)) |> head() ``` +This is also handy for other functions such as `join()` and `pivot()`, which are class agnostic like all of *collapse*, but do not have any built-in logic to deal with the *sf* column. + +```{r, eval=NMAC} +# Use atomic_elem() to strip geometry off y in left join +identical(nc, join(nc, atomic_elem(nc), overid = 2)) +# In pivot: presently need to specify what to do with geometry column +pivot(nc, c("CNTY_ID", "geometry")) |> head() +# Or use +pivot(qDT(atomic_elem(nc)), "CNTY_ID") |> head() +``` + +## Support for *units* + +Since v2.0.13, *collapse* explicitly supports/preserves *units* objects through dedicated methods that preserve the 'units' class wherever sensible. + +```{r, eval=NMAC} +nc_dist <- st_centroid(nc) |> st_distance() +nc_dist[1:3, 1:3] + +fmean(nc_dist) |> head() +fndistinct(nc_dist) |> head() +``` ## Conclusion -*collapse* provides no deep integration with the *sf* ecosystem, but sufficient features and flexibility to painlessly manipulate *sf* data frames with much greater performance. +*collapse* provides no deep integration with the *sf* ecosystem and cannot perform spatial operations, but offers sufficient features and flexibility to painlessly manipulate *sf* data frames at much greater speeds than *dplyr*. + +This requires a bit of care by the user though to ensure that the returned *sf* objects are valid, especially following aggregation and subsetting. ```{r, echo=FALSE} From 32ef31d747fed37a04b9611a2d115500c763dbf6 Mon Sep 17 00:00:00 2001 From: Sebastian Krantz Date: Mon, 20 May 2024 00:08:13 +0200 Subject: [PATCH 5/7] Add collapse and sf to updated vignettes list. --- _pkgdown.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_pkgdown.yml b/_pkgdown.yml index 2553cb89..40109646 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -210,6 +210,7 @@ articles: contents: - collapse_documentation - collapse_for_tidyverse_users + - collapse_and_sf - collapse_object_handling - title: Legacy (Pre v1.7) desc: Vignettes that cover functionality of versions <1.7. These @@ -219,5 +220,4 @@ articles: - collapse_and_dplyr - collapse_and_data.table - collapse_and_plm - - collapse_and_sf From 810e860ec49dff0acd48fa050ffea9373535eab6 Mon Sep 17 00:00:00 2001 From: Sebastian Krantz Date: Mon, 20 May 2024 15:51:40 +0200 Subject: [PATCH 6/7] Precompute old vignettes. --- vignettes/collapse_and_data.table.Rmd | 897 +++++- vignettes/collapse_and_data.table.Rmd.orig | 434 +++ vignettes/collapse_and_dplyr.Rmd | 1166 +++++++- vignettes/collapse_and_dplyr.Rmd.orig | 1109 ++++++++ vignettes/collapse_and_plm.Rmd | 1275 +++++++-- vignettes/collapse_and_plm.Rmd.orig | 995 +++++++ vignettes/collapse_intro.Rmd | 2942 ++++++++++++++++++-- vignettes/collapse_intro.Rmd.orig | 2147 ++++++++++++++ vignettes/figure/AGRmat-1.png | Bin 0 -> 46961 bytes vignettes/figure/AGRmatplot-1.png | Bin 0 -> 46267 bytes vignettes/figure/AGRmatplot2-1.png | Bin 0 -> 71960 bytes vignettes/figure/BWplot-1.png | Bin 0 -> 40990 bytes vignettes/figure/Dplot-1.png | Bin 0 -> 45742 bytes vignettes/figure/FEVDplot-1.png | Bin 0 -> 47837 bytes vignettes/figure/GRPplot-1.png | Bin 0 -> 26603 bytes vignettes/figure/Gplot-1.png | Bin 0 -> 49365 bytes vignettes/figure/IRFplot-1.png | Bin 0 -> 73364 bytes vignettes/figure/PLMGDPmat-1.png | Bin 0 -> 54704 bytes vignettes/figure/PLMGDPmat-2.png | Bin 0 -> 68267 bytes vignettes/figure/PLMGDPmat-3.png | Bin 0 -> 24464 bytes vignettes/figure/PSACF-1.png | Bin 0 -> 14907 bytes vignettes/figure/PSACF-2.png | Bin 0 -> 15546 bytes vignettes/figure/PSACF-3.png | Bin 0 -> 17418 bytes vignettes/figure/PSACF-4.png | Bin 0 -> 33902 bytes vignettes/figure/PVARfittedplot-1.png | Bin 0 -> 89681 bytes vignettes/figure/PVARplot-1.png | Bin 0 -> 69277 bytes vignettes/figure/mts-1.png | Bin 0 -> 41511 bytes vignettes/figure/plm_psacf-1.png | Bin 0 -> 49886 bytes vignettes/figure/plm_psccf-1.png | Bin 0 -> 17418 bytes vignettes/figure/plm_pspacf-1.png | Bin 0 -> 47708 bytes vignettes/figure/psarplot-1.png | Bin 0 -> 77327 bytes vignettes/figure/psarplot2-1.png | Bin 0 -> 90488 bytes vignettes/figure/psmatplot-1.png | Bin 0 -> 112094 bytes vignettes/figure/psmatplot2-1.png | Bin 0 -> 152506 bytes vignettes/figure/pwlddev_plot-1.png | Bin 0 -> 194305 bytes vignettes/figure/scplot_BWA-1.png | Bin 0 -> 72189 bytes vignettes/figure/stl-1.png | Bin 0 -> 35692 bytes 37 files changed, 10332 insertions(+), 633 deletions(-) create mode 100644 vignettes/collapse_and_data.table.Rmd.orig create mode 100644 vignettes/collapse_and_dplyr.Rmd.orig create mode 100644 vignettes/collapse_and_plm.Rmd.orig create mode 100644 vignettes/collapse_intro.Rmd.orig create mode 100644 vignettes/figure/AGRmat-1.png create mode 100644 vignettes/figure/AGRmatplot-1.png create mode 100644 vignettes/figure/AGRmatplot2-1.png create mode 100644 vignettes/figure/BWplot-1.png create mode 100644 vignettes/figure/Dplot-1.png create mode 100644 vignettes/figure/FEVDplot-1.png create mode 100644 vignettes/figure/GRPplot-1.png create mode 100644 vignettes/figure/Gplot-1.png create mode 100644 vignettes/figure/IRFplot-1.png create mode 100644 vignettes/figure/PLMGDPmat-1.png create mode 100644 vignettes/figure/PLMGDPmat-2.png create mode 100644 vignettes/figure/PLMGDPmat-3.png create mode 100644 vignettes/figure/PSACF-1.png create mode 100644 vignettes/figure/PSACF-2.png create mode 100644 vignettes/figure/PSACF-3.png create mode 100644 vignettes/figure/PSACF-4.png create mode 100644 vignettes/figure/PVARfittedplot-1.png create mode 100644 vignettes/figure/PVARplot-1.png create mode 100644 vignettes/figure/mts-1.png create mode 100644 vignettes/figure/plm_psacf-1.png create mode 100644 vignettes/figure/plm_psccf-1.png create mode 100644 vignettes/figure/plm_pspacf-1.png create mode 100644 vignettes/figure/psarplot-1.png create mode 100644 vignettes/figure/psarplot2-1.png create mode 100644 vignettes/figure/psmatplot-1.png create mode 100644 vignettes/figure/psmatplot2-1.png create mode 100644 vignettes/figure/pwlddev_plot-1.png create mode 100644 vignettes/figure/scplot_BWA-1.png create mode 100644 vignettes/figure/stl-1.png diff --git a/vignettes/collapse_and_data.table.Rmd b/vignettes/collapse_and_data.table.Rmd index 5951d33a..665ba050 100644 --- a/vignettes/collapse_and_data.table.Rmd +++ b/vignettes/collapse_and_data.table.Rmd @@ -11,11 +11,9 @@ vignette: > %\VignetteIndexEntry{collapse and data.table} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} -params: - cache: true --- -```{css, echo=FALSE} + + -```{r, echo = FALSE, message = FALSE, warning=FALSE} -library(data.table) -library(microbenchmark) -library(collapse) -knitr::opts_chunk$set(error = FALSE, message = FALSE, warning = FALSE, - comment = "#", tidy = FALSE, cache = TRUE, collapse = TRUE, - fig.width = 8, fig.height = 5, - out.width = '100%') - -# knitr::opts_chunk$set( -# comment = "#", -# error = FALSE, -# tidy = FALSE, -# cache = FALSE, -# collapse = TRUE, -# fig.width = 8, -# fig.height= 5, -# out.width='100%' -# ) - -RUNBENCH <- identical(Sys.getenv("RUNBENCH"), "TRUE") - -oldopts <- options(width = 100L) -set.seed(101) -``` Since transformations (`:=` operations) are not highly optimized in *data.table*, *collapse* will be faster in most circumstances. Also time series functionality in *collapse* is significantly faster as it does not require data to be ordered or balanced to compute. For example `flag` computes an ordered lag without sorting the entire data first. -```{r} + +```r # Lets generate a large dataset and benchmark this stuff DT_large <- replicate(1000, qDT(wlddev), simplify = FALSE) %>% lapply(tfm, country = paste(country, rnorm(1))) %>% @@ -253,6 +408,7 @@ DT_large <- replicate(1000, qDT(wlddev), simplify = FALSE) %>% # 12.7 million Obs fdim(DT_large) +# [1] 13176000 13 microbenchmark( S1 = DT_large[, sum_ODA := sum(ODA, na.rm = TRUE), by = country], @@ -266,37 +422,89 @@ microbenchmark( L4 = DT_large[, lag_PCGDP := flag(PCGDP, 1L, country)], # Not ordered times = 5 ) +# Unit: milliseconds +# expr min lq mean median uq max neval +# S1 343.03396 347.18443 391.7494 364.51431 379.7866 524.2279 5 +# S2 100.52544 101.72645 165.8369 128.76042 153.6818 344.4906 5 +# S3 98.48249 104.80830 120.3499 114.20591 127.0192 157.2335 5 +# W1 913.00883 1009.29930 1071.0633 1035.74446 1104.7680 1292.4957 5 +# W2 99.48199 99.69654 110.0907 113.95884 118.5229 118.7931 5 +# L1 1812.59987 1822.58026 1896.8809 1905.67377 1942.9434 2000.6074 5 +# L2 110.36056 128.45845 135.0995 133.80219 139.1405 163.7357 5 +# L3 611.28392 665.22123 768.0616 718.38679 803.7170 1041.6991 5 +# L4 64.26369 66.99006 105.7952 84.26537 106.1809 207.2758 5 rm(DT_large) gc() +# used (Mb) gc trigger (Mb) limit (Mb) max used (Mb) +# Ncells 3113072 166.3 8413097 449.4 NA 8413097 449.4 +# Vcells 7897587 60.3 324289364 2474.2 16384 405361681 3092.7 ``` ## Further *collapse* features supporting *data.table*'s As mentioned, `qDT` is a flexible and very fast function to create / column-wise convert R objects to *data.table*'s. You can also row-wise convert a matrix to data.table using `mrtl`: -```{r} + +```r # Creating a matrix from mtcars m <- qM(mtcars) str(m) +# num [1:32, 1:11] 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ... +# - attr(*, "dimnames")=List of 2 +# ..$ : chr [1:32] "Mazda RX4" "Mazda RX4 Wag" "Datsun 710" "Hornet 4 Drive" ... +# ..$ : chr [1:11] "mpg" "cyl" "disp" "hp" ... # Demonstrating another nice feature of qDT qDT(m, row.names.col = "car") %>% head +# car mpg cyl disp hp drat wt qsec vs am gear carb +# +# 1: Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 +# 2: Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 +# 3: Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 +# 4: Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 +# 5: Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 +# 6: Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 # Row-wise conversion to data.table mrtl(m, names = TRUE, return = "data.table") %>% head(2) - +# Mazda RX4 Mazda RX4 Wag Datsun 710 Hornet 4 Drive Hornet Sportabout Valiant Duster 360 Merc 240D +# +# 1: 21 21 22.8 21.4 18.7 18.1 14.3 24.4 +# 2: 6 6 4.0 6.0 8.0 6.0 8.0 4.0 +# Merc 230 Merc 280 Merc 280C Merc 450SE Merc 450SL Merc 450SLC Cadillac Fleetwood +# +# 1: 22.8 19.2 17.8 16.4 17.3 15.2 10.4 +# 2: 4.0 6.0 6.0 8.0 8.0 8.0 8.0 +# Lincoln Continental Chrysler Imperial Fiat 128 Honda Civic Toyota Corolla Toyota Corona +# +# 1: 10.4 14.7 32.4 30.4 33.9 21.5 +# 2: 8.0 8.0 4.0 4.0 4.0 4.0 +# Dodge Challenger AMC Javelin Camaro Z28 Pontiac Firebird Fiat X1-9 Porsche 914-2 Lotus Europa +# +# 1: 15.5 15.2 13.3 19.2 27.3 26 30.4 +# 2: 8.0 8.0 8.0 8.0 4.0 4 4.0 +# Ford Pantera L Ferrari Dino Maserati Bora Volvo 142E +# +# 1: 15.8 19.7 15 21.4 +# 2: 8.0 6.0 8 4.0 ``` The computational efficiency of these functions makes them very useful to use in *data.table* based workflows. -```{r} + +```r # Benchmark microbenchmark(qDT(m, "car"), mrtl(m, TRUE, "data.table")) +# Unit: microseconds +# expr min lq mean median uq max neval +# qDT(m, "car") 4.838 5.043 6.16230 5.3300 6.437 20.049 100 +# mrtl(m, TRUE, "data.table") 3.608 3.854 4.23981 3.9975 4.182 15.908 100 ``` For example we could regress the growth rate of GDP per capita on the Growth rate of life expectancy in each country and save results in a *data.table*: -```{r} + +```r library(lmtest) wlddev %>% fselect(country, PCGDP, LIFEEX) %>% @@ -307,11 +515,20 @@ wlddev %>% fselect(country, PCGDP, LIFEEX) %>% qDT %>% # Run estimations by country using data.table .[, qDT(coeftest(lm(G(PCGDP) ~ G(LIFEEX))), "Coef"), keyby = country] %>% head - +# Key: +# country Coef Estimate Std. Error t value Pr(>|t|) +# +# 1: Albania (Intercept) -3.6146411 2.371885 -1.5239527 0.136023086 +# 2: Albania G(LIFEEX) 22.1596308 7.288971 3.0401591 0.004325856 +# 3: Algeria (Intercept) 0.5973329 1.740619 0.3431726 0.732731107 +# 4: Algeria G(LIFEEX) 0.8412547 1.689221 0.4980134 0.620390703 +# 5: Angola (Intercept) -3.3793976 1.540330 -2.1939445 0.034597175 +# 6: Angola G(LIFEEX) 4.2362895 1.402380 3.0207852 0.004553260 ``` If we only need the coefficients, not the standard errors, we can also use `collapse::flm` together with `mrtl`: -```{r} + +```r wlddev %>% fselect(country, PCGDP, LIFEEX) %>% na_omit(cols = -1L) %>% fsubset(fnobs(PCGDP, country, "replace_fill") > 20L) %>% @@ -320,11 +537,20 @@ wlddev %>% fselect(country, PCGDP, LIFEEX) %>% cbind(Intercept = 1, LIFEEX = fgrowth(LIFEEX)[-1L])), TRUE), keyby = country] %>% head - +# Key: +# country Intercept LIFEEX +# +# 1: Albania -3.61464113 22.1596308 +# 2: Algeria 0.59733291 0.8412547 +# 3: Angola -3.37939760 4.2362895 +# 4: Antigua and Barbuda -3.11880717 18.8700870 +# 5: Argentina 1.14613567 -0.2896305 +# 6: Armenia 0.08178344 11.5523992 ``` ... which provides a significant speed gain here: -```{r} + +```r microbenchmark( @@ -343,23 +569,151 @@ B = wlddev %>% fselect(country, PCGDP, LIFEEX) %>% LIFEEX = fgrowth(LIFEEX)[-1L])), TRUE), keyby = country] ) - +# Unit: milliseconds +# expr min lq mean median uq max neval +# A 58.914253 60.063381 68.770933 60.865217 73.507813 241.594509 100 +# B 3.145766 3.293715 3.463643 3.377006 3.503983 5.378995 100 ``` Another feature to highlight at this point are *collapse*'s list processing functions, in particular `rsplit`, `rapply2d`, `get_elem` and `unlist2d`. `rsplit` is an efficient recursive generalization of `split`: -```{r} + +```r DT_list <- rsplit(DT, country + year + PCGDP + LIFEEX ~ region + income) # Note: rsplit(DT, year + PCGDP + LIFEEX ~ region + income, flatten = TRUE) # would yield a simple list with interacted categories (like split) str(DT_list, give.attr = FALSE) +# List of 7 +# $ East Asia & Pacific :List of 3 +# ..$ High income :Classes 'data.table' and 'data.frame': 793 obs. of 4 variables: +# .. ..$ country: chr [1:793] "Australia" "Australia" "Australia" "Australia" ... +# .. ..$ year : int [1:793] 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 ... +# .. ..$ PCGDP : num [1:793] 19378 19469 19246 20053 21036 ... +# .. ..$ LIFEEX : num [1:793] 70.8 71 70.9 70.9 70.9 ... +# ..$ Lower middle income:Classes 'data.table' and 'data.frame': 793 obs. of 4 variables: +# .. ..$ country: chr [1:793] "Cambodia" "Cambodia" "Cambodia" "Cambodia" ... +# .. ..$ year : int [1:793] 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 ... +# .. ..$ PCGDP : num [1:793] NA NA NA NA NA NA NA NA NA NA ... +# .. ..$ LIFEEX : num [1:793] 41.2 41.4 41.5 41.7 41.9 ... +# ..$ Upper middle income:Classes 'data.table' and 'data.frame': 610 obs. of 4 variables: +# .. ..$ country: chr [1:610] "American Samoa" "American Samoa" "American Samoa" "American Samoa" ... +# .. ..$ year : int [1:610] 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 ... +# .. ..$ PCGDP : num [1:610] NA NA NA NA NA NA NA NA NA NA ... +# .. ..$ LIFEEX : num [1:610] NA NA NA NA NA NA NA NA NA NA ... +# $ Europe & Central Asia :List of 4 +# ..$ High income :Classes 'data.table' and 'data.frame': 2257 obs. of 4 variables: +# .. ..$ country: chr [1:2257] "Andorra" "Andorra" "Andorra" "Andorra" ... +# .. ..$ year : int [1:2257] 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 ... +# .. ..$ PCGDP : num [1:2257] NA NA NA NA NA NA NA NA NA NA ... +# .. ..$ LIFEEX : num [1:2257] NA NA NA NA NA NA NA NA NA NA ... +# ..$ Low income :Classes 'data.table' and 'data.frame': 61 obs. of 4 variables: +# .. ..$ country: chr [1:61] "Tajikistan" "Tajikistan" "Tajikistan" "Tajikistan" ... +# .. ..$ year : int [1:61] 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 ... +# .. ..$ PCGDP : num [1:61] NA NA NA NA NA NA NA NA NA NA ... +# .. ..$ LIFEEX : num [1:61] 50.6 50.9 51.2 51.5 51.9 ... +# ..$ Lower middle income:Classes 'data.table' and 'data.frame': 244 obs. of 4 variables: +# .. ..$ country: chr [1:244] "Kyrgyz Republic" "Kyrgyz Republic" "Kyrgyz Republic" "Kyrgyz Republic" ... +# .. ..$ year : int [1:244] 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 ... +# .. ..$ PCGDP : num [1:244] NA NA NA NA NA NA NA NA NA NA ... +# .. ..$ LIFEEX : num [1:244] 56.1 56.6 57 57.4 57.9 ... +# ..$ Upper middle income:Classes 'data.table' and 'data.frame': 976 obs. of 4 variables: +# .. ..$ country: chr [1:976] "Albania" "Albania" "Albania" "Albania" ... +# .. ..$ year : int [1:976] 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 ... +# .. ..$ PCGDP : num [1:976] NA NA NA NA NA NA NA NA NA NA ... +# .. ..$ LIFEEX : num [1:976] 62.3 63.3 64.2 64.9 65.5 ... +# $ Latin America & Caribbean :List of 4 +# ..$ High income :Classes 'data.table' and 'data.frame': 1037 obs. of 4 variables: +# .. ..$ country: chr [1:1037] "Antigua and Barbuda" "Antigua and Barbuda" "Antigua and Barbuda" "Antigua and Barbuda" ... +# .. ..$ year : int [1:1037] 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 ... +# .. ..$ PCGDP : num [1:1037] NA NA NA NA NA NA NA NA NA NA ... +# .. ..$ LIFEEX : num [1:1037] 62 62.5 63 63.5 64 ... +# ..$ Low income :Classes 'data.table' and 'data.frame': 61 obs. of 4 variables: +# .. ..$ country: chr [1:61] "Haiti" "Haiti" "Haiti" "Haiti" ... +# .. ..$ year : int [1:61] 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 ... +# .. ..$ PCGDP : num [1:61] 1512 1439 1523 1466 1414 ... +# .. ..$ LIFEEX : num [1:61] 41.8 42.2 42.6 43 43.4 ... +# ..$ Lower middle income:Classes 'data.table' and 'data.frame': 244 obs. of 4 variables: +# .. ..$ country: chr [1:244] "Bolivia" "Bolivia" "Bolivia" "Bolivia" ... +# .. ..$ year : int [1:244] 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 ... +# .. ..$ PCGDP : num [1:244] 1005 1007 1042 1091 1112 ... +# .. ..$ LIFEEX : num [1:244] 41.8 42.1 42.5 42.8 43.2 ... +# ..$ Upper middle income:Classes 'data.table' and 'data.frame': 1220 obs. of 4 variables: +# .. ..$ country: chr [1:1220] "Argentina" "Argentina" "Argentina" "Argentina" ... +# .. ..$ year : int [1:1220] 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 ... +# .. ..$ PCGDP : num [1:1220] 5643 5853 5711 5323 5773 ... +# .. ..$ LIFEEX : num [1:1220] 65.1 65.2 65.3 65.3 65.4 ... +# $ Middle East & North Africa:List of 4 +# ..$ High income :Classes 'data.table' and 'data.frame': 488 obs. of 4 variables: +# .. ..$ country: chr [1:488] "Bahrain" "Bahrain" "Bahrain" "Bahrain" ... +# .. ..$ year : int [1:488] 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 ... +# .. ..$ PCGDP : num [1:488] NA NA NA NA NA NA NA NA NA NA ... +# .. ..$ LIFEEX : num [1:488] 51.9 53.2 54.6 55.9 57.2 ... +# ..$ Low income :Classes 'data.table' and 'data.frame': 122 obs. of 4 variables: +# .. ..$ country: chr [1:122] "Syrian Arab Republic" "Syrian Arab Republic" "Syrian Arab Republic" "Syrian Arab Republic" ... +# .. ..$ year : int [1:122] 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 ... +# .. ..$ PCGDP : num [1:122] NA NA NA NA NA NA NA NA NA NA ... +# .. ..$ LIFEEX : num [1:122] 52 52.6 53.2 53.8 54.4 ... +# ..$ Lower middle income:Classes 'data.table' and 'data.frame': 305 obs. of 4 variables: +# .. ..$ country: chr [1:305] "Djibouti" "Djibouti" "Djibouti" "Djibouti" ... +# .. ..$ year : int [1:305] 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 ... +# .. ..$ PCGDP : num [1:305] NA NA NA NA NA NA NA NA NA NA ... +# .. ..$ LIFEEX : num [1:305] 44 44.5 44.9 45.3 45.7 ... +# ..$ Upper middle income:Classes 'data.table' and 'data.frame': 366 obs. of 4 variables: +# .. ..$ country: chr [1:366] "Algeria" "Algeria" "Algeria" "Algeria" ... +# .. ..$ year : int [1:366] 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 ... +# .. ..$ PCGDP : num [1:366] 2481 2091 1638 2146 2214 ... +# .. ..$ LIFEEX : num [1:366] 46.1 46.6 47.1 47.5 48 ... +# $ North America :List of 1 +# ..$ High income:Classes 'data.table' and 'data.frame': 183 obs. of 4 variables: +# .. ..$ country: chr [1:183] "Bermuda" "Bermuda" "Bermuda" "Bermuda" ... +# .. ..$ year : int [1:183] 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 ... +# .. ..$ PCGDP : num [1:183] 33363 34080 34763 34324 37202 ... +# .. ..$ LIFEEX : num [1:183] NA NA NA NA NA ... +# $ South Asia :List of 3 +# ..$ Low income :Classes 'data.table' and 'data.frame': 122 obs. of 4 variables: +# .. ..$ country: chr [1:122] "Afghanistan" "Afghanistan" "Afghanistan" "Afghanistan" ... +# .. ..$ year : int [1:122] 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 ... +# .. ..$ PCGDP : num [1:122] NA NA NA NA NA NA NA NA NA NA ... +# .. ..$ LIFEEX : num [1:122] 32.4 33 33.5 34 34.5 ... +# ..$ Lower middle income:Classes 'data.table' and 'data.frame': 244 obs. of 4 variables: +# .. ..$ country: chr [1:244] "Bangladesh" "Bangladesh" "Bangladesh" "Bangladesh" ... +# .. ..$ year : int [1:244] 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 ... +# .. ..$ PCGDP : num [1:244] 372 384 394 381 411 ... +# .. ..$ LIFEEX : num [1:244] 45.4 46 46.6 47.1 47.6 ... +# ..$ Upper middle income:Classes 'data.table' and 'data.frame': 122 obs. of 4 variables: +# .. ..$ country: chr [1:122] "Maldives" "Maldives" "Maldives" "Maldives" ... +# .. ..$ year : int [1:122] 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 ... +# .. ..$ PCGDP : num [1:122] NA NA NA NA NA NA NA NA NA NA ... +# .. ..$ LIFEEX : num [1:122] 37.3 37.9 38.6 39.2 39.9 ... +# $ Sub-Saharan Africa :List of 4 +# ..$ High income :Classes 'data.table' and 'data.frame': 61 obs. of 4 variables: +# .. ..$ country: chr [1:61] "Seychelles" "Seychelles" "Seychelles" "Seychelles" ... +# .. ..$ year : int [1:61] 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 ... +# .. ..$ PCGDP : num [1:61] 2830 2617 2763 2966 3064 ... +# .. ..$ LIFEEX : num [1:61] NA NA NA NA NA NA NA NA NA NA ... +# ..$ Low income :Classes 'data.table' and 'data.frame': 1464 obs. of 4 variables: +# .. ..$ country: chr [1:1464] "Benin" "Benin" "Benin" "Benin" ... +# .. ..$ year : int [1:1464] 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 ... +# .. ..$ PCGDP : num [1:1464] 712 724 689 710 745 ... +# .. ..$ LIFEEX : num [1:1464] 37.3 37.7 38.2 38.7 39.1 ... +# ..$ Lower middle income:Classes 'data.table' and 'data.frame': 1037 obs. of 4 variables: +# .. ..$ country: chr [1:1037] "Angola" "Angola" "Angola" "Angola" ... +# .. ..$ year : int [1:1037] 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 ... +# .. ..$ PCGDP : num [1:1037] NA NA NA NA NA NA NA NA NA NA ... +# .. ..$ LIFEEX : num [1:1037] 37.5 37.8 38.1 38.4 38.8 ... +# ..$ Upper middle income:Classes 'data.table' and 'data.frame': 366 obs. of 4 variables: +# .. ..$ country: chr [1:366] "Botswana" "Botswana" "Botswana" "Botswana" ... +# .. ..$ year : int [1:366] 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 ... +# .. ..$ PCGDP : num [1:366] 408 425 444 460 480 ... +# .. ..$ LIFEEX : num [1:366] 49.2 49.7 50.2 50.6 51.1 ... ``` We can use `rapply2d` to apply a function to each data frame / data.table in an arbitrary nested structure: -```{r} + +```r # This runs region-income level regressions, with country fixed effects # following Mundlak (1978) lm_summary_list <- DT_list %>% @@ -369,29 +723,372 @@ lm_summary_list <- DT_list %>% # This is a nested list of linear model summaries str(lm_summary_list, give.attr = FALSE) +# List of 7 +# $ East Asia & Pacific :List of 3 +# ..$ High income :List of 12 +# .. ..$ call : language FUN(formula = ..1, data = y) +# .. ..$ terms :Classes 'terms', 'formula' language G(PCGDP) ~ G(LIFEEX) + B(G(LIFEEX), country) +# .. ..$ residuals : Named num [1:441] -1.64 -2.59 2.75 3.45 2.48 ... +# .. ..$ coefficients : num [1:3, 1:4] 0.531 2.494 3.83 0.706 0.759 ... +# .. ..$ aliased : Named logi [1:3] FALSE FALSE FALSE +# .. ..$ sigma : num 4.59 +# .. ..$ df : int [1:3] 3 438 3 +# .. ..$ r.squared : num 0.0525 +# .. ..$ adj.r.squared: num 0.0481 +# .. ..$ fstatistic : Named num [1:3] 12.1 2 438 +# .. ..$ cov.unscaled : num [1:3, 1:3] 0.02361 -0.00158 -0.04895 -0.00158 0.02728 ... +# .. ..$ na.action : 'omit' Named int [1:352] 1 61 62 63 64 65 66 67 68 69 ... +# ..$ Lower middle income:List of 12 +# .. ..$ call : language FUN(formula = ..1, data = y) +# .. ..$ terms :Classes 'terms', 'formula' language G(PCGDP) ~ G(LIFEEX) + B(G(LIFEEX), country) +# .. ..$ residuals : Named num [1:549] -39.6968 3.6618 -0.0944 -1.8261 -1.0491 ... +# .. ..$ coefficients : num [1:3, 1:4] 1.348 0.524 0.949 0.701 0.757 ... +# .. ..$ aliased : Named logi [1:3] FALSE FALSE FALSE +# .. ..$ sigma : num 5.4 +# .. ..$ df : int [1:3] 3 546 3 +# .. ..$ r.squared : num 0.00471 +# .. ..$ adj.r.squared: num 0.00106 +# .. ..$ fstatistic : Named num [1:3] 1.29 2 546 +# .. ..$ cov.unscaled : num [1:3, 1:3] 0.016821 0.000511 -0.022767 0.000511 0.01965 ... +# .. ..$ na.action : 'omit' Named int [1:244] 1 2 3 4 5 6 7 8 9 10 ... +# ..$ Upper middle income:List of 12 +# .. ..$ call : language FUN(formula = ..1, data = y) +# .. ..$ terms :Classes 'terms', 'formula' language G(PCGDP) ~ G(LIFEEX) + B(G(LIFEEX), country) +# .. ..$ residuals : Named num [1:312] -32.29 -11.61 2.91 11.23 10.28 ... +# .. ..$ coefficients : num [1:3, 1:4] 1.507 -0.547 4.816 0.428 0.478 ... +# .. ..$ aliased : Named logi [1:3] FALSE FALSE FALSE +# .. ..$ sigma : num 4.39 +# .. ..$ df : int [1:3] 3 309 3 +# .. ..$ r.squared : num 0.103 +# .. ..$ adj.r.squared: num 0.0976 +# .. ..$ fstatistic : Named num [1:3] 17.8 2 309 +# .. ..$ cov.unscaled : num [1:3, 1:3] 0.009471 0.000492 -0.013551 0.000492 0.011842 ... +# .. ..$ na.action : 'omit' Named int [1:298] 1 2 3 4 5 6 7 8 9 10 ... +# $ Europe & Central Asia :List of 4 +# ..$ High income :List of 12 +# .. ..$ call : language FUN(formula = ..1, data = y) +# .. ..$ terms :Classes 'terms', 'formula' language G(PCGDP) ~ G(LIFEEX) + B(G(LIFEEX), country) +# .. ..$ residuals : Named num [1:1355] 2.706 -0.548 1.001 3.034 0.257 ... +# .. ..$ coefficients : num [1:3, 1:4] 3.254 -0.172 -2.506 0.407 0.227 ... +# .. ..$ aliased : Named logi [1:3] FALSE FALSE FALSE +# .. ..$ sigma : num 3.3 +# .. ..$ df : int [1:3] 3 1352 3 +# .. ..$ r.squared : num 0.00257 +# .. ..$ adj.r.squared: num 0.00109 +# .. ..$ fstatistic : Named num [1:3] 1.74 2 1352 +# .. ..$ cov.unscaled : num [1:3, 1:3] 0.015254 -0.000863 -0.05461 -0.000863 0.004722 ... +# .. ..$ na.action : 'omit' Named int [1:902] 1 2 3 4 5 6 7 8 9 10 ... +# ..$ Low income :List of 12 +# .. ..$ call : language FUN(formula = ..1, data = y) +# .. ..$ terms :Classes 'terms', 'formula' language G(PCGDP) ~ G(LIFEEX) + B(G(LIFEEX), country) +# .. ..$ residuals : Named num [1:34] 0.166 -1.804 15.949 -0.778 7.165 ... +# .. ..$ coefficients : num [1:2, 1:4] -5.31 9.36 2.03 2.56 -2.61 ... +# .. ..$ aliased : Named logi [1:3] FALSE FALSE TRUE +# .. ..$ sigma : num 8.43 +# .. ..$ df : int [1:3] 2 32 3 +# .. ..$ r.squared : num 0.295 +# .. ..$ adj.r.squared: num 0.273 +# .. ..$ fstatistic : Named num [1:3] 13.4 1 32 +# .. ..$ cov.unscaled : num [1:2, 1:2] 0.0582 -0.0514 -0.0514 0.092 +# .. ..$ na.action : 'omit' Named int [1:27] 1 2 3 4 5 6 7 8 9 10 ... +# ..$ Lower middle income:List of 12 +# .. ..$ call : language FUN(formula = ..1, data = y) +# .. ..$ terms :Classes 'terms', 'formula' language G(PCGDP) ~ G(LIFEEX) + B(G(LIFEEX), country) +# .. ..$ residuals : Named num [1:121] -1.626 8.745 -14.47 0.298 -11.886 ... +# .. ..$ coefficients : num [1:3, 1:4] 0.106 4.631 1.499 1.315 0.938 ... +# .. ..$ aliased : Named logi [1:3] FALSE FALSE FALSE +# .. ..$ sigma : num 6.02 +# .. ..$ df : int [1:3] 3 118 3 +# .. ..$ r.squared : num 0.178 +# .. ..$ adj.r.squared: num 0.164 +# .. ..$ fstatistic : Named num [1:3] 12.7 2 118 +# .. ..$ cov.unscaled : num [1:3, 1:3] 0.047775 -0.000927 -0.142782 -0.000927 0.024298 ... +# .. ..$ na.action : 'omit' Named int [1:123] 1 2 3 4 5 6 7 8 9 10 ... +# ..$ Upper middle income:List of 12 +# .. ..$ call : language FUN(formula = ..1, data = y) +# .. ..$ terms :Classes 'terms', 'formula' language G(PCGDP) ~ G(LIFEEX) + B(G(LIFEEX), country) +# .. ..$ residuals : Named num [1:511] 0.761 -2.153 -4.091 -6.476 -3.43 ... +# .. ..$ coefficients : num [1:3, 1:4] 2.983 4.147 -3.351 0.698 0.779 ... +# .. ..$ aliased : Named logi [1:3] FALSE FALSE FALSE +# .. ..$ sigma : num 8.28 +# .. ..$ df : int [1:3] 3 508 3 +# .. ..$ r.squared : num 0.0531 +# .. ..$ adj.r.squared: num 0.0493 +# .. ..$ fstatistic : Named num [1:3] 14.2 2 508 +# .. ..$ cov.unscaled : num [1:3, 1:3] 7.11e-03 4.52e-05 -1.45e-02 4.52e-05 8.85e-03 ... +# .. ..$ na.action : 'omit' Named int [1:465] 1 2 3 4 5 6 7 8 9 10 ... +# $ Latin America & Caribbean :List of 4 +# ..$ High income :List of 12 +# .. ..$ call : language FUN(formula = ..1, data = y) +# .. ..$ terms :Classes 'terms', 'formula' language G(PCGDP) ~ G(LIFEEX) + B(G(LIFEEX), country) +# .. ..$ residuals : Named num [1:487] 2.39 6.02 6.1 1.71 -2.27 ... +# .. ..$ coefficients : num [1:3, 1:4] 1.015 0.483 2.613 0.677 0.952 ... +# .. ..$ aliased : Named logi [1:3] FALSE FALSE FALSE +# .. ..$ sigma : num 4.71 +# .. ..$ df : int [1:3] 3 484 3 +# .. ..$ r.squared : num 0.00592 +# .. ..$ adj.r.squared: num 0.00181 +# .. ..$ fstatistic : Named num [1:3] 1.44 2 484 +# .. ..$ cov.unscaled : num [1:3, 1:3] 0.02062 0.00155 -0.05714 0.00155 0.04082 ... +# .. ..$ na.action : 'omit' Named int [1:550] 1 2 3 4 5 6 7 8 9 10 ... +# ..$ Low income :List of 12 +# .. ..$ call : language FUN(formula = ..1, data = y) +# .. ..$ terms :Classes 'terms', 'formula' language G(PCGDP) ~ G(LIFEEX) + B(G(LIFEEX), country) +# .. ..$ residuals : Named num [1:59] -5.667 5.091 -4.46 -4.224 -0.526 ... +# .. ..$ coefficients : num [1:2, 1:4] -3.18 4.02 1.73 2.28 -1.83 ... +# .. ..$ aliased : Named logi [1:3] FALSE FALSE TRUE +# .. ..$ sigma : num 3.79 +# .. ..$ df : int [1:3] 2 57 3 +# .. ..$ r.squared : num 0.0516 +# .. ..$ adj.r.squared: num 0.0349 +# .. ..$ fstatistic : Named num [1:3] 3.1 1 57 +# .. ..$ cov.unscaled : num [1:2, 1:2] 0.209 -0.265 -0.265 0.364 +# .. ..$ na.action : 'omit' Named int [1:2] 1 61 +# ..$ Lower middle income:List of 12 +# .. ..$ call : language FUN(formula = ..1, data = y) +# .. ..$ terms :Classes 'terms', 'formula' language G(PCGDP) ~ G(LIFEEX) + B(G(LIFEEX), country) +# .. ..$ residuals : Named num [1:231] -1.386 2.029 3.213 0.413 1.334 ... +# .. ..$ coefficients : num [1:3, 1:4] -1.678 -0.479 3.896 2.26 0.709 ... +# .. ..$ aliased : Named logi [1:3] FALSE FALSE FALSE +# .. ..$ sigma : num 3.96 +# .. ..$ df : int [1:3] 3 228 3 +# .. ..$ r.squared : num 0.0081 +# .. ..$ adj.r.squared: num -0.000602 +# .. ..$ fstatistic : Named num [1:3] 0.931 2 228 +# .. ..$ cov.unscaled : num [1:3, 1:3] 0.3264 0.005 -0.4084 0.005 0.0321 ... +# .. ..$ na.action : 'omit' Named int [1:13] 1 61 62 63 64 65 66 67 122 123 ... +# ..$ Upper middle income:List of 12 +# .. ..$ call : language FUN(formula = ..1, data = y) +# .. ..$ terms :Classes 'terms', 'formula' language G(PCGDP) ~ G(LIFEEX) + B(G(LIFEEX), country) +# .. ..$ residuals : Named num [1:1065] 1.97 -4.16 -8.5 6.72 7.17 ... +# .. ..$ coefficients : num [1:3, 1:4] 1.681 0.583 -0.124 0.353 0.512 ... +# .. ..$ aliased : Named logi [1:3] FALSE FALSE FALSE +# .. ..$ sigma : num 4.22 +# .. ..$ df : int [1:3] 3 1062 3 +# .. ..$ r.squared : num 0.0016 +# .. ..$ adj.r.squared: num -0.000283 +# .. ..$ fstatistic : Named num [1:3] 0.85 2 1062 +# .. ..$ cov.unscaled : num [1:3, 1:3] 0.006982 0.000348 -0.013936 0.000348 0.014734 ... +# .. ..$ na.action : 'omit' Named int [1:155] 1 61 62 122 123 183 184 244 245 305 ... +# $ Middle East & North Africa:List of 4 +# ..$ High income :List of 12 +# .. ..$ call : language FUN(formula = ..1, data = y) +# .. ..$ terms :Classes 'terms', 'formula' language G(PCGDP) ~ G(LIFEEX) + B(G(LIFEEX), country) +# .. ..$ residuals : Named num [1:334] -10.728 -11.988 2.151 0.985 -8.618 ... +# .. ..$ coefficients : num [1:3, 1:4] 1.929 3.963 -3.533 1.102 0.996 ... +# .. ..$ aliased : Named logi [1:3] FALSE FALSE FALSE +# .. ..$ sigma : num 8.36 +# .. ..$ df : int [1:3] 3 331 3 +# .. ..$ r.squared : num 0.0456 +# .. ..$ adj.r.squared: num 0.0399 +# .. ..$ fstatistic : Named num [1:3] 7.91 2 331 +# .. ..$ cov.unscaled : num [1:3, 1:3] 0.01738 0.00101 -0.02441 0.00101 0.01419 ... +# .. ..$ na.action : 'omit' Named int [1:154] 1 2 3 4 5 6 7 8 9 10 ... +# ..$ Low income :List of 12 +# .. ..$ call : language FUN(formula = ..1, data = y) +# .. ..$ terms :Classes 'terms', 'formula' language G(PCGDP) ~ G(LIFEEX) + B(G(LIFEEX), country) +# .. ..$ residuals : Named num [1:29] 0.468 3.424 0.415 3.842 3.342 ... +# .. ..$ coefficients : num [1:2, 1:4] -6.91 11.38 2.11 3.64 -3.27 ... +# .. ..$ aliased : Named logi [1:3] FALSE FALSE TRUE +# .. ..$ sigma : num 6.05 +# .. ..$ df : int [1:3] 2 27 3 +# .. ..$ r.squared : num 0.266 +# .. ..$ adj.r.squared: num 0.239 +# .. ..$ fstatistic : Named num [1:3] 9.81 1 27 +# .. ..$ cov.unscaled : num [1:2, 1:2] 0.122 -0.178 -0.178 0.361 +# .. ..$ na.action : 'omit' Named int [1:93] 1 2 3 4 5 6 7 8 9 10 ... +# ..$ Lower middle income:List of 12 +# .. ..$ call : language FUN(formula = ..1, data = y) +# .. ..$ terms :Classes 'terms', 'formula' language G(PCGDP) ~ G(LIFEEX) + B(G(LIFEEX), country) +# .. ..$ residuals : Named num [1:191] -0.95 -2.047 4.541 5.594 -0.723 ... +# .. ..$ coefficients : num [1:3, 1:4] 2.238 1.271 -0.647 1.002 0.599 ... +# .. ..$ aliased : Named logi [1:3] FALSE FALSE FALSE +# .. ..$ sigma : num 3.94 +# .. ..$ df : int [1:3] 3 188 3 +# .. ..$ r.squared : num 0.0244 +# .. ..$ adj.r.squared: num 0.014 +# .. ..$ fstatistic : Named num [1:3] 2.35 2 188 +# .. ..$ cov.unscaled : num [1:3, 1:3] 0.06471 -0.00043 -0.07801 -0.00043 0.02309 ... +# .. ..$ na.action : 'omit' Named int [1:114] 1 2 3 4 5 6 7 8 9 10 ... +# ..$ Upper middle income:List of 12 +# .. ..$ call : language FUN(formula = ..1, data = y) +# .. ..$ terms :Classes 'terms', 'formula' language G(PCGDP) ~ G(LIFEEX) + B(G(LIFEEX), country) +# .. ..$ residuals : Named num [1:263] -18.068 -23.976 28.692 0.858 1.141 ... +# .. ..$ coefficients : num [1:3, 1:4] 2.663 0.718 -1.19 3.538 1.318 ... +# .. ..$ aliased : Named logi [1:3] FALSE FALSE FALSE +# .. ..$ sigma : num 13.8 +# .. ..$ df : int [1:3] 3 260 3 +# .. ..$ r.squared : num 0.00119 +# .. ..$ adj.r.squared: num -0.00649 +# .. ..$ fstatistic : Named num [1:3] 0.155 2 260 +# .. ..$ cov.unscaled : num [1:3, 1:3] 0.065741 0.000795 -0.084456 0.000795 0.009122 ... +# .. ..$ na.action : 'omit' Named int [1:103] 1 61 62 122 123 124 125 126 127 128 ... +# $ North America :List of 1 +# ..$ High income:List of 12 +# .. ..$ call : language FUN(formula = ..1, data = y) +# .. ..$ terms :Classes 'terms', 'formula' language G(PCGDP) ~ G(LIFEEX) + B(G(LIFEEX), country) +# .. ..$ residuals : Named num [1:137] 4.6986 -3.1098 1.8243 0.5643 0.0176 ... +# .. ..$ coefficients : num [1:3, 1:4] 6.542 -1.461 -19.53 2.272 0.662 ... +# .. ..$ aliased : Named logi [1:3] FALSE FALSE FALSE +# .. ..$ sigma : num 2.49 +# .. ..$ df : int [1:3] 3 134 3 +# .. ..$ r.squared : num 0.0657 +# .. ..$ adj.r.squared: num 0.0518 +# .. ..$ fstatistic : Named num [1:3] 4.71 2 134 +# .. ..$ cov.unscaled : num [1:3, 1:3] 8.36e-01 1.59e-17 -3.60 1.59e-17 7.10e-02 ... +# .. ..$ na.action : 'omit' Named int [1:46] 1 2 3 4 5 6 7 8 9 10 ... +# $ South Asia :List of 3 +# ..$ Low income :List of 12 +# .. ..$ call : language FUN(formula = ..1, data = y) +# .. ..$ terms :Classes 'terms', 'formula' language G(PCGDP) ~ G(LIFEEX) + B(G(LIFEEX), country) +# .. ..$ residuals : Named num [1:76] 0.544 -6.17 3.951 -0.964 7.829 ... +# .. ..$ coefficients : num [1:3, 1:4] -108.62 -1.72 96.06 174.19 1.25 ... +# .. ..$ aliased : Named logi [1:3] FALSE FALSE FALSE +# .. ..$ sigma : num 3.7 +# .. ..$ df : int [1:3] 3 73 3 +# .. ..$ r.squared : num 0.0494 +# .. ..$ adj.r.squared: num 0.0233 +# .. ..$ fstatistic : Named num [1:3] 1.9 2 73 +# .. ..$ cov.unscaled : num [1:3, 1:3] 2210.639 -6.979 -1875.261 -6.979 0.114 ... +# .. ..$ na.action : 'omit' Named int [1:46] 1 2 3 4 5 6 7 8 9 10 ... +# ..$ Lower middle income:List of 12 +# .. ..$ call : language FUN(formula = ..1, data = y) +# .. ..$ terms :Classes 'terms', 'formula' language G(PCGDP) ~ G(LIFEEX) + B(G(LIFEEX), country) +# .. ..$ residuals : Named num [1:216] 0.294 -0.293 -6.067 4.954 -4.164 ... +# .. ..$ coefficients : num [1:3, 1:4] -2.232 0.238 5.972 1.074 0.493 ... +# .. ..$ aliased : Named logi [1:3] FALSE FALSE FALSE +# .. ..$ sigma : num 3.44 +# .. ..$ df : int [1:3] 3 213 3 +# .. ..$ r.squared : num 0.111 +# .. ..$ adj.r.squared: num 0.103 +# .. ..$ fstatistic : Named num [1:3] 13.3 2 213 +# .. ..$ cov.unscaled : num [1:3, 1:3] 0.09757 -0.00201 -0.10483 -0.00201 0.02054 ... +# .. ..$ na.action : 'omit' Named int [1:28] 1 61 62 63 64 65 66 67 68 69 ... +# ..$ Upper middle income:List of 12 +# .. ..$ call : language FUN(formula = ..1, data = y) +# .. ..$ terms :Classes 'terms', 'formula' language G(PCGDP) ~ G(LIFEEX) + B(G(LIFEEX), country) +# .. ..$ residuals : Named num [1:82] 3.262 3.976 3.128 1.67 -0.901 ... +# .. ..$ coefficients : num [1:3, 1:4] 3.859 -0.577 -0.476 1.036 1.365 ... +# .. ..$ aliased : Named logi [1:3] FALSE FALSE FALSE +# .. ..$ sigma : num 4.25 +# .. ..$ df : int [1:3] 3 79 3 +# .. ..$ r.squared : num 0.00622 +# .. ..$ adj.r.squared: num -0.0189 +# .. ..$ fstatistic : Named num [1:3] 0.247 2 79 +# .. ..$ cov.unscaled : num [1:3, 1:3] 0.0595 -0.028 -0.0473 -0.028 0.1034 ... +# .. ..$ na.action : 'omit' Named int [1:40] 1 2 3 4 5 6 7 8 9 10 ... +# $ Sub-Saharan Africa :List of 4 +# ..$ High income :List of 12 +# .. ..$ call : language FUN(formula = ..1, data = y) +# .. ..$ terms :Classes 'terms', 'formula' language G(PCGDP) ~ G(LIFEEX) + B(G(LIFEEX), country) +# .. ..$ residuals : Named num [1:39] -11.33 -5.041 -3.158 0.585 7.81 ... +# .. ..$ coefficients : num [1:2, 1:4] 2.551 -0.644 0.775 0.55 3.293 ... +# .. ..$ aliased : Named logi [1:3] FALSE FALSE TRUE +# .. ..$ sigma : num 4.8 +# .. ..$ df : int [1:3] 2 37 3 +# .. ..$ r.squared : num 0.0357 +# .. ..$ adj.r.squared: num 0.00959 +# .. ..$ fstatistic : Named num [1:3] 1.37 1 37 +# .. ..$ cov.unscaled : num [1:2, 1:2] 0.026 -0.00217 -0.00217 0.01312 +# .. ..$ na.action : 'omit' Named int [1:22] 1 2 3 4 5 6 7 8 9 10 ... +# ..$ Low income :List of 12 +# .. ..$ call : language FUN(formula = ..1, data = y) +# .. ..$ terms :Classes 'terms', 'formula' language G(PCGDP) ~ G(LIFEEX) + B(G(LIFEEX), country) +# .. ..$ residuals : Named num [1:1085] 0.694 -5.869 2.069 3.855 2.415 ... +# .. ..$ coefficients : num [1:3, 1:4] -0.0756 0.5308 0.5124 0.8887 0.137 ... +# .. ..$ aliased : Named logi [1:3] FALSE FALSE FALSE +# .. ..$ sigma : num 5.88 +# .. ..$ df : int [1:3] 3 1082 3 +# .. ..$ r.squared : num 0.0146 +# .. ..$ adj.r.squared: num 0.0128 +# .. ..$ fstatistic : Named num [1:3] 8.01 2 1082 +# .. ..$ cov.unscaled : num [1:3, 1:3] 0.022858 -0.000025 -0.025534 -0.000025 0.000543 ... +# .. ..$ na.action : 'omit' Named int [1:379] 1 61 62 122 123 183 184 244 245 305 ... +# ..$ Lower middle income:List of 12 +# .. ..$ call : language FUN(formula = ..1, data = y) +# .. ..$ terms :Classes 'terms', 'formula' language G(PCGDP) ~ G(LIFEEX) + B(G(LIFEEX), country) +# .. ..$ residuals : Named num [1:891] -8.2839 -4.0289 0.0449 1.8231 -0.5267 ... +# .. ..$ coefficients : num [1:3, 1:4] 2.352 0.782 -2.616 0.608 0.169 ... +# .. ..$ aliased : Named logi [1:3] FALSE FALSE FALSE +# .. ..$ sigma : num 5.27 +# .. ..$ df : int [1:3] 3 888 3 +# .. ..$ r.squared : num 0.0277 +# .. ..$ adj.r.squared: num 0.0255 +# .. ..$ fstatistic : Named num [1:3] 12.7 2 888 +# .. ..$ cov.unscaled : num [1:3, 1:3] 1.33e-02 -1.13e-05 -2.00e-02 -1.13e-05 1.02e-03 ... +# .. ..$ na.action : 'omit' Named int [1:146] 1 2 3 4 5 6 7 8 9 10 ... +# ..$ Upper middle income:List of 12 +# .. ..$ call : language FUN(formula = ..1, data = y) +# .. ..$ terms :Classes 'terms', 'formula' language G(PCGDP) ~ G(LIFEEX) + B(G(LIFEEX), country) +# .. ..$ residuals : Named num [1:298] 0.7659 0.9133 0.0921 0.996 0.0765 ... +# .. ..$ coefficients : num [1:3, 1:4] 0.584 0.456 4.112 2.472 0.652 ... +# .. ..$ aliased : Named logi [1:3] FALSE FALSE FALSE +# .. ..$ sigma : num 11.4 +# .. ..$ df : int [1:3] 3 295 3 +# .. ..$ r.squared : num 0.00658 +# .. ..$ adj.r.squared: num -0.000152 +# .. ..$ fstatistic : Named num [1:3] 0.977 2 295 +# .. ..$ cov.unscaled : num [1:3, 1:3] 0.047213 0.000438 -0.070778 0.000438 0.003285 ... +# .. ..$ na.action : 'omit' Named int [1:68] 1 61 62 63 64 65 66 67 68 69 ... ``` We can turn this list into a *data.table* again by calling first `get_elem` to recursively extract the coefficient matrices and then `unlist2d` to recursively bind them to a new *data.table*: -```{r} + +```r lm_summary_list %>% get_elem("coefficients") %>% unlist2d(idcols = .c(Region, Income), row.names = "Coef", DT = TRUE) %>% head +# Region Income Coef Estimate Std. Error t value +# +# 1: East Asia & Pacific High income (Intercept) 0.5313479 0.7058550 0.7527720 +# 2: East Asia & Pacific High income G(LIFEEX) 2.4935584 0.7586943 3.2866443 +# 3: East Asia & Pacific High income B(G(LIFEEX), country) 3.8297123 1.6916770 2.2638554 +# 4: East Asia & Pacific Lower middle income (Intercept) 1.3476602 0.7008556 1.9228785 +# 5: East Asia & Pacific Lower middle income G(LIFEEX) 0.5238856 0.7574904 0.6916069 +# 6: East Asia & Pacific Lower middle income B(G(LIFEEX), country) 0.9494439 1.2031228 0.7891496 +# Pr(>|t|) +# +# 1: 0.451991327 +# 2: 0.001095466 +# 3: 0.024071386 +# 4: 0.055015131 +# 5: 0.489478164 +# 6: 0.430367103 ``` The fact that this is a nested list of matrices, and that we can save both the names of the lists at each level of nesting and the row- and column- names of the matrices make `unlist2d` a significant generalization of `rbindlist`^[`unlist2d` can similarly bind nested lists of arrays, data frames or *data.table*'s]. But why do all this fuzz if we could have simply done:? -```{r} + +```r DT[, qDT(coeftest(lm(G(PCGDP) ~ G(LIFEEX) + B(G(LIFEEX), country))), "Coef"), keyby = .(region, income)] %>% head +# Key: +# region income Coef Estimate Std. Error t value +# +# 1: East Asia & Pacific High income (Intercept) 0.5313479 0.7058550 0.7527720 +# 2: East Asia & Pacific High income G(LIFEEX) 2.4935584 0.7586943 3.2866443 +# 3: East Asia & Pacific High income B(G(LIFEEX), country) 3.8297123 1.6916770 2.2638554 +# 4: East Asia & Pacific Lower middle income (Intercept) 1.3476602 0.7008556 1.9228785 +# 5: East Asia & Pacific Lower middle income G(LIFEEX) 0.5238856 0.7574904 0.6916069 +# 6: East Asia & Pacific Lower middle income B(G(LIFEEX), country) 0.9494439 1.2031228 0.7891496 +# Pr(>|t|) +# +# 1: 0.451991327 +# 2: 0.001095466 +# 3: 0.024071386 +# 4: 0.055015131 +# 5: 0.489478164 +# 6: 0.430367103 ``` Well we might want to do more things with that list of linear models first before tidying it, so this is a more general workflow. We might also be interested in additional statistics like the R-squared or the F-statistic: -```{r} + +```r DT_sum <- lm_summary_list %>% get_elem("coef|r.sq|fstat", regex = TRUE) %>% unlist2d(idcols = .c(Region, Income, Statistic), @@ -399,18 +1096,90 @@ get_elem("coef|r.sq|fstat", regex = TRUE) %>% DT = TRUE) head(DT_sum) +# Region Income Statistic Coef Estimate Std. Error +# +# 1: East Asia & Pacific High income coefficients (Intercept) 0.5313479 0.7058550 +# 2: East Asia & Pacific High income coefficients G(LIFEEX) 2.4935584 0.7586943 +# 3: East Asia & Pacific High income coefficients B(G(LIFEEX), country) 3.8297123 1.6916770 +# 4: East Asia & Pacific High income r.squared NA NA +# 5: East Asia & Pacific High income adj.r.squared NA NA +# 6: East Asia & Pacific High income fstatistic NA NA +# t value Pr(>|t|) V1 value numdf dendf +# +# 1: 0.752772 0.451991327 NA NA NA NA +# 2: 3.286644 0.001095466 NA NA NA NA +# 3: 2.263855 0.024071386 NA NA NA NA +# 4: NA NA 0.05245359 NA NA NA +# 5: NA NA 0.04812690 NA NA NA +# 6: NA NA NA 12.12325 2 438 # Reshaping to long form: DT_sum %>% melt(1:4, na.rm = TRUE) %>% roworderv(1:2) %>% head(20) +# Region Income Statistic Coef variable +# +# 1: East Asia & Pacific High income coefficients (Intercept) Estimate +# 2: East Asia & Pacific High income coefficients G(LIFEEX) Estimate +# 3: East Asia & Pacific High income coefficients B(G(LIFEEX), country) Estimate +# 4: East Asia & Pacific High income coefficients (Intercept) Std. Error +# 5: East Asia & Pacific High income coefficients G(LIFEEX) Std. Error +# 6: East Asia & Pacific High income coefficients B(G(LIFEEX), country) Std. Error +# 7: East Asia & Pacific High income coefficients (Intercept) t value +# 8: East Asia & Pacific High income coefficients G(LIFEEX) t value +# 9: East Asia & Pacific High income coefficients B(G(LIFEEX), country) t value +# 10: East Asia & Pacific High income coefficients (Intercept) Pr(>|t|) +# 11: East Asia & Pacific High income coefficients G(LIFEEX) Pr(>|t|) +# 12: East Asia & Pacific High income coefficients B(G(LIFEEX), country) Pr(>|t|) +# 13: East Asia & Pacific High income r.squared V1 +# 14: East Asia & Pacific High income adj.r.squared V1 +# 15: East Asia & Pacific High income fstatistic value +# 16: East Asia & Pacific High income fstatistic numdf +# 17: East Asia & Pacific High income fstatistic dendf +# 18: East Asia & Pacific Lower middle income coefficients (Intercept) Estimate +# 19: East Asia & Pacific Lower middle income coefficients G(LIFEEX) Estimate +# 20: East Asia & Pacific Lower middle income coefficients B(G(LIFEEX), country) Estimate +# Region Income Statistic Coef variable +# value +# +# 1: 5.313479e-01 +# 2: 2.493558e+00 +# 3: 3.829712e+00 +# 4: 7.058550e-01 +# 5: 7.586943e-01 +# 6: 1.691677e+00 +# 7: 7.527720e-01 +# 8: 3.286644e+00 +# 9: 2.263855e+00 +# 10: 4.519913e-01 +# 11: 1.095466e-03 +# 12: 2.407139e-02 +# 13: 5.245359e-02 +# 14: 4.812690e-02 +# 15: 1.212325e+01 +# 16: 2.000000e+00 +# 17: 4.380000e+02 +# 18: 1.347660e+00 +# 19: 5.238856e-01 +# 20: 9.494439e-01 +# value ``` As a final example of this kind, lets suppose we are interested in the within-country correlations of all these variables by region and income group: -```{r} + +```r DT[, qDT(pwcor(W(.SD, country)), "Variable"), keyby = .(region, income), .SDcols = PCGDP:ODA] %>% head +# Key: +# region income Variable W.PCGDP W.LIFEEX W.GINI W.ODA +# +# 1: East Asia & Pacific High income W.PCGDP 1.0000000 0.7562668 0.6253844 -0.25258496 +# 2: East Asia & Pacific High income W.LIFEEX 0.7562668 1.0000000 0.3191255 -0.33611662 +# 3: East Asia & Pacific High income W.GINI 0.6253844 0.3191255 1.0000000 NA +# 4: East Asia & Pacific High income W.ODA -0.2525850 -0.3361166 NA 1.00000000 +# 5: East Asia & Pacific Lower middle income W.PCGDP 1.0000000 0.4685618 0.4428879 -0.02508852 +# 6: East Asia & Pacific Lower middle income W.LIFEEX 0.4685618 1.0000000 0.3231520 0.09356733 ``` In summary: The list processing features, statistical capabilities and efficient converters of *collapse* and the flexibility of *data.table* work well together, facilitating more complex workflows. @@ -429,8 +1198,6 @@ Mundlak, Yair. 1978. “On the Pooling of Time Series and Cross Section Data.” -```{r, echo=FALSE} -options(oldopts) -``` + diff --git a/vignettes/collapse_and_data.table.Rmd.orig b/vignettes/collapse_and_data.table.Rmd.orig new file mode 100644 index 00000000..94210f5f --- /dev/null +++ b/vignettes/collapse_and_data.table.Rmd.orig @@ -0,0 +1,434 @@ +--- +title: "collapse and data.table" +subtitle: "Harmony and High Performance" +author: "Sebastian Krantz" +date: "2021-06-27" +output: + rmarkdown::html_vignette: + toc: true + +vignette: > + %\VignetteIndexEntry{collapse and data.table} + %\VignetteEngine{knitr::rmarkdown} + %\VignetteEncoding{UTF-8} +--- + +```{css, echo=FALSE} +pre { + max-height: 500px; + overflow-y: auto; +} + +pre[class] { + max-height: 500px; +} +``` + + +```{r, echo = FALSE, message = FALSE, warning=FALSE} +library(data.table) +library(microbenchmark) +library(collapse) +knitr::opts_chunk$set(error = FALSE, message = FALSE, warning = FALSE, + comment = "#", tidy = FALSE, cache = TRUE, collapse = TRUE, + fig.width = 8, fig.height = 5, + out.width = '100%') + +# knitr::opts_chunk$set( +# comment = "#", +# error = FALSE, +# tidy = FALSE, +# cache = FALSE, +# collapse = TRUE, +# fig.width = 8, +# fig.height= 5, +# out.width='100%' +# ) + +RUNBENCH <- identical(Sys.getenv("RUNBENCH"), "TRUE") + +oldopts <- options(width = 100L) +set.seed(101) +``` + +This vignette focuses on using *collapse* with the popular *data.table* package by Matt Dowle and Arun Srinivasan. In contrast to *dplyr* and *plm* whose methods ('grouped_df', 'pseries', 'pdata.frame') *collapse* supports, the integration between *collapse* and *data.table* is hidden in the 'data.frame' methods and *collapse*'s C code. + +From version 1.6.0 *collapse* seamlessly handles *data.tables*, permitting reference operations (`set*`, `:=`) on data tables created with collapse (`qDT`) or returned from *collapse*'s data manipulation functions (= all functions except `.FAST_FUN`, `.OPERATOR_FUN`, `BY` and `TRA`, see the [NEWS]() for details on the low-level integration). Apart from *data.table* reference semantics, both packages work similarly on the C/C++ side of things, and nicely complement each other in functionality. + +## Overview of Both Packages + +Both *data.table* and *collapse* are high-performance packages that work well together. For effective co-use it is helpful to understand where each has its strengths, what one can do what the other cannot, and where they overlap. Therefore this small comparison: + +* *data.table* offers an enhanced data frame based class to contain data (including list columns). For this class it provides a concise data manipulation syntax which also includes fast aggregation / slit-apply-combine computing, (rolling, non-equi) joins, keying, reshaping, some time-series functionality like lagging and rolling statistics, set operations on tables and a number of very useful other functions like the fast csv reader, fast switches, list-transpose etc.. *data.table* makes data management, and computations on data very easy and salable, supporting huge datasets in a very memory efficient way. The package caters well to the end user by compressing an enormous amount of functionality into two square brackets `[]`. Some of the exported functions are great for programming and also support other classes, but a lot of the functionality and optimization of *data.table* happens under the hood and can only be accessed through the non-standard evaluation table `[i, j, by]` syntax. This syntax has a cost of about 1-3 milliseconds for each call. Memory efficiency and thread-parallelization make *data.table* the star performer on huge data. + +* *collapse* is class-agnostic in nature, supporting vectors, matrices, data frames and non-destructively handling most R classes and objects. It focuses on advanced statistical computing, proving fast column-wise grouped and weighted statistical functions, fast and complex data aggregation and transformations, linear fitting, time series and panel data computations, advanced summary statistics, and recursive processing of lists of data objects. It also includes powerful functions for data manipulation, grouping / factor generation, recoding, handling outliers and missing values. The package default for missing values is `na.rm = TRUE`, which is implemented efficiently in C/C++ in all functions. *collapse* supports both *tidyverse* (piped) and base R / standard evaluation programming. It makes accessible most of it's internal C/C++ based functionality (like grouping objects). *collapse*'s R functions are simple and strongly optimized, i.e. they access the serial C/C++ code quickly, resulting in baseline execution speeds of 10-50 microseconds. All of this makes *collapse* ideal for advanced statistical computing on matrices and larger datasets, and tasks requiring fast programs with repeated function executions. + + + + + +## Interoperating and some Do's and Dont's + +Applying *collapse* functions to a data.table always gives a data.table back e.g. + +```{r} +library(collapse) +library(magrittr) +library(data.table) + +DT <- qDT(wlddev) # collapse::qDT converts objects to data.table using a shallow copy + + +DT %>% gby(country) %>% gv(9:13) %>% fmean + +# Same thing, but notice that fmean give's NA's for missing countries +DT[, lapply(.SD, mean, na.rm = TRUE), keyby = country, .SDcols = 9:13] + +# This also works without magrittr pipes with the collap() function +collap(DT, ~ country, fmean, cols = 9:13) + +``` + +By default, *collapse* orders groups in aggregations, which is equivalent to using `keyby` with *data.table*. `gby / fgroup_by` has an argument `sort = FALSE` to yield an unordered grouping equivalent to *data.table*'s `by` on character data^[Grouping on numeric variables in *collapse* is always ordered.]. + +At this data size *collapse* outperforms *data.table* (which might reverse as data size grows, depending in your computer, the number of *data.table* threads used, and the function in question): + +```{r} +library(microbenchmark) + +microbenchmark(collapse = DT %>% gby(country) %>% get_vars(9:13) %>% fmean, + data.table = DT[, lapply(.SD, mean, na.rm = TRUE), keyby = country, .SDcols = 9:13]) + +``` + +It is critical to never do something like this: + +```{r} +DT[, lapply(.SD, fmean), keyby = country, .SDcols = 9:13] +``` +The reason is that *collapse* functions are S3 generic with methods for vectors, matrices and data frames among others. So you incur a method-dispatch for every column and every group the function is applied to. + +```{r} +fmean +methods(fmean) +``` + +You may now contend that `base::mean` is also S3 generic, but in this `DT[, lapply(.SD, mean, na.rm = TRUE), by = country, .SDcols = 9:13]` code *data.table* does not use `base::mean`, but `data.table:::gmean`, an internal optimized mean function which is efficiently applied over those groups (see `?data.table::GForce`). `fmean` works similar, and includes this functionality explicitly. + +```{r} +args(fmean.data.frame) +``` + +Here we can see the `x` argument for the data, the `g` argument for grouping vectors, a weight vector `w`, different options `TRA` to transform the original data using the computed means, and some functionality regarding missing values (default: removed / skipped), group names (which are added as row-names to a data frame, but not to a *data.table*) etc. So we can also do + +```{r} +fmean(gv(DT, 9:13), DT$country) + +# Or +g <- GRP(DT, "country") +add_vars(g[["groups"]], fmean(gv(DT, 9:13), g)) +``` +To give us the same result obtained through the high-level functions `gby / fgroup_by` or `collap`. This is however not what *data.table* is doing in `DT[, lapply(.SD, fmean), by = country, .SDcols = 9:13]`. Since `fmean` is not a function it recognizes and is able to optimize, it does something like this, + +```{r} +BY(gv(DT, 9:13), g, fmean) # using collapse::BY +``` +which applies `fmean` to every group in every column of the data. + +More generally, it is very important to understand that *collapse* is not based around applying functions to data by groups using some universal mechanism: The *dplyr* `data %>% group_by(...) %>% summarize(...) / mutate(...)` and *data.table* `[i, j, by]` syntax are essentially universal mechanisms to apply any function to data by groups. +*data.table* additionally internally optimizes some functions (`min, max, mean, median, var, sd, sum, prod, first, last, head, tail`) which they called GForce, `?data.table::GForce`. + +*collapse* instead provides grouped statistical and transformation functions where all grouped computation is done efficiently in C++, and some supporting mechanisms (`fgroup_by`, `collap`) to operate them. In *data.table* words, everything^[Apart from `collapse::BY` which is only an auxiliary function written in base R to perform flexible split-apply combine computing on vectors, matrices and data frames.] in *collapse*, the *Fast Statistical Functions*, data transformations, time series etc. is GForce optimized. + +The full set of optimized grouped statistical and transformation functions in *collapse* is: + +```{r} +.FAST_FUN +``` + +Additional optimized grouped functions include `TRA`, `qsu`, `varying`, `fFtest`, `psmat`, `psacf`, `pspacf`, `psccf`. + +The nice thing about those GForce (fast) functions provided by *collapse* is that they can be accessed explicitly and programmatically without any overhead as incurred through *data.table*, they cover a broader range of statistical operations (such as mode, distinct values, order statistics), support sampling weights, operate in a class-agnostic way on vectors, matrices, data.frame's and many related classes, and cover transformations (replacing and sweeping, scaling, (higher order) centering, linear fitting) and time series functionality (lags, differences and growth rates, including irregular time series and unbalanced panels). + + + +So if we would want to use `fmean` inside the *data.table*, we should do something like this: + +```{r} +# This does not save the grouping columns, we are simply passing a grouping vector to g +# and aggregating the subset of the data table (.SD). +DT[, fmean(.SD, country), .SDcols = 9:13] + +# If we want to keep the grouping columns, we need to group .SD first. +DT[, fmean(gby(.SD, country)), .SDcols = c(1L, 9:13)] +``` +Needless to say this kind of programming seems a bit arcane, so there is actually not that great of a scope to use collapse's *Fast Statistical Functions* for aggregations inside *data.table*. I drive this point home with a benchmark: +```{r} +microbenchmark(collapse = DT %>% gby(country) %>% get_vars(9:13) %>% fmean, + data.table = DT[, lapply(.SD, mean, na.rm = TRUE), keyby = country, .SDcols = 9:13], + data.table_base = DT[, lapply(.SD, base::mean, na.rm = TRUE), keyby = country, .SDcols = 9:13], + hybrid_bad = DT[, lapply(.SD, fmean), keyby = country, .SDcols = 9:13], + hybrid_ok = DT[, fmean(gby(.SD, country)), .SDcols = c(1L, 9:13)]) + +``` + +It is evident that *data.table* has some overhead, so there is absolutely no need to do this kind of syntax manipulation. + +There is more scope to use *collapse* transformation functions inside *data.table*. + + +Below some basic examples: + +```{r} +# Computing a column containing the sum of ODA received by country +DT[, sum_ODA := sum(ODA, na.rm = TRUE), by = country] +# Same using fsum; "replace_fill" overwrites missing values, "replace" keeps the +DT[, sum_ODA := fsum(ODA, country, TRA = "replace_fill")] +# Same: A native collapse solution using settransform (or its shortcut form) +settfm(DT, sum_ODA = fsum(ODA, country, TRA = "replace_fill")) + +# settfm may be more convenient than `:=` for multiple column modifications, +# each involving a different grouping: + # This computes the percentage of total ODA distributed received by + # each country both over time and within a given year +settfm(DT, perc_c_ODA = fsum(ODA, country, TRA = "%"), + perc_y_ODA = fsum(ODA, year, TRA = "%")) +``` +The `TRA` argument is available to all *Fast Statistical Functions* (see the macro `.FAST_STAT_FUN`) and offers 10 different replacing and sweeping operations. Note that `TRA()` can also be called directly to replace or sweep with a previously aggregated *data.table*. A set of operators `%rr%`, `%r+%`, `%r-%`, `%r*%`, `%r/%`, `%cr%`, `%c+%`, `%c-%`, `%c*%`, `%c/%` additionally facilitate row- or column-wise replacing or sweeping out vectors of statistics or other *data.table*'s. + +Similarly, we can use the following vector valued functions + +```{r} +setdiff(.FAST_FUN, .FAST_STAT_FUN) +``` + +for very efficient data transformations: + +```{r} +# Centering GDP +DT[, demean_PCGDP := PCGDP - mean(PCGDP, na.rm = TRUE), by = country] +DT[, demean_PCGDP := fwithin(PCGDP, country)] + +# Lagging GDP +DT[order(year), lag_PCGDP := shift(PCGDP, 1L), by = country] +DT[, lag_PCGDP := flag(PCGDP, 1L, country, year)] + +# Computing a growth rate +DT[order(year), growth_PCGDP := (PCGDP / shift(PCGDP, 1L) - 1) * 100, by = country] +DT[, lag_PCGDP := fgrowth(PCGDP, 1L, 1L, country, year)] # 1 lag, 1 iteration + +# Several Growth rates +DT[order(year), paste0("growth_", .c(PCGDP, LIFEEX, GINI, ODA)) := (.SD / shift(.SD, 1L) - 1) * 100, + by = country, .SDcols = 9:13] + +# Same thing using collapse +DT %<>% tfm(gv(., 9:13) %>% fgrowth(1L, 1L, country, year) %>% add_stub("growth_")) + +# Or even simpler using settransform and the Growth operator +settfmv(DT, 9:13, G, 1L, 1L, country, year, apply = FALSE) + +head(DT) + +``` + +Since transformations (`:=` operations) are not highly optimized in *data.table*, *collapse* will be faster in most circumstances. Also time series functionality in *collapse* is significantly faster as it does not require data to be ordered or balanced to compute. For example `flag` computes an ordered lag without sorting the entire data first. + +```{r} +# Lets generate a large dataset and benchmark this stuff +DT_large <- replicate(1000, qDT(wlddev), simplify = FALSE) %>% + lapply(tfm, country = paste(country, rnorm(1))) %>% + rbindlist + +# 12.7 million Obs +fdim(DT_large) + +microbenchmark( + S1 = DT_large[, sum_ODA := sum(ODA, na.rm = TRUE), by = country], + S2 = DT_large[, sum_ODA := fsum(ODA, country, TRA = "replace_fill")], + S3 = settfm(DT_large, sum_ODA = fsum(ODA, country, TRA = "replace_fill")), + W1 = DT_large[, demean_PCGDP := PCGDP - mean(PCGDP, na.rm = TRUE), by = country], + W2 = DT_large[, demean_PCGDP := fwithin(PCGDP, country)], + L1 = DT_large[order(year), lag_PCGDP := shift(PCGDP, 1L), by = country], + L2 = DT_large[, lag_PCGDP := flag(PCGDP, 1L, country, year)], + L3 = DT_large[, lag_PCGDP := shift(PCGDP, 1L), by = country], # Not ordered + L4 = DT_large[, lag_PCGDP := flag(PCGDP, 1L, country)], # Not ordered + times = 5 +) + +rm(DT_large) +gc() +``` + +## Further *collapse* features supporting *data.table*'s + +As mentioned, `qDT` is a flexible and very fast function to create / column-wise convert R objects to *data.table*'s. You can also row-wise convert a matrix to data.table using `mrtl`: + +```{r} +# Creating a matrix from mtcars +m <- qM(mtcars) +str(m) + +# Demonstrating another nice feature of qDT +qDT(m, row.names.col = "car") %>% head + +# Row-wise conversion to data.table +mrtl(m, names = TRUE, return = "data.table") %>% head(2) + +``` + +The computational efficiency of these functions makes them very useful to use in *data.table* based workflows. + +```{r} +# Benchmark +microbenchmark(qDT(m, "car"), mrtl(m, TRUE, "data.table")) +``` +For example we could regress the growth rate of GDP per capita on the Growth rate of life expectancy in each country and save results in a *data.table*: + +```{r} +library(lmtest) + +wlddev %>% fselect(country, PCGDP, LIFEEX) %>% + # This counts missing values on PCGDP and LIFEEX only + na_omit(cols = -1L) %>% + # This removes countries with less than 20 observations + fsubset(fnobs(PCGDP, country, "replace_fill") > 20L) %>% + qDT %>% + # Run estimations by country using data.table + .[, qDT(coeftest(lm(G(PCGDP) ~ G(LIFEEX))), "Coef"), keyby = country] %>% head + +``` +If we only need the coefficients, not the standard errors, we can also use `collapse::flm` together with `mrtl`: + +```{r} +wlddev %>% fselect(country, PCGDP, LIFEEX) %>% + na_omit(cols = -1L) %>% + fsubset(fnobs(PCGDP, country, "replace_fill") > 20L) %>% + qDT %>% + .[, mrtl(flm(fgrowth(PCGDP)[-1L], + cbind(Intercept = 1, + LIFEEX = fgrowth(LIFEEX)[-1L])), TRUE), + keyby = country] %>% head + +``` + +... which provides a significant speed gain here: +```{r} + +microbenchmark( + +A = wlddev %>% fselect(country, PCGDP, LIFEEX) %>% + na_omit(cols = -1L) %>% + fsubset(fnobs(PCGDP, country, "replace_fill") > 20L) %>% + qDT %>% + .[, qDT(coeftest(lm(G(PCGDP) ~ G(LIFEEX))), "Coef"), keyby = country], + +B = wlddev %>% fselect(country, PCGDP, LIFEEX) %>% + na_omit(cols = -1L) %>% + fsubset(fnobs(PCGDP, country, "replace_fill") > 20L) %>% + qDT %>% + .[, mrtl(flm(fgrowth(PCGDP)[-1L], + cbind(Intercept = 1, + LIFEEX = fgrowth(LIFEEX)[-1L])), TRUE), + keyby = country] +) + +``` + +Another feature to highlight at this point are *collapse*'s list processing functions, in particular `rsplit`, `rapply2d`, `get_elem` and `unlist2d`. `rsplit` is an efficient recursive generalization of `split`: + +```{r} +DT_list <- rsplit(DT, country + year + PCGDP + LIFEEX ~ region + income) + +# Note: rsplit(DT, year + PCGDP + LIFEEX ~ region + income, flatten = TRUE) +# would yield a simple list with interacted categories (like split) + +str(DT_list, give.attr = FALSE) +``` + +We can use `rapply2d` to apply a function to each data frame / data.table in an arbitrary nested structure: + +```{r} +# This runs region-income level regressions, with country fixed effects +# following Mundlak (1978) +lm_summary_list <- DT_list %>% + rapply2d(lm, formula = G(PCGDP) ~ G(LIFEEX) + B(G(LIFEEX), country)) %>% + # Summarizing the results + rapply2d(summary, classes = "lm") + +# This is a nested list of linear model summaries +str(lm_summary_list, give.attr = FALSE) +``` + +We can turn this list into a *data.table* again by calling first `get_elem` to recursively extract the coefficient matrices and then `unlist2d` to recursively bind them to a new *data.table*: + +```{r} +lm_summary_list %>% + get_elem("coefficients") %>% + unlist2d(idcols = .c(Region, Income), + row.names = "Coef", + DT = TRUE) %>% head +``` + +The fact that this is a nested list of matrices, and that we can save both the names of the lists at each level of nesting and the row- and column- names of the matrices make `unlist2d` a significant generalization of `rbindlist`^[`unlist2d` can similarly bind nested lists of arrays, data frames or *data.table*'s]. + +But why do all this fuzz if we could have simply done:? + +```{r} +DT[, qDT(coeftest(lm(G(PCGDP) ~ G(LIFEEX) + B(G(LIFEEX), country))), "Coef"), + keyby = .(region, income)] %>% head +``` + +Well we might want to do more things with that list of linear models first before tidying it, so this is a more general workflow. We might also be interested in additional statistics like the R-squared or the F-statistic: +```{r} +DT_sum <- lm_summary_list %>% +get_elem("coef|r.sq|fstat", regex = TRUE) %>% + unlist2d(idcols = .c(Region, Income, Statistic), + row.names = "Coef", + DT = TRUE) + +head(DT_sum) + +# Reshaping to long form: +DT_sum %>% + melt(1:4, na.rm = TRUE) %>% + roworderv(1:2) %>% head(20) +``` + +As a final example of this kind, lets suppose we are interested in the within-country correlations of all these variables by region and income group: + +```{r} +DT[, qDT(pwcor(W(.SD, country)), "Variable"), + keyby = .(region, income), .SDcols = PCGDP:ODA] %>% head +``` + +In summary: The list processing features, statistical capabilities and efficient converters of *collapse* and the flexibility of *data.table* work well together, facilitating more complex workflows. + +## Additional Benchmarks + +See [here]() or [here](). + +These are all run on a 2 core laptop, so I honestly don't know how *collapse* scales on powerful multi-core machines. My own limited computational resources are part of the reason I did not opt for a thread-parallel package from the start. But a multi-core version of *collapse* will eventually be released, maybe by end of 2021. + +## References + +Mundlak, Yair. 1978. “On the Pooling of Time Series and Cross Section Data.” *Econometrica* 46 (1): 69–85. + + + + + +```{r, echo=FALSE} +options(oldopts) +``` + + diff --git a/vignettes/collapse_and_dplyr.Rmd b/vignettes/collapse_and_dplyr.Rmd index 143958f6..4921d58c 100644 --- a/vignettes/collapse_and_dplyr.Rmd +++ b/vignettes/collapse_and_dplyr.Rmd @@ -15,7 +15,7 @@ params: cache: true --- -```{css, echo=FALSE} + -```{r, echo=FALSE} -NCRAN <- identical(Sys.getenv("NCRAN"), "TRUE") -RUNBENCH <- NCRAN && identical(Sys.getenv("RUNBENCH"), "TRUE") -oldopts <- options(width = 100L) -``` -```{r, echo = FALSE, message = FALSE, warning=FALSE, eval=NCRAN} -library(dplyr) -library(microbenchmark) -library(collapse) -knitr::opts_chunk$set(error = FALSE, message = FALSE, warning = FALSE, - comment = "#", tidy = FALSE, cache = TRUE, collapse = TRUE, - fig.width = 8, fig.height = 5, - out.width = '100%') -set.seed(101) -``` This modus operandi is evident in the grouping mechanism of *dplyr*. When a data.frame is passed through *group_by*, a 'groups' attribute is attached: -```{r, eval=NCRAN} + +```r GGDC10S %>% group_by(Variable, Country) %>% attr("groups") +# # A tibble: 85 × 3 +# Variable Country .rows +# > +# 1 EMP ARG [62] +# 2 EMP BOL [61] +# 3 EMP BRA [62] +# 4 EMP BWA [52] +# 5 EMP CHL [63] +# 6 EMP CHN [62] +# 7 EMP COL [61] +# 8 EMP CRI [62] +# 9 EMP DEW [61] +# 10 EMP DNK [64] +# # ℹ 75 more rows ``` This object is a data.frame giving the unique groups and in the third (last) column vectors containing the indices of the rows belonging to that group. A command like `summarize` uses this information to split the data.frame into groups which are then passed sequentially to the function used and later recombined. These steps are also done in C++ which makes *dplyr* quite efficient. Now *collapse* is based around one-pass grouped computations at the C++ level using its own grouped statistical functions. In other words the data is not split and recombined at all but the entire computation is performed in a single C++ loop running through that data and completing the computations for each group simultaneously. This modus operandi is also evident in *collapse* grouping objects. The method `GRP.grouped_df` takes a *dplyr* grouping object from a grouped tibble and efficiently converts it to a *collapse* grouping object: -```{r, eval=NCRAN} + +```r GGDC10S %>% group_by(Variable, Country) %>% GRP %>% str +# Class 'GRP' hidden list of 9 +# $ N.groups : int 85 +# $ group.id : int [1:5027] 46 46 46 46 46 46 46 46 46 46 ... +# $ group.sizes : int [1:85] 62 61 62 52 63 62 61 62 61 64 ... +# $ groups :List of 2 +# ..$ Variable: chr [1:85] "EMP" "EMP" "EMP" "EMP" ... +# .. ..- attr(*, "label")= chr "Variable" +# .. ..- attr(*, "format.stata")= chr "%9s" +# ..$ Country : chr [1:85] "ARG" "BOL" "BRA" "BWA" ... +# .. ..- attr(*, "label")= chr "Country" +# .. ..- attr(*, "format.stata")= chr "%9s" +# $ group.vars : chr [1:2] "Variable" "Country" +# $ ordered : Named logi [1:2] TRUE FALSE +# ..- attr(*, "names")= chr [1:2] "ordered" "sorted" +# $ order : NULL +# $ group.starts: NULL +# $ call : language GRP.grouped_df(X = .) ``` This object is a list where the first three elements give the number of groups, the group-id to which each row belongs and a vector of group-sizes. A function like `fsum` uses this information to (for each column) create a result vector of size 'N.groups' and the run through the column using the 'group.id' vector to add the i'th data point to the 'group.id[i]'th element of the result vector. When the loop is finished, the grouped computation is also finished. @@ -165,20 +243,43 @@ It is obvious that *collapse* is faster than *dplyr* since it's method of comput Another improvement comes from replacing the *dplyr* verb `select` with `collapse::fselect`, and, for selection using column names, indices or functions use `collapse::get_vars` instead of `select_at` or `select_if`. Next to `get_vars`, *collapse* also introduces the predicates `num_vars`, `cat_vars`, `char_vars`, `fact_vars`, `logi_vars` and `date_vars` to efficiently select columns by type. -```{r, eval=NCRAN} + +```r GGDC10S %>% fgroup_by(Variable, Country) %>% get_vars(6:16) %>% fmedian +# # A tibble: 85 × 13 +# Variable Country AGR MIN MAN PU CON WRT TRA FIRE GOV OTH SUM +# +# 1 EMP ARG 1325. 47.4 1988. 1.05e2 7.82e2 1.85e3 5.80e2 464. 1739. 866. 9.74e3 +# 2 EMP BOL 943. 53.5 167. 4.46e0 6.60e1 1.32e2 9.70e1 15.3 NA 384. 1.84e3 +# 3 EMP BRA 17481. 225. 7208. 3.76e2 4.05e3 6.45e3 1.58e3 4355. 4450. 4479. 5.19e4 +# 4 EMP BWA 175. 12.2 13.1 3.71e0 1.90e1 2.11e1 6.75e0 10.4 53.8 31.2 3.61e2 +# 5 EMP CHL 690. 93.9 607. 2.58e1 2.30e2 4.84e2 2.05e2 106. NA 900. 3.31e3 +# 6 EMP CHN 293915 8150. 61761. 1.14e3 1.06e4 1.70e4 9.56e3 4328. 19468. 9954. 4.45e5 +# 7 EMP COL 3006. 84.0 1033. 3.71e1 4.19e2 1.55e3 3.91e2 655. NA 1430. 8.63e3 +# 8 EMP CRI 216. 1.49 114. 7.92e0 5.50e1 8.98e1 2.55e1 19.6 122. 60.6 7.19e2 +# 9 EMP DEW 2178 320. 8459. 2.47e2 2.10e3 4.45e3 1.53e3 1656 3700 900 2.65e4 +# 10 EMP DNK 187. 3.75 508. 1.36e1 1.65e2 4.61e2 1.61e2 169. 642. 104. 2.42e3 +# # ℹ 75 more rows microbenchmark(collapse = GGDC10S %>% fgroup_by(Variable, Country) %>% get_vars(6:16) %>% fmedian, hybrid = GGDC10S %>% group_by(Variable, Country) %>% select_at(6:16) %>% fmedian, dplyr = GGDC10S %>% group_by(Variable, Country) %>% select_at(6:16) %>% summarise_all(median, na.rm = TRUE)) +# Unit: microseconds +# expr min lq mean median uq max neval +# collapse 236.406 263.6095 303.309 295.9175 337.061 419.635 100 +# hybrid 2699.317 2894.9690 3573.611 2998.3505 3119.772 56249.212 100 +# dplyr 15923.908 16297.8280 18810.943 16742.5140 18578.105 71125.939 100 ``` Benchmarks on the different components of this code and with larger data are provided under 'Benchmarks'. Note that a grouped tibble created with `fgroup_by` can no longer be used for grouped computations with *dplyr* verbs like `mutate` or `summarize`. `fgroup_by` first assigns the class *GDP_df* which is for printing grouping information and subsetting, then the object classes (*tbl_df*, *data.table* or whatever else), followed by classes *grouped_df* and *data.frame*, and adds the grouping object in a 'groups' attribute. Since *tbl_df* is assigned before *grouped_df*, the object is treated by the *dplyr* ecosystem like a normal tibble. -```{r, eval=NCRAN} + +```r class(group_by(GGDC10S, Variable, Country)) +# [1] "grouped_df" "tbl_df" "tbl" "data.frame" class(fgroup_by(GGDC10S, Variable, Country)) +# [1] "GRP_df" "tbl_df" "tbl" "grouped_df" "data.frame" ``` The function `fungroup` removes classes 'GDP_df' and 'grouped_df' and the 'groups' attribute (and can thus also be used for grouped tibbles created with `dplyr::group_by`). @@ -187,47 +288,133 @@ class(fgroup_by(GGDC10S, Variable, Country)) The print method shown below reports the grouping variables, and then in square brackets the information `[number of groups | average group size (standard-deviation of group sizes)]`: -```{r, eval=NCRAN} + +```r fgroup_by(GGDC10S, Variable, Country) +# # A tibble: 5,027 × 16 +# Country Regioncode Region Variable Year AGR MIN MAN PU CON WRT TRA FIRE GOV +# +# 1 BWA SSA Sub-s… VA 1960 NA NA NA NA NA NA NA NA NA +# 2 BWA SSA Sub-s… VA 1961 NA NA NA NA NA NA NA NA NA +# 3 BWA SSA Sub-s… VA 1962 NA NA NA NA NA NA NA NA NA +# 4 BWA SSA Sub-s… VA 1963 NA NA NA NA NA NA NA NA NA +# 5 BWA SSA Sub-s… VA 1964 16.3 3.49 0.737 0.104 0.660 6.24 1.66 1.12 4.82 +# 6 BWA SSA Sub-s… VA 1965 15.7 2.50 1.02 0.135 1.35 7.06 1.94 1.25 5.70 +# 7 BWA SSA Sub-s… VA 1966 17.7 1.97 0.804 0.203 1.35 8.27 2.15 1.36 6.37 +# 8 BWA SSA Sub-s… VA 1967 19.1 2.30 0.938 0.203 0.897 4.31 1.72 1.54 7.04 +# 9 BWA SSA Sub-s… VA 1968 21.1 1.84 0.750 0.203 1.22 5.17 2.44 1.03 5.03 +# 10 BWA SSA Sub-s… VA 1969 21.9 5.24 2.14 0.578 3.47 5.75 2.72 1.23 5.59 +# # ℹ 5,017 more rows +# # ℹ 2 more variables: OTH , SUM +# +# Grouped by: Variable, Country [85 | 59 (7.7) 4-65] ``` Note further that `fselect` and `get_vars` are not full drop-in replacements for `select` because they do not have a grouped_df method: -```{r, eval=NCRAN} + +```r GGDC10S %>% group_by(Variable, Country) %>% select_at(6:16) %>% tail(3) +# # A tibble: 3 × 13 +# # Groups: Variable, Country [1] +# Variable Country AGR MIN MAN PU CON WRT TRA FIRE GOV OTH SUM +# +# 1 EMP EGY 5206. 29.0 2436. 307. 2733. 2977. 1992. 801. 5539. NA 22020. +# 2 EMP EGY 5186. 27.6 2374. 318. 2795. 3020. 2048. 815. 5636. NA 22219. +# 3 EMP EGY 5161. 24.8 2348. 325. 2931. 3110. 2065. 832. 5736. NA 22533. GGDC10S %>% group_by(Variable, Country) %>% get_vars(6:16) %>% tail(3) +# # A tibble: 3 × 11 +# AGR MIN MAN PU CON WRT TRA FIRE GOV OTH SUM +# +# 1 5206. 29.0 2436. 307. 2733. 2977. 1992. 801. 5539. NA 22020. +# 2 5186. 27.6 2374. 318. 2795. 3020. 2048. 815. 5636. NA 22219. +# 3 5161. 24.8 2348. 325. 2931. 3110. 2065. 832. 5736. NA 22533. ``` Since by default `keep.group_vars = TRUE` in the *Fast Statistical Functions*, the end result is nevertheless the same: -```{r, eval=NCRAN} + +```r GGDC10S %>% group_by(Variable, Country) %>% select_at(6:16) %>% fmean %>% tail(3) +# # A tibble: 3 × 13 +# Variable Country AGR MIN MAN PU CON WRT TRA FIRE GOV OTH SUM +# +# 1 VA VEN 6860. 35478. 1.96e4 1.06e3 1.17e4 1.93e4 8.03e3 5.60e3 NA 19986. 1.28e5 +# 2 VA ZAF 16419. 42928. 8.76e4 1.38e4 1.64e4 6.83e4 4.53e4 6.64e4 7.58e4 30167. 4.63e5 +# 3 VA ZMB 1268849. 1006099. 9.00e5 2.19e5 8.66e5 2.10e6 7.05e5 9.10e5 1.10e6 81871. 9.16e6 GGDC10S %>% group_by(Variable, Country) %>% get_vars(6:16) %>% fmean %>% tail(3) +# # A tibble: 3 × 13 +# Variable Country AGR MIN MAN PU CON WRT TRA FIRE GOV OTH SUM +# +# 1 VA VEN 6860. 35478. 1.96e4 1.06e3 1.17e4 1.93e4 8.03e3 5.60e3 NA 19986. 1.28e5 +# 2 VA ZAF 16419. 42928. 8.76e4 1.38e4 1.64e4 6.83e4 4.53e4 6.64e4 7.58e4 30167. 4.63e5 +# 3 VA ZMB 1268849. 1006099. 9.00e5 2.19e5 8.66e5 2.10e6 7.05e5 9.10e5 1.10e6 81871. 9.16e6 ``` Another useful verb introduced by *collapse* is `fgroup_vars`, which can be used to efficiently obtain the grouping columns or grouping variables from a grouped tibble: -```{r, eval=NCRAN} + +```r # fgroup_by fully supports grouped tibbles created with group_by or fgroup_by: GGDC10S %>% group_by(Variable, Country) %>% fgroup_vars %>% head(3) +# # A tibble: 3 × 2 +# Variable Country +# +# 1 VA BWA +# 2 VA BWA +# 3 VA BWA GGDC10S %>% fgroup_by(Variable, Country) %>% fgroup_vars %>% head(3) +# # A tibble: 3 × 2 +# Variable Country +# +# 1 VA BWA +# 2 VA BWA +# 3 VA BWA # The other possibilities: GGDC10S %>% group_by(Variable, Country) %>% fgroup_vars("unique") %>% head(3) +# # A tibble: 3 × 2 +# Variable Country +# +# 1 EMP ARG +# 2 EMP BOL +# 3 EMP BRA GGDC10S %>% group_by(Variable, Country) %>% fgroup_vars("names") +# [1] "Variable" "Country" GGDC10S %>% group_by(Variable, Country) %>% fgroup_vars("indices") +# [1] 4 1 GGDC10S %>% group_by(Variable, Country) %>% fgroup_vars("named_indices") +# Variable Country +# 4 1 GGDC10S %>% group_by(Variable, Country) %>% fgroup_vars("logical") +# [1] TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE GGDC10S %>% group_by(Variable, Country) %>% fgroup_vars("named_logical") +# Country Regioncode Region Variable Year AGR MIN MAN PU +# TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE +# CON WRT TRA FIRE GOV OTH SUM +# FALSE FALSE FALSE FALSE FALSE FALSE FALSE ``` Another *collapse* verb to mention here is `fsubset`, a faster alternative to `dplyr::filter` which also provides an option to flexibly subset columns after the select argument: -```{r, eval=NCRAN} + +```r # Two equivalent calls, the first is substantially faster GGDC10S %>% fsubset(Variable == "VA" & Year > 1990, Country, Year, AGR:GOV) %>% head(3) +# # A tibble: 3 × 11 +# Country Year AGR MIN MAN PU CON WRT TRA FIRE GOV +# +# 1 BWA 1991 303. 2647. 473. 161. 580. 807. 233. 433. 1073. +# 2 BWA 1992 333. 2691. 537. 178. 679. 725. 285. 517. 1234. +# 3 BWA 1993 405. 2625. 567. 219. 634. 772. 350. 673. 1487. GGDC10S %>% filter(Variable == "VA" & Year > 1990) %>% select(Country, Year, AGR:GOV) %>% head(3) +# # A tibble: 3 × 11 +# Country Year AGR MIN MAN PU CON WRT TRA FIRE GOV +# +# 1 BWA 1991 303. 2647. 473. 161. 580. 807. 233. 433. 1073. +# 2 BWA 1992 333. 2691. 537. 178. 679. 725. 285. 517. 1234. +# 3 BWA 1993 405. 2625. 567. 219. 634. 772. 350. 673. 1487. ``` *collapse* also offers `roworder`, `frename`, `colorder` and `ftransform`/`TRA` as fast replacements for `dplyr::arrange`, `dplyr::rename`, `dplyr::relocate` and `dplyr::mutate`. @@ -236,13 +423,26 @@ GGDC10S %>% filter(Variable == "VA" & Year > 1990) %>% select(Country, Year, AGR One can also aggregate with multiple functions at the same time. For such operations it is often necessary to use curly braces `{` to prevent first argument injection so that `%>% cbind(FUN1(.), FUN2(.))` does not evaluate as `%>% cbind(., FUN1(.), FUN2(.))`: -```{r, eval=NCRAN} + +```r GGDC10S %>% fgroup_by(Variable, Country) %>% get_vars(6:16) %>% { cbind(fmedian(.), add_stub(fmean(., keep.group_vars = FALSE), "mean_")) } %>% head(3) +# Variable Country AGR MIN MAN PU CON WRT TRA +# 1 EMP ARG 1324.5255 47.35255 1987.5912 104.738825 782.40283 1854.612 579.93982 +# 2 EMP BOL 943.1612 53.53538 167.1502 4.457895 65.97904 132.225 96.96828 +# 3 EMP BRA 17480.9810 225.43693 7207.7915 375.851832 4054.66103 6454.523 1580.81120 +# FIRE GOV OTH SUM mean_AGR mean_MIN mean_MAN mean_PU mean_CON +# 1 464.39920 1738.836 866.1119 9743.223 1419.8013 52.08903 1931.7602 101.720936 742.4044 +# 2 15.34259 NA 384.0678 1842.055 964.2103 56.03295 235.0332 5.346433 122.7827 +# 3 4354.86210 4449.942 4478.6927 51881.110 17191.3529 206.02389 6991.3710 364.573404 3524.7384 +# mean_WRT mean_TRA mean_FIRE mean_GOV mean_OTH mean_SUM +# 1 1982.1775 648.5119 627.79291 2043.471 992.4475 10542.177 +# 2 281.5164 115.4728 44.56442 NA 395.5650 2220.524 +# 3 8509.4612 2054.3731 4413.54448 5307.280 5710.2665 54272.985 ``` The function `add_stub` used above is a *collapse* function adding a prefix (default) or suffix to variables names. The *collapse* predicate `add_vars` provides a more efficient alternative to `cbind.data.frame`. The idea here is 'adding' variables to the data.frame in the first argument i.e. the attributes of the first argument are preserved, so the expression below still gives a tibble instead of a data.frame: @@ -251,7 +451,8 @@ The function `add_stub` used above is a *collapse* function adding a prefix (def -```{r, eval=NCRAN} + +```r GGDC10S %>% fgroup_by(Variable, Country) %>% { add_vars(get_vars(., "Reg", regex = TRUE) %>% ffirst, # Regular expression matching column names @@ -259,11 +460,21 @@ GGDC10S %>% fselect(., PU:TRA) %>% fmedian(keep.group_vars = FALSE) %>% add_stub("median_"), fselect(., PU:CON) %>% fmin(keep.group_vars = FALSE) %>% add_stub("min_")) } %>% head(3) +# # A tibble: 3 × 22 +# Variable Country Regioncode Region mean_Year mean_AGR mean_MIN mean_MAN mean_PU mean_CON mean_WRT +# +# 1 EMP ARG LAM Latin … 1980. 1420. 52.1 1932. 102. 742. 1982. +# 2 EMP BOL LAM Latin … 1980 964. 56.0 235. 5.35 123. 282. +# 3 EMP BRA LAM Latin … 1980. 17191. 206. 6991. 365. 3525. 8509. +# # ℹ 11 more variables: mean_TRA , mean_FIRE , mean_GOV , mean_OTH , +# # mean_SUM , median_PU , median_CON , median_WRT , median_TRA , +# # min_PU , min_CON ``` Another nice feature of `add_vars` is that it can also very efficiently reorder columns i.e. bind columns in a different order than they are passed. This can be done by simply specifying the positions the added columns should have in the final data frame, and then `add_vars` shifts the first argument columns to the right to fill in the gaps. -```{r, eval=NCRAN} + +```r GGDC10S %>% fsubset(Variable == "VA", Country, AGR, SUM) %>% fgroup_by(Country) %>% { @@ -272,40 +483,90 @@ GGDC10S %>% fsd(., keep.group_vars = FALSE) %>% add_stub("sd_"), pos = c(2,4,3,5)) } %>% head(3) +# # A tibble: 3 × 5 +# Country mean_AGR sd_AGR mean_SUM sd_SUM +# +# 1 ARG 14951. 33061. 152534. 301316. +# 2 BOL 3300. 4456. 22619. 33173. +# 3 BRA 76870. 59442. 1200563. 976963. ``` A much more compact solution to multi-function and multi-type aggregation is offered by the function *collapg*: -```{r, eval=NCRAN} + +```r # This aggregates numeric colums using the mean (fmean) and categorical columns with the mode (fmode) GGDC10S %>% fgroup_by(Variable, Country) %>% collapg %>% head(3) +# # A tibble: 3 × 16 +# Variable Country Regioncode Region Year AGR MIN MAN PU CON WRT TRA FIRE GOV +# +# 1 EMP ARG LAM Latin … 1980. 1420. 52.1 1932. 102. 742. 1982. 649. 628. 2043. +# 2 EMP BOL LAM Latin … 1980 964. 56.0 235. 5.35 123. 282. 115. 44.6 NA +# 3 EMP BRA LAM Latin … 1980. 17191. 206. 6991. 365. 3525. 8509. 2054. 4414. 5307. +# # ℹ 2 more variables: OTH , SUM ``` By default it aggregates numeric columns using the `fmean` and categorical columns using `fmode`, and preserves the order of all columns. Changing these defaults is very easy: -```{r, eval=NCRAN} + +```r # This aggregates numeric colums using the median and categorical columns using the first value GGDC10S %>% fgroup_by(Variable, Country) %>% collapg(fmedian, flast) %>% head(3) +# # A tibble: 3 × 16 +# Variable Country Regioncode Region Year AGR MIN MAN PU CON WRT TRA FIRE +# +# 1 EMP ARG LAM Latin Amer… 1980. 1325. 47.4 1988. 105. 782. 1855. 580. 464. +# 2 EMP BOL LAM Latin Amer… 1980 943. 53.5 167. 4.46 66.0 132. 97.0 15.3 +# 3 EMP BRA LAM Latin Amer… 1980. 17481. 225. 7208. 376. 4055. 6455. 1581. 4355. +# # ℹ 3 more variables: GOV , OTH , SUM ``` One can apply multiple functions to both numeric and/or categorical data: -```{r, eval=NCRAN} + +```r GGDC10S %>% fgroup_by(Variable, Country) %>% collapg(list(fmean, fmedian), list(first, fmode, flast)) %>% head(3) +# # A tibble: 3 × 32 +# Variable Country first.Regioncode fmode.Regioncode flast.Regioncode first.Region fmode.Region +# +# 1 EMP ARG LAM LAM LAM Latin America Latin America +# 2 EMP BOL LAM LAM LAM Latin America Latin America +# 3 EMP BRA LAM LAM LAM Latin America Latin America +# # ℹ 25 more variables: flast.Region , fmean.Year , fmedian.Year , fmean.AGR , +# # fmedian.AGR , fmean.MIN , fmedian.MIN , fmean.MAN , fmedian.MAN , +# # fmean.PU , fmedian.PU , fmean.CON , fmedian.CON , fmean.WRT , +# # fmedian.WRT , fmean.TRA , fmedian.TRA , fmean.FIRE , fmedian.FIRE , +# # fmean.GOV , fmedian.GOV , fmean.OTH , fmedian.OTH , fmean.SUM , +# # fmedian.SUM ``` Applying multiple functions to only numeric (or only categorical) data allows return in a long format: -```{r, eval=NCRAN} + +```r GGDC10S %>% fgroup_by(Variable, Country) %>% collapg(list(fmean, fmedian), cols = is.numeric, return = "long") %>% head(3) +# # A tibble: 3 × 15 +# Function Variable Country Year AGR MIN MAN PU CON WRT TRA FIRE GOV OTH +# +# 1 fmean EMP ARG 1980. 1420. 52.1 1932. 102. 742. 1982. 649. 628. 2043. 992. +# 2 fmean EMP BOL 1980 964. 56.0 235. 5.35 123. 282. 115. 44.6 NA 396. +# 3 fmean EMP BRA 1980. 17191. 206. 6991. 365. 3525. 8509. 2054. 4414. 5307. 5710. +# # ℹ 1 more variable: SUM ``` Finally, `collapg` also makes it very easy to apply aggregator functions to certain columns only: -```{r, eval=NCRAN} + +```r GGDC10S %>% fgroup_by(Variable, Country) %>% collapg(custom = list(fmean = 6:8, fmedian = 10:12)) %>% head(3) +# # A tibble: 3 × 8 +# Variable Country AGR MIN MAN CON WRT TRA +# +# 1 EMP ARG 1420. 52.1 1932. 782. 1855. 580. +# 2 EMP BOL 964. 56.0 235. 66.0 132. 97.0 +# 3 EMP BRA 17191. 206. 6991. 4055. 6455. 1581. ``` To understand more about `collapg`, look it up in the documentation (`?collapg`). @@ -314,16 +575,29 @@ GGDC10S %>% fgroup_by(Variable, Country) %>% Weighted aggregations are possible with the functions `fsum, fprod, fmean, fmedian, fnth, fmode, fvar` and `fsd`. The implementation is such that by default (option `keep.w = TRUE`) these functions also aggregate the weights, so that further weighted computations can be performed on the aggregated data. `fprod` saves the product of the weights, whereas the other functions save the sum of the weights in a column next to the grouping variables. If `na.rm = TRUE` (the default), rows with missing weights are omitted from the computation. -```{r, eval=NCRAN} + +```r # This computes a frequency-weighted grouped standard-deviation, taking the total EMP / VA as weight GGDC10S %>% fgroup_by(Variable, Country) %>% fselect(AGR:SUM) %>% fsd(SUM) %>% head(3) +# # A tibble: 3 × 13 +# Variable Country sum.SUM AGR MIN MAN PU CON WRT TRA FIRE GOV OTH +# +# 1 EMP ARG 653615. 225. 22.2 176. 20.5 285. 856. 195. 493. 1123. 506. +# 2 EMP BOL 135452. 99.7 17.1 168. 4.87 123. 324. 98.1 69.8 NA 258. +# 3 EMP BRA 3364925. 1587. 73.8 2952. 93.8 1861. 6285. 1306. 3003. 3621. 4257. # This computes a weighted grouped mode, taking the total EMP / VA as weight GGDC10S %>% fgroup_by(Variable, Country) %>% fselect(AGR:SUM) %>% fmode(SUM) %>% head(3) +# # A tibble: 3 × 13 +# Variable Country sum.SUM AGR MIN MAN PU CON WRT TRA FIRE GOV OTH +# +# 1 EMP ARG 653615. 1162. 127. 2164. 152. 1415. 3768. 1060. 1748. 4336. 1999. +# 2 EMP BOL 135452. 819. 37.6 604. 10.8 433. 893. 333. 321. NA 1057. +# 3 EMP BRA 3364925. 16451. 313. 11841. 388. 8154. 21860. 5169. 12011. 12149. 14235. ``` The weighted variance / standard deviation is currently only implemented with frequency weights. @@ -331,11 +605,19 @@ The weighted variance / standard deviation is currently only implemented with fr Weighted aggregations may also be performed with `collapg`. By default `fsum` is used to compute a sum of the weights, but it is also possible here to aggregate the weights with other functions: -```{r, eval=NCRAN} + +```r # This aggregates numeric colums using the weighted mean (the default) and categorical columns using the weighted mode (the default). # Weights (column SUM) are aggregated using both the sum and the maximum. GGDC10S %>% group_by(Variable, Country) %>% collapg(w = SUM, wFUN = list(fsum, fmax)) %>% head(3) +# # A tibble: 3 × 17 +# Variable Country fsum.SUM fmax.SUM Regioncode Region Year AGR MIN MAN PU CON WRT +# +# 1 EMP ARG 653615. 17929. LAM Latin … 1985. 1361. 56.5 1935. 105. 811. 2217. +# 2 EMP BOL 135452. 4508. LAM Latin … 1987. 977. 57.9 296. 7.07 167. 400. +# 3 EMP BRA 3364925. 102572. LAM Latin … 1989. 17746. 238. 8466. 389. 4436. 11376. +# # ℹ 4 more variables: TRA , FIRE , GOV , OTH ``` @@ -361,37 +643,80 @@ GGDC10S %>% group_by(Variable, Country) %>% ### 2.1 Fast Transform and Compute Variables The function `ftransform` can be used to manipulate columns in the same ways as `mutate`: -```{r, eval=NCRAN} + +```r GGDC10S %>% fsubset(Variable == "VA", Country, Year, AGR, SUM) %>% ftransform(AGR_perc = AGR / SUM * 100, # Computing % of VA in Agriculture AGR_mean = fmean(AGR), # Average Agricultural VA AGR = NULL, SUM = NULL) %>% # Deleting columns AGR and SUM head +# # A tibble: 6 × 4 +# Country Year AGR_perc AGR_mean +# +# 1 BWA 1960 NA 5137561. +# 2 BWA 1961 NA 5137561. +# 3 BWA 1962 NA 5137561. +# 4 BWA 1963 NA 5137561. +# 5 BWA 1964 43.5 5137561. +# 6 BWA 1965 40.0 5137561. ``` The modification brought by `ftransformv` enables transformations of groups of columns like `dplyr::mutate_at` and `dplyr::mutate_if`: -```{r, eval=NCRAN} + +```r # This replaces variables mpg, carb and wt by their log (.c turns expressions into character vectors) mtcars %>% ftransformv(.c(mpg, carb, wt), log) %>% head +# mpg cyl disp hp drat wt qsec vs am gear carb +# Mazda RX4 3.044522 6 160 110 3.90 0.9631743 16.46 0 1 4 1.3862944 +# Mazda RX4 Wag 3.044522 6 160 110 3.90 1.0560527 17.02 0 1 4 1.3862944 +# Datsun 710 3.126761 4 108 93 3.85 0.8415672 18.61 1 1 4 0.0000000 +# Hornet 4 Drive 3.063391 6 258 110 3.08 1.1678274 19.44 1 0 3 0.0000000 +# Hornet Sportabout 2.928524 8 360 175 3.15 1.2354715 17.02 0 0 3 0.6931472 +# Valiant 2.895912 6 225 105 2.76 1.2412686 20.22 1 0 3 0.0000000 # Logging numeric variables iris %>% ftransformv(is.numeric, log) %>% head +# Sepal.Length Sepal.Width Petal.Length Petal.Width Species +# 1 1.629241 1.252763 0.3364722 -1.6094379 setosa +# 2 1.589235 1.098612 0.3364722 -1.6094379 setosa +# 3 1.547563 1.163151 0.2623643 -1.6094379 setosa +# 4 1.526056 1.131402 0.4054651 -1.6094379 setosa +# 5 1.609438 1.280934 0.3364722 -1.6094379 setosa +# 6 1.686399 1.360977 0.5306283 -0.9162907 setosa ``` Instead of `column = value` type arguments, it is also possible to pass a single list of transformed variables to `ftransform`, which will be regarded in the same way as an evaluated list of `column = value` arguments. It can be used for more complex transformations: -```{r, eval=NCRAN} + +```r # Logging values and replacing generated Inf values mtcars %>% ftransform(fselect(., mpg, cyl, vs:gear) %>% lapply(log) %>% replace_Inf) %>% head +# mpg cyl disp hp drat wt qsec vs am gear carb +# Mazda RX4 3.044522 1.791759 160 110 3.90 2.620 16.46 NA 0 1.386294 4 +# Mazda RX4 Wag 3.044522 1.791759 160 110 3.90 2.875 17.02 NA 0 1.386294 4 +# Datsun 710 3.126761 1.386294 108 93 3.85 2.320 18.61 0 0 1.386294 1 +# Hornet 4 Drive 3.063391 1.791759 258 110 3.08 3.215 19.44 0 NA 1.098612 1 +# Hornet Sportabout 2.928524 2.079442 360 175 3.15 3.440 17.02 NA NA 1.098612 2 +# Valiant 2.895912 1.791759 225 105 2.76 3.460 20.22 0 NA 1.098612 1 ``` If only the computed columns need to be returned, `fcompute` provides an efficient alternative: -```{r, eval=NCRAN} + +```r GGDC10S %>% fsubset(Variable == "VA", Country, Year, AGR, SUM) %>% fcompute(AGR_perc = AGR / SUM * 100, AGR_mean = fmean(AGR)) %>% head +# # A tibble: 6 × 2 +# AGR_perc AGR_mean +# +# 1 NA 5137561. +# 2 NA 5137561. +# 3 NA 5137561. +# 4 NA 5137561. +# 5 43.5 5137561. +# 6 40.0 5137561. ``` `ftransform` and `fcompute` are an order of magnitude faster than `mutate`, but they do not support grouped computations using arbitrary functions. We will see that this is hardly a limitation as *collapse* provides very efficient and elegant alternative programming mechanisms... @@ -424,12 +749,31 @@ All statistical (scalar-valued) functions in the collapse package (`fsum, fprod, Simple transformations are again straightforward to specify: -```{r, eval=NCRAN} + +```r # This subtracts the median value from all data points i.e. centers on the median GGDC10S %>% num_vars %>% fmedian(TRA = "-") %>% head +# # A tibble: 6 × 12 +# Year AGR MIN MAN PU CON WRT TRA FIRE GOV OTH SUM +# +# 1 -22 NA NA NA NA NA NA NA NA NA NA NA +# 2 -21 NA NA NA NA NA NA NA NA NA NA NA +# 3 -20 NA NA NA NA NA NA NA NA NA NA NA +# 4 -19 NA NA NA NA NA NA NA NA NA NA NA +# 5 -18 -4378. -170. -3717. -168. -1473. -3767. -1173. -959. -3924. -1431. -23149. +# 6 -17 -4379. -171. -3717. -168. -1472. -3767. -1173. -959. -3923. -1430. -23147. # This replaces all data points with the mode GGDC10S %>% char_vars %>% fmode(TRA = "replace") %>% head +# # A tibble: 6 × 4 +# Country Regioncode Region Variable +# +# 1 USA ASI Asia EMP +# 2 USA ASI Asia EMP +# 3 USA ASI Asia EMP +# 4 USA ASI Asia EMP +# 5 USA ASI Asia EMP +# 6 USA ASI Asia EMP ``` Similarly for grouped transformations: @@ -439,18 +783,33 @@ Similarly for grouped transformations: -```{r, eval=NCRAN} + +```r # Replacing data with the 2nd quartile (25%) GGDC10S %>% fselect(Variable, Country, AGR:SUM) %>% fgroup_by(Variable, Country) %>% fnth(0.25, TRA = "replace_fill") %>% head(3) +# # A tibble: 3 × 13 +# Variable Country AGR MIN MAN PU CON WRT TRA FIRE GOV OTH SUM +# +# 1 VA BWA 63.5 33.1 27.3 7.36 26.8 31.1 13.2 12.0 33.6 11.5 262. +# 2 VA BWA 63.5 33.1 27.3 7.36 26.8 31.1 13.2 12.0 33.6 11.5 262. +# 3 VA BWA 63.5 33.1 27.3 7.36 26.8 31.1 13.2 12.0 33.6 11.5 262. # Scaling sectoral data by Variable and Country GGDC10S %>% fselect(Variable, Country, AGR:SUM) %>% fgroup_by(Variable, Country) %>% fsd(TRA = "/") %>% head - - +# # A tibble: 6 × 13 +# Variable Country AGR MIN MAN PU CON WRT TRA FIRE GOV +# +# 1 VA BWA NA NA NA NA NA NA NA NA NA +# 2 VA BWA NA NA NA NA NA NA NA NA NA +# 3 VA BWA NA NA NA NA NA NA NA NA NA +# 4 VA BWA NA NA NA NA NA NA NA NA NA +# 5 VA BWA 0.0270 0.000556 0.000523 3.88e-4 5.11e-4 0.00194 0.00154 5.23e-4 0.00134 +# 6 VA BWA 0.0260 0.000397 0.000723 5.03e-4 1.04e-3 0.00220 0.00180 5.83e-4 0.00158 +# # ℹ 2 more variables: OTH , SUM ``` @@ -459,31 +818,52 @@ GGDC10S %>% The benchmarks below will demonstrate that these internal sweeping and replacement operations fully performed in C++ compute significantly faster than using `dplyr::mutate`, especially as the number of groups grows large. The S3 generic nature of the *Fast Statistical Functions* further allows us to perform grouped mutations on the fly (together with `ftransform` or `fcompute`), without the need of first creating a grouped tibble: -```{r, eval=NCRAN} + +```r # AGR_gmed = TRUE if AGR is greater than it's median value, grouped by Variable and Country # Note: This calls fmedian.default settransform(GGDC10S, AGR_gmed = AGR > fmedian(AGR, list(Variable, Country), TRA = "replace")) tail(GGDC10S, 3) +# # A tibble: 3 × 17 +# Country Regioncode Region Variable Year AGR MIN MAN PU CON WRT TRA FIRE GOV +# +# 1 EGY MENA Middle Ea… EMP 2010 5206. 29.0 2436. 307. 2733. 2977. 1992. 801. 5539. +# 2 EGY MENA Middle Ea… EMP 2011 5186. 27.6 2374. 318. 2795. 3020. 2048. 815. 5636. +# 3 EGY MENA Middle Ea… EMP 2012 5161. 24.8 2348. 325. 2931. 3110. 2065. 832. 5736. +# # ℹ 3 more variables: OTH , SUM , AGR_gmed # Dividing (scaling) the sectoral data (columns 6 through 16) by their grouped standard deviation settransformv(GGDC10S, 6:16, fsd, list(Variable, Country), TRA = "/", apply = FALSE) tail(GGDC10S, 3) +# # A tibble: 3 × 17 +# Country Regioncode Region Variable Year AGR MIN MAN PU CON WRT TRA FIRE GOV +# +# 1 EGY MENA Middle Ea… EMP 2010 8.41 2.28 4.32 3.56 3.62 3.75 3.75 3.14 3.80 +# 2 EGY MENA Middle Ea… EMP 2011 8.38 2.17 4.21 3.68 3.70 3.81 3.86 3.19 3.86 +# 3 EGY MENA Middle Ea… EMP 2012 8.34 1.95 4.17 3.76 3.88 3.92 3.89 3.26 3.93 +# # ℹ 3 more variables: OTH , SUM , AGR_gmed rm(GGDC10S) - ``` -```{r, echo=FALSE, eval=NCRAN} -GGDC10S <- qTBL(GGDC10S) -``` + Weights are easily added to any grouped transformation: -```{r, eval=NCRAN} + +```r # This subtracts weighted group means from the data, using SUM column as weights.. GGDC10S %>% fselect(Variable, Country, AGR:SUM) %>% fgroup_by(Variable, Country) %>% fmean(SUM, "-") %>% head - +# # A tibble: 6 × 13 +# Variable Country SUM AGR MIN MAN PU CON WRT TRA FIRE GOV OTH +# +# 1 VA BWA NA NA NA NA NA NA NA NA NA NA NA +# 2 VA BWA NA NA NA NA NA NA NA NA NA NA NA +# 3 VA BWA NA NA NA NA NA NA NA NA NA NA NA +# 4 VA BWA NA NA NA NA NA NA NA NA NA NA NA +# 5 VA BWA 37.5 -1301. -13317. -2965. -529. -2746. -6540. -2157. -4431. -7551. -2613. +# 6 VA BWA 39.3 -1302. -13318. -2964. -529. -2745. -6540. -2156. -4431. -7550. -2613. ``` @@ -515,28 +895,55 @@ GGDC10S %>% Sequential operations are also easily performed: -```{r, eval=NCRAN} + +```r # This scales and then subtracts the median GGDC10S %>% fselect(Variable, Country, AGR:SUM) %>% fgroup_by(Variable, Country) %>% fsd(TRA = "/") %>% fmedian(TRA = "-") +# # A tibble: 5,027 × 13 +# Variable Country AGR MIN MAN PU CON WRT TRA FIRE GOV OTH SUM +# * +# 1 VA BWA NA NA NA NA NA NA NA NA NA NA NA +# 2 VA BWA NA NA NA NA NA NA NA NA NA NA NA +# 3 VA BWA NA NA NA NA NA NA NA NA NA NA NA +# 4 VA BWA NA NA NA NA NA NA NA NA NA NA NA +# 5 VA BWA -0.182 -0.235 -0.183 -0.245 -0.118 -0.0820 -0.0724 -0.0661 -0.108 -0.0848 -0.146 +# 6 VA BWA -0.183 -0.235 -0.183 -0.245 -0.117 -0.0817 -0.0722 -0.0660 -0.108 -0.0846 -0.146 +# 7 VA BWA -0.180 -0.235 -0.183 -0.245 -0.117 -0.0813 -0.0720 -0.0659 -0.107 -0.0843 -0.145 +# 8 VA BWA -0.177 -0.235 -0.183 -0.245 -0.117 -0.0826 -0.0724 -0.0659 -0.107 -0.0841 -0.146 +# 9 VA BWA -0.174 -0.235 -0.183 -0.245 -0.117 -0.0823 -0.0717 -0.0661 -0.108 -0.0848 -0.146 +# 10 VA BWA -0.173 -0.234 -0.182 -0.243 -0.115 -0.0821 -0.0715 -0.0660 -0.108 -0.0846 -0.145 +# # ℹ 5,017 more rows +# +# Grouped by: Variable, Country [85 | 59 (7.7) 4-65] ``` Of course it is also possible to combine multiple functions as in the aggregation section, or to add variables to existing data: -```{r, eval=NCRAN} + +```r # This adds a groupwise observation count next to each column add_vars(GGDC10S, seq(7,27,2)) <- GGDC10S %>% fgroup_by(Variable, Country) %>% fselect(AGR:SUM) %>% fnobs("replace_fill") %>% add_stub("N_") head(GGDC10S) +# # A tibble: 6 × 27 +# Country Regioncode Region Variable Year AGR N_AGR MIN N_MIN MAN N_MAN PU N_PU CON +# +# 1 BWA SSA Sub-sa… VA 1960 NA 47 NA 47 NA 47 NA 47 NA +# 2 BWA SSA Sub-sa… VA 1961 NA 47 NA 47 NA 47 NA 47 NA +# 3 BWA SSA Sub-sa… VA 1962 NA 47 NA 47 NA 47 NA 47 NA +# 4 BWA SSA Sub-sa… VA 1963 NA 47 NA 47 NA 47 NA 47 NA +# 5 BWA SSA Sub-sa… VA 1964 16.3 47 3.49 47 0.737 47 0.104 47 0.660 +# 6 BWA SSA Sub-sa… VA 1965 15.7 47 2.50 47 1.02 47 0.135 47 1.35 +# # ℹ 13 more variables: N_CON , WRT , N_WRT , TRA , N_TRA , FIRE , +# # N_FIRE , GOV , N_GOV , OTH , N_OTH , SUM , N_SUM rm(GGDC10S) ``` -```{r, echo=FALSE, eval=NCRAN} -GGDC10S <- qTBL(GGDC10S) -``` + There are lots of other examples one could construct using the 10 operations and 14 functions listed above, the examples provided just outline the suggested programming basics. Performance considerations make it very much worthwhile to spend some time and think how complex operations can be implemented in this programming framework, before defining some function in R and applying it to data using `dplyr::mutate`. @@ -550,33 +957,75 @@ Fundamentally, `TRA` is a generalization of `base::sweep` for column-wise groupe The two operations below are equivalent, although the first is slightly more efficient as it only requires one method dispatch and one check of the inputs: -```{r, eval=NCRAN} + +```r # This divides by the product GGDC10S %>% fgroup_by(Variable, Country) %>% get_vars(6:16) %>% fprod(TRA = "/") %>% head +# # A tibble: 6 × 11 +# AGR MIN MAN PU CON WRT TRA FIRE GOV +# +# 1 NA NA NA NA NA NA NA NA NA +# 2 NA NA NA NA NA NA NA NA NA +# 3 NA NA NA NA NA NA NA NA NA +# 4 NA NA NA NA NA NA NA NA NA +# 5 1.29e-105 2.81e-127 1.40e-101 4.44e-74 4.19e-102 3.97e-113 6.91e-92 1.01e-97 2.51e-117 +# 6 1.24e-105 2.00e-127 1.94e-101 5.75e-74 8.55e-102 4.49e-113 8.08e-92 1.13e-97 2.96e-117 +# # ℹ 2 more variables: OTH , SUM # Same thing GGDC10S %>% fgroup_by(Variable, Country) %>% get_vars(6:16) %>% TRA(fprod(., keep.group_vars = FALSE), "/") %>% head # [same as TRA(.,fprod(., keep.group_vars = FALSE),"/")] +# # A tibble: 6 × 11 +# AGR MIN MAN PU CON WRT TRA FIRE GOV +# +# 1 NA NA NA NA NA NA NA NA NA +# 2 NA NA NA NA NA NA NA NA NA +# 3 NA NA NA NA NA NA NA NA NA +# 4 NA NA NA NA NA NA NA NA NA +# 5 1.29e-105 2.81e-127 1.40e-101 4.44e-74 4.19e-102 3.97e-113 6.91e-92 1.01e-97 2.51e-117 +# 6 1.24e-105 2.00e-127 1.94e-101 5.75e-74 8.55e-102 4.49e-113 8.08e-92 1.13e-97 2.96e-117 +# # ℹ 2 more variables: OTH , SUM ``` `TRA.grouped_df` was designed such that it matches the columns of the statistics (aggregated columns) to those of the original data, and only transforms matching columns while returning the whole data frame. Thus it is easily possible to only apply a transformation to the first two sectors: -```{r, eval=NCRAN} + +```r # This only demeans Agriculture (AGR) and Mining (MIN) GGDC10S %>% fgroup_by(Variable, Country) %>% TRA(fselect(., AGR, MIN) %>% fmean(keep.group_vars = FALSE), "-") %>% head +# # A tibble: 6 × 16 +# Country Regioncode Region Variable Year AGR MIN MAN PU CON WRT TRA FIRE GOV +# +# 1 BWA SSA Sub-s… VA 1960 NA NA NA NA NA NA NA NA NA +# 2 BWA SSA Sub-s… VA 1961 NA NA NA NA NA NA NA NA NA +# 3 BWA SSA Sub-s… VA 1962 NA NA NA NA NA NA NA NA NA +# 4 BWA SSA Sub-s… VA 1963 NA NA NA NA NA NA NA NA NA +# 5 BWA SSA Sub-s… VA 1964 -446. -4505. 0.737 0.104 0.660 6.24 1.66 1.12 4.82 +# 6 BWA SSA Sub-s… VA 1965 -446. -4506. 1.02 0.135 1.35 7.06 1.94 1.25 5.70 +# # ℹ 2 more variables: OTH , SUM ``` Since `TRA` is already built into all *Fast Statistical Functions* as an argument, it is best used in computations where grouped statistics are computed using some other function. -```{r, eval=NCRAN} + +```r # Same as above, with one line of code using fmean.data.frame and ftransform... GGDC10S %>% ftransform(fmean(list(AGR = AGR, MIN = MIN), list(Variable, Country), TRA = "-")) %>% head - +# # A tibble: 6 × 16 +# Country Regioncode Region Variable Year AGR MIN MAN PU CON WRT TRA FIRE GOV +# +# 1 BWA SSA Sub-s… VA 1960 NA NA NA NA NA NA NA NA NA +# 2 BWA SSA Sub-s… VA 1961 NA NA NA NA NA NA NA NA NA +# 3 BWA SSA Sub-s… VA 1962 NA NA NA NA NA NA NA NA NA +# 4 BWA SSA Sub-s… VA 1963 NA NA NA NA NA NA NA NA NA +# 5 BWA SSA Sub-s… VA 1964 -446. -4505. 0.737 0.104 0.660 6.24 1.66 1.12 4.82 +# 6 BWA SSA Sub-s… VA 1965 -446. -4506. 1.02 0.135 1.35 7.06 1.94 1.25 5.70 +# # ℹ 2 more variables: OTH , SUM ``` @@ -588,16 +1037,36 @@ GGDC10S %>% ftransform(fmean(list(AGR = AGR, MIN = MIN), list(Variable, Country) Another potential use of `TRA` is to do computations in two- or more steps, for example if both aggregated and transformed data are needed, or if computations are more complex and involve other manipulations in-between the aggregating and sweeping part: -```{r, eval=NCRAN} + +```r # Get grouped tibble gGGDC <- GGDC10S %>% fgroup_by(Variable, Country) # Get aggregated data gsumGGDC <- gGGDC %>% fselect(AGR:SUM) %>% fsum head(gsumGGDC) +# # A tibble: 6 × 13 +# Variable Country AGR MIN MAN PU CON WRT TRA FIRE GOV OTH SUM +# +# 1 EMP ARG 88028. 3230. 1.20e5 6307. 4.60e4 1.23e5 4.02e4 3.89e4 1.27e5 6.15e4 6.54e5 +# 2 EMP BOL 58817. 3418. 1.43e4 326. 7.49e3 1.72e4 7.04e3 2.72e3 NA 2.41e4 1.35e5 +# 3 EMP BRA 1065864. 12773. 4.33e5 22604. 2.19e5 5.28e5 1.27e5 2.74e5 3.29e5 3.54e5 3.36e6 +# 4 EMP BWA 8839. 493. 8.49e2 145. 1.19e3 1.71e3 3.93e2 7.21e2 2.87e3 1.30e3 1.85e4 +# 5 EMP CHL 44220. 6389. 3.94e4 1850. 1.86e4 4.38e4 1.63e4 1.72e4 NA 6.32e4 2.51e5 +# 6 EMP CHN 17264654. 422972. 4.03e6 96364. 1.25e6 1.73e6 8.36e5 2.96e5 1.36e6 1.86e6 2.91e7 # Get transformed (scaled) data head(TRA(gGGDC, gsumGGDC, "/")) +# # A tibble: 6 × 16 +# Country Regioncode Region Variable Year AGR MIN MAN PU CON WRT +# +# 1 BWA SSA Sub-sahar… VA 1960 NA NA NA NA NA NA +# 2 BWA SSA Sub-sahar… VA 1961 NA NA NA NA NA NA +# 3 BWA SSA Sub-sahar… VA 1962 NA NA NA NA NA NA +# 4 BWA SSA Sub-sahar… VA 1963 NA NA NA NA NA NA +# 5 BWA SSA Sub-sahar… VA 1964 7.50e-4 1.65e-5 1.66e-5 1.03e-5 1.57e-5 6.82e-5 +# 6 BWA SSA Sub-sahar… VA 1965 7.24e-4 1.18e-5 2.30e-5 1.33e-5 3.20e-5 7.72e-5 +# # ℹ 5 more variables: TRA , FIRE , GOV , OTH , SUM ``` @@ -615,23 +1084,46 @@ Although both steps are efficiently done in C++, it would be even more efficient The functions `fbetween` and `fwithin` are slightly more memory efficient implementations of `fmean` invoked with different `TRA` options: -```{r, eval=NCRAN} + +```r GGDC10S %>% # Same as ... %>% fmean(TRA = "replace") fgroup_by(Variable, Country) %>% get_vars(6:16) %>% fbetween %>% tail(2) +# # A tibble: 2 × 11 +# AGR MIN MAN PU CON WRT TRA FIRE GOV OTH SUM +# +# 1 4444. 34.9 1614. 131. 997. 1307. 799. 320. 2958. NA 12605. +# 2 4444. 34.9 1614. 131. 997. 1307. 799. 320. 2958. NA 12605. GGDC10S %>% # Same as ... %>% fmean(TRA = "replace_fill") fgroup_by(Variable, Country) %>% get_vars(6:16) %>% fbetween(fill = TRUE) %>% tail(2) +# # A tibble: 2 × 11 +# AGR MIN MAN PU CON WRT TRA FIRE GOV OTH SUM +# +# 1 4444. 34.9 1614. 131. 997. 1307. 799. 320. 2958. NA 12605. +# 2 4444. 34.9 1614. 131. 997. 1307. 799. 320. 2958. NA 12605. GGDC10S %>% # Same as ... %>% fmean(TRA = "-") fgroup_by(Variable, Country) %>% get_vars(6:16) %>% fwithin %>% tail(2) +# # A tibble: 2 × 11 +# AGR MIN MAN PU CON WRT TRA FIRE GOV OTH SUM +# +# 1 742. -7.35 760. 187. 1798. 1713. 1249. 495. 2678. NA 9614. +# 2 717. -10.1 734. 194. 1934. 1803. 1266. 512. 2778. NA 9928. ``` Apart from higher speed, `fwithin` has a `mean` argument to assign an arbitrary mean to centered data, the default being `mean = 0`. A very common choice for such an added mean is just the overall mean of the data, which can be added in by invoking `mean = "overall.mean"`: -```{r, eval=NCRAN} + +```r GGDC10S %>% fgroup_by(Variable, Country) %>% fselect(Country, Variable, AGR:SUM) %>% fwithin(mean = "overall.mean") %>% tail(3) +# # A tibble: 3 × 13 +# Country Variable AGR MIN MAN PU CON WRT TRA FIRE GOV OTH SUM +# +# 1 EGY EMP 2527458. 1867903. 5539313. 3.36e5 1.80e6 3.39e6 1.47e6 1.66e6 1.71e6 NA 2.16e7 +# 2 EGY EMP 2527439. 1867902. 5539251. 3.36e5 1.80e6 3.39e6 1.47e6 1.66e6 1.71e6 NA 2.16e7 +# 3 EGY EMP 2527413. 1867899. 5539226. 3.36e5 1.80e6 3.39e6 1.47e6 1.66e6 1.72e6 NA 2.16e7 ``` @@ -645,26 +1137,51 @@ GGDC10S %>% This can also be done using weights. The code below uses the `SUM` column as weights, and then for each variable and each group subtracts out the weighted mean, and then adds the overall weighted column mean back to the centered columns. The `SUM` column is just kept as it is and added after the grouping columns. -```{r, eval=NCRAN} + +```r GGDC10S %>% fgroup_by(Variable, Country) %>% fselect(Country, Variable, AGR:SUM) %>% fwithin(SUM, mean = "overall.mean") %>% tail(3) +# # A tibble: 3 × 13 +# Country Variable SUM AGR MIN MAN PU CON WRT TRA FIRE GOV OTH +# +# 1 EGY EMP 22020. 429066006. 3.70e8 7.38e8 2.73e7 2.83e8 4.33e8 1.97e8 1.55e8 2.10e8 NA +# 2 EGY EMP 22219. 429065986. 3.70e8 7.38e8 2.73e7 2.83e8 4.33e8 1.97e8 1.55e8 2.10e8 NA +# 3 EGY EMP 22533. 429065961. 3.70e8 7.38e8 2.73e7 2.83e8 4.33e8 1.97e8 1.55e8 2.10e8 NA ``` Another argument to `fwithin` is the `theta` parameter, allowing partial- or quasi-demeaning operations, e.g. `fwithin(gdata, theta = theta)` is equal to `gdata - theta * fbetween(gdata)`. This is particularly useful to prepare data for variance components (also known as 'random-effects') estimation. Apart from `fbetween` and `fwithin`, the function `fscale` exists to efficiently scale and center data, to avoid sequential calls such as `... %>% fsd(TRA = "/") %>% fmean(TRA = "-")`. -```{r, eval=NCRAN} + +```r # This efficiently scales and centers (i.e. standardizes) the data GGDC10S %>% fgroup_by(Variable, Country) %>% fselect(Country, Variable, AGR:SUM) %>% fscale +# # A tibble: 5,027 × 13 +# Country Variable AGR MIN MAN PU CON WRT TRA FIRE GOV OTH SUM +# * +# 1 BWA VA NA NA NA NA NA NA NA NA NA NA NA +# 2 BWA VA NA NA NA NA NA NA NA NA NA NA NA +# 3 BWA VA NA NA NA NA NA NA NA NA NA NA NA +# 4 BWA VA NA NA NA NA NA NA NA NA NA NA NA +# 5 BWA VA -0.738 -0.717 -0.668 -0.805 -0.692 -0.603 -0.589 -0.635 -0.656 -0.596 -0.676 +# 6 BWA VA -0.739 -0.717 -0.668 -0.805 -0.692 -0.603 -0.589 -0.635 -0.656 -0.596 -0.676 +# 7 BWA VA -0.736 -0.717 -0.668 -0.805 -0.692 -0.603 -0.589 -0.635 -0.656 -0.595 -0.676 +# 8 BWA VA -0.734 -0.717 -0.668 -0.805 -0.692 -0.604 -0.589 -0.635 -0.655 -0.595 -0.676 +# 9 BWA VA -0.730 -0.717 -0.668 -0.805 -0.692 -0.604 -0.588 -0.635 -0.656 -0.596 -0.676 +# 10 BWA VA -0.729 -0.716 -0.667 -0.803 -0.690 -0.603 -0.588 -0.635 -0.656 -0.596 -0.675 +# # ℹ 5,017 more rows +# +# Grouped by: Variable, Country [85 | 59 (7.7) 4-65] ``` `fscale` also has additional `mean` and `sd` arguments allowing the user to (group-) scale data to an arbitrary mean and standard deviation. Setting `mean = FALSE` just scales the data but preserves the means, and is thus different from `fsd(..., TRA = "/")` which simply divides all values by the standard deviation: -```{r, eval=NCRAN} + +```r # Saving grouped tibble gGGDC <- GGDC10S %>% fgroup_by(Variable, Country) %>% @@ -672,15 +1189,43 @@ gGGDC <- GGDC10S %>% # Original means head(fmean(gGGDC)) +# # A tibble: 6 × 13 +# Variable Country AGR MIN MAN PU CON WRT TRA FIRE GOV OTH SUM +# +# 1 EMP ARG 1420. 52.1 1932. 102. 742. 1.98e3 6.49e2 628. 2043. 9.92e2 1.05e4 +# 2 EMP BOL 964. 56.0 235. 5.35 123. 2.82e2 1.15e2 44.6 NA 3.96e2 2.22e3 +# 3 EMP BRA 17191. 206. 6991. 365. 3525. 8.51e3 2.05e3 4414. 5307. 5.71e3 5.43e4 +# 4 EMP BWA 188. 10.5 18.1 3.09 25.3 3.63e1 8.36e0 15.3 61.1 2.76e1 3.94e2 +# 5 EMP CHL 702. 101. 625. 29.4 296. 6.95e2 2.58e2 272. NA 1.00e3 3.98e3 +# 6 EMP CHN 287744. 7050. 67144. 1606. 20852. 2.89e4 1.39e4 4929. 22669. 3.10e4 4.86e5 # Mean Preserving Scaling head(fmean(fscale(gGGDC, mean = FALSE))) +# # A tibble: 6 × 13 +# Variable Country AGR MIN MAN PU CON WRT TRA FIRE GOV OTH SUM +# +# 1 EMP ARG 1420. 52.1 1932. 102. 742. 1.98e3 6.49e2 628. 2043. 9.92e2 1.05e4 +# 2 EMP BOL 964. 56.0 235. 5.35 123. 2.82e2 1.15e2 44.6 NA 3.96e2 2.22e3 +# 3 EMP BRA 17191. 206. 6991. 365. 3525. 8.51e3 2.05e3 4414. 5307. 5.71e3 5.43e4 +# 4 EMP BWA 188. 10.5 18.1 3.09 25.3 3.63e1 8.36e0 15.3 61.1 2.76e1 3.94e2 +# 5 EMP CHL 702. 101. 625. 29.4 296. 6.95e2 2.58e2 272. NA 1.00e3 3.98e3 +# 6 EMP CHN 287744. 7050. 67144. 1606. 20852. 2.89e4 1.39e4 4929. 22669. 3.10e4 4.86e5 head(fsd(fscale(gGGDC, mean = FALSE))) +# # A tibble: 6 × 13 +# Variable Country AGR MIN MAN PU CON WRT TRA FIRE GOV OTH SUM +# +# 1 EMP ARG 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 +# 2 EMP BOL 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 NA 1.00 1.00 +# 3 EMP BRA 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 +# 4 EMP BWA 1.00 1.00 1.00 1 1.00 1.00 1.00 1 1.00 1.00 1.00 +# 5 EMP CHL 1.00 1 1.00 1.00 1.00 1.00 1.00 1.00 NA 1.00 1.00 +# 6 EMP CHN 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 ``` One can also set `mean = "overall.mean"`, which group-centers columns on the overall mean as illustrated with `fwithin`. Another interesting option is setting `sd = "within.sd"`. This group-scales data such that every group has a standard deviation equal to the within-standard deviation of the data: -```{r, eval=NCRAN} + +```r # Just using VA data for this example gGGDC <- GGDC10S %>% fsubset(Variable == "VA", Country, AGR:SUM) %>% @@ -688,10 +1233,27 @@ gGGDC <- GGDC10S %>% # This calculates the within- standard deviation for all columns fsd(num_vars(ungroup(fwithin(gGGDC)))) +# AGR MIN MAN PU CON WRT TRA FIRE GOV OTH +# 45046972 40122220 75608708 3062688 30811572 44125207 20676901 16030868 20358973 18780869 +# SUM +# 306429102 # This scales all groups to take on the within- standard deviation while preserving group means fsd(fscale(gGGDC, mean = FALSE, sd = "within.sd")) - +# # A tibble: 43 × 12 +# Country AGR MIN MAN PU CON WRT TRA FIRE GOV OTH SUM +# +# 1 ARG 45046972. 40122220. 75608708. 3062688. 3.08e7 4.41e7 2.07e7 1.60e7 2.04e7 1.88e7 3.06e8 +# 2 BOL 45046972. 40122220. 75608708. 3062688. 3.08e7 4.41e7 2.07e7 1.60e7 NA 1.88e7 3.06e8 +# 3 BRA 45046972. 40122220. 75608708. 3062688. 3.08e7 4.41e7 2.07e7 1.60e7 2.04e7 1.88e7 3.06e8 +# 4 BWA 45046972. 40122220. 75608708. 3062688. 3.08e7 4.41e7 2.07e7 1.60e7 2.04e7 1.88e7 3.06e8 +# 5 CHL 45046972. 40122220. 75608708. 3062688. 3.08e7 4.41e7 2.07e7 1.60e7 NA 1.88e7 3.06e8 +# 6 CHN 45046972. 40122220. 75608708. 3062688. 3.08e7 4.41e7 2.07e7 1.60e7 2.04e7 1.88e7 3.06e8 +# 7 COL 45046972. 40122220. 75608708. 3062688. 3.08e7 4.41e7 2.07e7 1.60e7 NA 1.88e7 3.06e8 +# 8 CRI 45046972. 40122220. 75608708. 3062688. 3.08e7 4.41e7 2.07e7 1.60e7 2.04e7 1.88e7 3.06e8 +# 9 DEW 45046972. 40122220. 75608708. 3062688. 3.08e7 4.41e7 2.07e7 1.60e7 2.04e7 1.88e7 3.06e8 +# 10 DNK 45046972. 40122220. 75608708. 3062688. 3.08e7 4.41e7 2.07e7 1.60e7 2.04e7 1.88e7 3.06e8 +# # ℹ 33 more rows ``` A grouped scaling operation with both `mean = "overall.mean"` and `sd = "within.sd"` thus efficiently achieves a harmonization of all groups in the first two moments without changing the fundamental properties (in terms of level and scale) of the data. @@ -704,41 +1266,141 @@ A grouped scaling operation with both `mean = "overall.mean"` and `sd = "within. This section introduces 3 further powerful *collapse* functions: `flag`, `fdiff` and `fgrowth`. The first function, `flag`, efficiently computes sequences of fully identified lags and leads on time series and panel data. The following code computes 1 fully-identified panel-lag and 1 fully identified panel-lead of each variable in the data: -```{r, eval=NCRAN} + +```r GGDC10S %>% fselect(-Region, -Regioncode) %>% fgroup_by(Variable, Country) %>% flag(-1:1, Year) +# # A tibble: 5,027 × 36 +# Country Variable Year F1.AGR AGR L1.AGR F1.MIN MIN L1.MIN F1.MAN MAN L1.MAN F1.PU PU +# * +# 1 BWA VA 1960 NA NA NA NA NA NA NA NA NA NA NA +# 2 BWA VA 1961 NA NA NA NA NA NA NA NA NA NA NA +# 3 BWA VA 1962 NA NA NA NA NA NA NA NA NA NA NA +# 4 BWA VA 1963 16.3 NA NA 3.49 NA NA 0.737 NA NA 0.104 NA +# 5 BWA VA 1964 15.7 16.3 NA 2.50 3.49 NA 1.02 0.737 NA 0.135 0.104 +# 6 BWA VA 1965 17.7 15.7 16.3 1.97 2.50 3.49 0.804 1.02 0.737 0.203 0.135 +# 7 BWA VA 1966 19.1 17.7 15.7 2.30 1.97 2.50 0.938 0.804 1.02 0.203 0.203 +# 8 BWA VA 1967 21.1 19.1 17.7 1.84 2.30 1.97 0.750 0.938 0.804 0.203 0.203 +# 9 BWA VA 1968 21.9 21.1 19.1 5.24 1.84 2.30 2.14 0.750 0.938 0.578 0.203 +# 10 BWA VA 1969 23.1 21.9 21.1 10.2 5.24 1.84 4.15 2.14 0.750 1.12 0.578 +# # ℹ 5,017 more rows +# # ℹ 22 more variables: L1.PU , F1.CON , CON , L1.CON , F1.WRT , WRT , +# # L1.WRT , F1.TRA , TRA , L1.TRA , F1.FIRE , FIRE , L1.FIRE , +# # F1.GOV , GOV , L1.GOV , F1.OTH , OTH , L1.OTH , F1.SUM , +# # SUM , L1.SUM +# +# Grouped by: Variable, Country [85 | 59 (7.7) 4-65] ``` If the time-variable passed does not exactly identify the data (i.e. because of repeated values in each group), all 3 functions will issue appropriate error messages. `flag`, `fdiff` and `fgrowth` support irregular time series and unbalanced panels. It is also possible to omit the time-variable if one is certain that the data is sorted: -```{r, eval=NCRAN} + +```r GGDC10S %>% fselect(Variable, Country,AGR:SUM) %>% fgroup_by(Variable, Country) %>% flag +# # A tibble: 5,027 × 13 +# Variable Country AGR MIN MAN PU CON WRT TRA FIRE GOV OTH SUM +# * +# 1 VA BWA NA NA NA NA NA NA NA NA NA NA NA +# 2 VA BWA NA NA NA NA NA NA NA NA NA NA NA +# 3 VA BWA NA NA NA NA NA NA NA NA NA NA NA +# 4 VA BWA NA NA NA NA NA NA NA NA NA NA NA +# 5 VA BWA NA NA NA NA NA NA NA NA NA NA NA +# 6 VA BWA 16.3 3.49 0.737 0.104 0.660 6.24 1.66 1.12 4.82 2.34 37.5 +# 7 VA BWA 15.7 2.50 1.02 0.135 1.35 7.06 1.94 1.25 5.70 2.68 39.3 +# 8 VA BWA 17.7 1.97 0.804 0.203 1.35 8.27 2.15 1.36 6.37 2.99 43.1 +# 9 VA BWA 19.1 2.30 0.938 0.203 0.897 4.31 1.72 1.54 7.04 3.31 41.4 +# 10 VA BWA 21.1 1.84 0.750 0.203 1.22 5.17 2.44 1.03 5.03 2.36 41.1 +# # ℹ 5,017 more rows +# +# Grouped by: Variable, Country [85 | 59 (7.7) 4-65] ``` `fdiff` computes sequences of lagged-leaded and iterated differences as well as quasi-differences and log-differences on time series and panel data. The code below computes the 1 and 10 year first and second differences of each variable in the data: -```{r, eval=NCRAN} + +```r GGDC10S %>% fselect(-Region, -Regioncode) %>% fgroup_by(Variable, Country) %>% fdiff(c(1, 10), 1:2, Year) +# # A tibble: 5,027 × 47 +# Country Variable Year D1.AGR D2.AGR L10D1.AGR L10D2.AGR D1.MIN D2.MIN L10D1.MIN L10D2.MIN D1.MAN +# * +# 1 BWA VA 1960 NA NA NA NA NA NA NA NA NA +# 2 BWA VA 1961 NA NA NA NA NA NA NA NA NA +# 3 BWA VA 1962 NA NA NA NA NA NA NA NA NA +# 4 BWA VA 1963 NA NA NA NA NA NA NA NA NA +# 5 BWA VA 1964 NA NA NA NA NA NA NA NA NA +# 6 BWA VA 1965 -0.575 NA NA NA -0.998 NA NA NA 0.282 +# 7 BWA VA 1966 1.95 2.53 NA NA -0.525 0.473 NA NA -0.214 +# 8 BWA VA 1967 1.47 -0.488 NA NA 0.328 0.854 NA NA 0.134 +# 9 BWA VA 1968 1.95 0.488 NA NA -0.460 -0.788 NA NA -0.188 +# 10 BWA VA 1969 0.763 -1.19 NA NA 3.41 3.87 NA NA 1.39 +# # ℹ 5,017 more rows +# # ℹ 35 more variables: D2.MAN , L10D1.MAN , L10D2.MAN , D1.PU , D2.PU , +# # L10D1.PU , L10D2.PU , D1.CON , D2.CON , L10D1.CON , L10D2.CON , +# # D1.WRT , D2.WRT , L10D1.WRT , L10D2.WRT , D1.TRA , D2.TRA , +# # L10D1.TRA , L10D2.TRA , D1.FIRE , D2.FIRE , L10D1.FIRE , +# # L10D2.FIRE , D1.GOV , D2.GOV , L10D1.GOV , L10D2.GOV , D1.OTH , +# # D2.OTH , L10D1.OTH , L10D2.OTH , D1.SUM , D2.SUM , L10D1.SUM , … +# +# Grouped by: Variable, Country [85 | 59 (7.7) 4-65] ``` Log-differences of the form $log(x_t) - log(x_{t-s})$ are also easily computed. -```{r, eval=NCRAN} + +```r GGDC10S %>% fselect(-Region, -Regioncode) %>% fgroup_by(Variable, Country) %>% fdiff(c(1, 10), 1, Year, log = TRUE) +# # A tibble: 5,027 × 25 +# Country Variable Year Dlog1.AGR L10Dlog1.AGR Dlog1.MIN L10Dlog1.MIN Dlog1.MAN L10Dlog1.MAN +# * +# 1 BWA VA 1960 NA NA NA NA NA NA +# 2 BWA VA 1961 NA NA NA NA NA NA +# 3 BWA VA 1962 NA NA NA NA NA NA +# 4 BWA VA 1963 NA NA NA NA NA NA +# 5 BWA VA 1964 NA NA NA NA NA NA +# 6 BWA VA 1965 -0.0359 NA -0.336 NA 0.324 NA +# 7 BWA VA 1966 0.117 NA -0.236 NA -0.236 NA +# 8 BWA VA 1967 0.0796 NA 0.154 NA 0.154 NA +# 9 BWA VA 1968 0.0972 NA -0.223 NA -0.223 NA +# 10 BWA VA 1969 0.0355 NA 1.05 NA 1.05 NA +# # ℹ 5,017 more rows +# # ℹ 16 more variables: Dlog1.PU , L10Dlog1.PU , Dlog1.CON , L10Dlog1.CON , +# # Dlog1.WRT , L10Dlog1.WRT , Dlog1.TRA , L10Dlog1.TRA , Dlog1.FIRE , +# # L10Dlog1.FIRE , Dlog1.GOV , L10Dlog1.GOV , Dlog1.OTH , L10Dlog1.OTH , +# # Dlog1.SUM , L10Dlog1.SUM +# +# Grouped by: Variable, Country [85 | 59 (7.7) 4-65] ``` Finally, it is also possible to compute quasi-differences and quasi-log-differences of the form $x_t - \rho x_{t-s}$ or $log(x_t) - \rho log(x_{t-s})$: -```{r, eval=NCRAN} + +```r GGDC10S %>% fselect(-Region, -Regioncode) %>% fgroup_by(Variable, Country) %>% fdiff(t = Year, rho = 0.95) +# # A tibble: 5,027 × 14 +# Country Variable Year AGR MIN MAN PU CON WRT TRA FIRE GOV OTH +# * +# 1 BWA VA 1960 NA NA NA NA NA NA NA NA NA NA +# 2 BWA VA 1961 NA NA NA NA NA NA NA NA NA NA +# 3 BWA VA 1962 NA NA NA NA NA NA NA NA NA NA +# 4 BWA VA 1963 NA NA NA NA NA NA NA NA NA NA +# 5 BWA VA 1964 NA NA NA NA NA NA NA NA NA NA +# 6 BWA VA 1965 0.241 -0.824 0.318 0.0359 0.719 1.13 0.363 0.184 1.11 0.454 +# 7 BWA VA 1966 2.74 -0.401 -0.163 0.0743 0.0673 1.56 0.312 0.174 0.955 0.449 +# 8 BWA VA 1967 2.35 0.427 0.174 0.0101 -0.381 -3.55 -0.323 0.246 0.988 0.465 +# 9 BWA VA 1968 2.91 -0.345 -0.141 0.0101 0.365 1.08 0.804 -0.427 -1.66 -0.780 +# 10 BWA VA 1969 1.82 3.50 1.43 0.385 2.32 0.841 0.397 0.252 0.818 0.385 +# # ℹ 5,017 more rows +# # ℹ 1 more variable: SUM +# +# Grouped by: Variable, Country [85 | 59 (7.7) 4-65] ``` The quasi-differencing feature was added to `fdiff` to facilitate the preparation of time series and panel data for least-squares estimations suffering from serial correlation following Cochrane & Orcutt (1949). @@ -746,25 +1408,88 @@ The quasi-differencing feature was added to `fdiff` to facilitate the preparatio Finally, `fgrowth` computes growth rates in the same way. By default exact growth rates are computed in percentage terms using $(x_t-x_{t-s}) / x_{t-s} \times 100$ (the default argument is `scale = 100`). The user can also request growth rates obtained by log-differencing using $log(x_t/ x_{t-s}) \times 100$. -```{r, eval=NCRAN} + +```r # Exact growth rates, computed as: (x/lag(x) - 1) * 100 GGDC10S %>% fselect(-Region, -Regioncode) %>% fgroup_by(Variable, Country) %>% fgrowth(c(1, 10), 1, Year) +# # A tibble: 5,027 × 25 +# Country Variable Year G1.AGR L10G1.AGR G1.MIN L10G1.MIN G1.MAN L10G1.MAN G1.PU L10G1.PU G1.CON +# * +# 1 BWA VA 1960 NA NA NA NA NA NA NA NA NA +# 2 BWA VA 1961 NA NA NA NA NA NA NA NA NA +# 3 BWA VA 1962 NA NA NA NA NA NA NA NA NA +# 4 BWA VA 1963 NA NA NA NA NA NA NA NA NA +# 5 BWA VA 1964 NA NA NA NA NA NA NA NA NA +# 6 BWA VA 1965 -3.52 NA -28.6 NA 38.2 NA 29.4 NA 104. +# 7 BWA VA 1966 12.4 NA -21.1 NA -21.1 NA 50 NA 0 +# 8 BWA VA 1967 8.29 NA 16.7 NA 16.7 NA 0 NA -33.3 +# 9 BWA VA 1968 10.2 NA -20 NA -20 NA 0 NA 35.7 +# 10 BWA VA 1969 3.61 NA 185. NA 185. NA 185. NA 185. +# # ℹ 5,017 more rows +# # ℹ 13 more variables: L10G1.CON , G1.WRT , L10G1.WRT , G1.TRA , +# # L10G1.TRA , G1.FIRE , L10G1.FIRE , G1.GOV , L10G1.GOV , G1.OTH , +# # L10G1.OTH , G1.SUM , L10G1.SUM +# +# Grouped by: Variable, Country [85 | 59 (7.7) 4-65] # Log-difference growth rates, computed as: log(x / lag(x)) * 100 GGDC10S %>% fselect(-Region, -Regioncode) %>% fgroup_by(Variable, Country) %>% fgrowth(c(1, 10), 1, Year, logdiff = TRUE) +# # A tibble: 5,027 × 25 +# Country Variable Year Dlog1.AGR L10Dlog1.AGR Dlog1.MIN L10Dlog1.MIN Dlog1.MAN L10Dlog1.MAN +# * +# 1 BWA VA 1960 NA NA NA NA NA NA +# 2 BWA VA 1961 NA NA NA NA NA NA +# 3 BWA VA 1962 NA NA NA NA NA NA +# 4 BWA VA 1963 NA NA NA NA NA NA +# 5 BWA VA 1964 NA NA NA NA NA NA +# 6 BWA VA 1965 -3.59 NA -33.6 NA 32.4 NA +# 7 BWA VA 1966 11.7 NA -23.6 NA -23.6 NA +# 8 BWA VA 1967 7.96 NA 15.4 NA 15.4 NA +# 9 BWA VA 1968 9.72 NA -22.3 NA -22.3 NA +# 10 BWA VA 1969 3.55 NA 105. NA 105. NA +# # ℹ 5,017 more rows +# # ℹ 16 more variables: Dlog1.PU , L10Dlog1.PU , Dlog1.CON , L10Dlog1.CON , +# # Dlog1.WRT , L10Dlog1.WRT , Dlog1.TRA , L10Dlog1.TRA , Dlog1.FIRE , +# # L10Dlog1.FIRE , Dlog1.GOV , L10Dlog1.GOV , Dlog1.OTH , L10Dlog1.OTH , +# # Dlog1.SUM , L10Dlog1.SUM +# +# Grouped by: Variable, Country [85 | 59 (7.7) 4-65] ``` `fdiff` and `fgrowth` can also perform leaded (forward) differences and growth rates (i.e. `... %>% fgrowth(-c(1, 10), 1:2, Year)` would compute one and 10-year leaded first and second differences). Again it is possible to perform sequential operations: -```{r, eval=NCRAN} + +```r # This computes the 1 and 10-year growth rates, for the current period and lagged by one period GGDC10S %>% fselect(-Region, -Regioncode) %>% fgroup_by(Variable, Country) %>% fgrowth(c(1, 10), 1, Year) %>% flag(0:1, Year) +# # A tibble: 5,027 × 47 +# Country Variable Year G1.AGR L1.G1.AGR L10G1.AGR L1.L10G1.AGR G1.MIN L1.G1.MIN L10G1.MIN +# * +# 1 BWA VA 1960 NA NA NA NA NA NA NA +# 2 BWA VA 1961 NA NA NA NA NA NA NA +# 3 BWA VA 1962 NA NA NA NA NA NA NA +# 4 BWA VA 1963 NA NA NA NA NA NA NA +# 5 BWA VA 1964 NA NA NA NA NA NA NA +# 6 BWA VA 1965 -3.52 NA NA NA -28.6 NA NA +# 7 BWA VA 1966 12.4 -3.52 NA NA -21.1 -28.6 NA +# 8 BWA VA 1967 8.29 12.4 NA NA 16.7 -21.1 NA +# 9 BWA VA 1968 10.2 8.29 NA NA -20 16.7 NA +# 10 BWA VA 1969 3.61 10.2 NA NA 185. -20 NA +# # ℹ 5,017 more rows +# # ℹ 37 more variables: L1.L10G1.MIN , G1.MAN , L1.G1.MAN , L10G1.MAN , +# # L1.L10G1.MAN , G1.PU , L1.G1.PU , L10G1.PU , L1.L10G1.PU , +# # G1.CON , L1.G1.CON , L10G1.CON , L1.L10G1.CON , G1.WRT , +# # L1.G1.WRT , L10G1.WRT , L1.L10G1.WRT , G1.TRA , L1.G1.TRA , +# # L10G1.TRA , L1.L10G1.TRA , G1.FIRE , L1.G1.FIRE , L10G1.FIRE , +# # L1.L10G1.FIRE , G1.GOV , L1.G1.GOV , L10G1.GOV , L1.L10G1.GOV , … +# +# Grouped by: Variable, Country [85 | 59 (7.7) 4-65] ``` ## 3. Benchmarks @@ -778,9 +1503,24 @@ All benchmarks are run on a Windows 8.1 laptop with a 2x 2.2 GHZ Intel i5 proces ### 3.1 Data Benchmarks are run on the original `GGDC10S` data used throughout this vignette and a larger dataset with approx. 1 million observations, obtained by replicating and row-binding `GGDC10S` 200 times while maintaining unique groups. -```{r, eval=RUNBENCH} + +```r # This shows the groups in GGDC10S GRP(GGDC10S, ~ Variable + Country) +# collapse grouping object of length 5027 with 85 ordered groups +# +# Call: GRP.default(X = GGDC10S, by = ~Variable + Country), X is unsorted +# +# Distribution of group sizes: +# Min. 1st Qu. Median Mean 3rd Qu. Max. +# 4.00 53.00 62.00 59.14 63.00 65.00 +# +# Groups with sizes: +# EMP.ARG EMP.BOL EMP.BRA EMP.BWA EMP.CHL EMP.CHN +# 62 61 62 52 63 62 +# --- +# VA.TWN VA.TZA VA.USA VA.VEN VA.ZAF VA.ZMB +# 63 52 65 63 52 52 # This replicates the data 200 times data <- replicate(200, GGDC10S, simplify = FALSE) @@ -789,61 +1529,120 @@ uniquify <- function(x, i) ftransform(x, lapply(unclass(x)[c(1,4)], paste0, i)) # Making datasets unique and row-binding them data <- unlist2d(Map(uniquify, data, as.list(1:200)), idcols = FALSE) fdim(data) +# [1] 1005400 16 # This shows the groups in the replicated data GRP(data, ~ Variable + Country) +# collapse grouping object of length 1005400 with 17000 ordered groups +# +# Call: GRP.default(X = data, by = ~Variable + Country), X is unsorted +# +# Distribution of group sizes: +# Min. 1st Qu. Median Mean 3rd Qu. Max. +# 4.00 53.00 62.00 59.14 63.00 65.00 +# +# Groups with sizes: +# EMP1.ARG1 EMP1.BOL1 EMP1.BRA1 EMP1.BWA1 EMP1.CHL1 EMP1.CHN1 +# 62 61 62 52 63 62 +# --- +# VA99.TWN99 VA99.TZA99 VA99.USA99 VA99.VEN99 VA99.ZAF99 VA99.ZMB99 +# 63 52 65 63 52 52 gc() +# used (Mb) gc trigger (Mb) limit (Mb) max used (Mb) +# Ncells 3184710 170.1 8862174 473.3 NA 8862174 473.3 +# Vcells 23965820 182.9 147787078 1127.6 16384 445825141 3401.4 ``` ### 3.1 Selecting, Subsetting, Ordering and Grouping -```{r, eval=RUNBENCH, warning=FALSE, message=FALSE} + +```r ## Selecting columns # Small microbenchmark(dplyr = select(GGDC10S, Country, Variable, AGR:SUM), collapse = fselect(GGDC10S, Country, Variable, AGR:SUM)) +# Unit: microseconds +# expr min lq mean median uq max neval +# dplyr 400.775 410.7585 425.43117 416.396 424.637 820.041 100 +# collapse 2.911 3.4645 4.59856 4.469 5.412 15.293 100 # Large microbenchmark(dplyr = select(data, Country, Variable, AGR:SUM), collapse = fselect(data, Country, Variable, AGR:SUM)) +# Unit: microseconds +# expr min lq mean median uq max neval +# dplyr 388.926 396.429 412.67730 402.9890 411.0455 728.734 100 +# collapse 2.870 3.280 4.44686 3.8335 5.3300 12.669 100 ## Subsetting columns # Small microbenchmark(dplyr = filter(GGDC10S, Variable == "VA"), collapse = fsubset(GGDC10S, Variable == "VA")) +# Unit: microseconds +# expr min lq mean median uq max neval +# dplyr 374.084 394.4405 409.23986 401.0005 414.3050 716.475 100 +# collapse 39.278 48.2775 55.85307 55.5550 60.4545 103.320 100 # Large microbenchmark(dplyr = filter(data, Variable == "VA"), collapse = fsubset(data, Variable == "VA")) +# Unit: milliseconds +# expr min lq mean median uq max neval +# dplyr 4.487409 5.242752 8.352270 5.653223 6.434048 159.13658 100 +# collapse 2.840808 3.082359 3.469128 3.163478 3.302714 16.56047 100 ## Ordering rows # Small microbenchmark(dplyr = arrange(GGDC10S, desc(Country), Variable, Year), collapse = roworder(GGDC10S, -Country, Variable, Year)) +# Unit: microseconds +# expr min lq mean median uq max neval +# dplyr 1715.112 1867.4270 1983.4726 2015.109 2080.7500 2367.791 100 +# collapse 192.495 232.4085 256.3878 247.968 258.7715 1055.381 100 # Large microbenchmark(dplyr = arrange(data, desc(Country), Variable, Year), collapse = roworder(data, -Country, Variable, Year), times = 2) +# Unit: milliseconds +# expr min lq mean median uq max neval +# dplyr 89.37512 89.37512 101.05180 101.05180 112.72848 112.72848 2 +# collapse 66.46703 66.46703 67.45254 67.45254 68.43806 68.43806 2 ## Grouping # Small microbenchmark(dplyr = group_by(GGDC10S, Country, Variable), collapse = fgroup_by(GGDC10S, Country, Variable)) +# Unit: microseconds +# expr min lq mean median uq max neval +# dplyr 778.713 815.1825 911.3484 874.2225 960.3840 1529.874 100 +# collapse 146.534 157.6245 198.5921 165.0660 177.3455 1484.241 100 # Large microbenchmark(dplyr = group_by(data, Country, Variable), collapse = fgroup_by(data, Country, Variable), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# dplyr 34.20294 34.62839 34.88041 34.88432 35.07821 35.48279 10 +# collapse 27.89972 28.03211 28.55175 28.36954 29.32283 29.54206 10 ## Computing a new column # Small microbenchmark(dplyr = mutate(GGDC10S, NEW = AGR+1), collapse = ftransform(GGDC10S, NEW = AGR+1)) +# Unit: microseconds +# expr min lq mean median uq max neval +# dplyr 317.463 321.7270 333.38822 324.9660 333.7810 631.564 100 +# collapse 8.897 11.0495 12.95354 12.4435 14.2065 38.991 100 # Large microbenchmark(dplyr = mutate(data, NEW = AGR+1), collapse = ftransform(data, NEW = AGR+1)) +# Unit: microseconds +# expr min lq mean median uq max neval +# dplyr 637.878 1084.225 1330.006 1164.6665 1291.2335 15869.05 100 +# collapse 210.740 657.025 1021.434 698.3735 781.7675 16725.09 100 ## All combined with pipes # Small @@ -856,6 +1655,10 @@ microbenchmark(dplyr = filter(GGDC10S, Variable == "VA") %>% roworder(-Country, Year) %>% ftransform(NEW = AGR+1) %>% fgroup_by(Country)) +# Unit: microseconds +# expr min lq mean median uq max neval +# dplyr 2982.340 3416.325 3525.7983 3538.464 3668.516 5034.021 100 +# collapse 136.858 186.632 214.4681 211.683 243.130 314.470 100 # Large microbenchmark(dplyr = filter(data, Variable == "VA") %>% @@ -867,14 +1670,22 @@ microbenchmark(dplyr = filter(data, Variable == "VA") %>% roworder(-Country, Year) %>% ftransform(NEW = AGR+1) %>% fgroup_by(Country), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# dplyr 7.917182 7.997378 8.142653 8.109943 8.292291 8.423163 10 +# collapse 3.080289 3.104028 3.150153 3.140969 3.188365 3.251259 10 gc() +# used (Mb) gc trigger (Mb) limit (Mb) max used (Mb) +# Ncells 3184728 170.1 8862174 473.3 NA 8862174 473.3 +# Vcells 23970594 182.9 75772825 578.2 16384 445825141 3401.4 ``` ### 3.1 Aggregation -```{r, eval=RUNBENCH, warning=FALSE, message=FALSE} + +```r ## Grouping the data cgGGDC10S <- fgroup_by(GGDC10S, Variable, Country) %>% fselect(-Region, -Regioncode) gGGDC10S <- group_by(GGDC10S, Variable, Country) %>% fselect(-Region, -Regioncode) @@ -882,80 +1693,148 @@ cgdata <- fgroup_by(data, Variable, Country) %>% fselect(-Region, -Regioncode) gdata <- group_by(data, Variable, Country) %>% fselect(-Region, -Regioncode) rm(data, GGDC10S) gc() +# used (Mb) gc trigger (Mb) limit (Mb) max used (Mb) +# Ncells 3201723 171 8862174 473.3 NA 8862174 473.3 +# Vcells 23589381 180 75772825 578.2 16384 445825141 3401.4 ## Conversion of Grouping object: This time would be required extra in all hybrid calls ## i.e. when calling collapse functions on data grouped with dplyr::group_by # Small microbenchmark(GRP(gGGDC10S)) +# Unit: microseconds +# expr min lq mean median uq max neval +# GRP(gGGDC10S) 8.692 9.2455 10.16021 9.4915 10.086 39.196 100 # Large microbenchmark(GRP(gdata)) +# Unit: microseconds +# expr min lq mean median uq max neval +# GRP(gdata) 885.641 1160.915 1248.258 1237.236 1323.234 1651.398 100 ## Sum # Small microbenchmark(dplyr = summarise_all(gGGDC10S, sum, na.rm = TRUE), collapse = fsum(cgGGDC10S)) +# Unit: microseconds +# expr min lq mean median uq max neval +# dplyr 3017.723 3354.1895 3733.4739 3620.9560 3738.441 22135.736 100 +# collapse 218.120 227.3655 236.7693 235.1965 244.852 270.805 100 # Large microbenchmark(dplyr = summarise_all(gdata, sum, na.rm = TRUE), collapse = fsum(cgdata), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# dplyr 272.9737 279.91024 305.02067 283.59737 303.57122 448.07629 10 +# collapse 41.5330 41.63214 41.88717 41.77062 41.96059 42.78662 10 ## Mean # Small microbenchmark(dplyr = summarise_all(gGGDC10S, mean.default, na.rm = TRUE), collapse = fmean(cgGGDC10S)) +# Unit: microseconds +# expr min lq mean median uq max neval +# dplyr 4360.104 4596.6740 5125.4194 4754.791 5005.710 37144.852 100 +# collapse 169.084 174.3935 185.4594 183.434 194.832 221.933 100 # Large microbenchmark(dplyr = summarise_all(gdata, mean.default, na.rm = TRUE), collapse = fmean(cgdata), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# dplyr 623.5123 642.83748 704.39836 681.32260 786.82731 829.74435 10 +# collapse 31.7636 31.88037 32.00222 31.99445 32.08209 32.43875 10 ## Median # Small microbenchmark(dplyr = summarise_all(gGGDC10S, median, na.rm = TRUE), collapse = fmedian(cgGGDC10S)) +# Unit: microseconds +# expr min lq mean median uq max neval +# dplyr 14399.118 14849.933 16170.3500 14982.5685 15145.892 33613.235 100 +# collapse 137.596 164.902 189.2056 178.1245 214.676 248.624 100 # Large microbenchmark(dplyr = summarise_all(gdata, median, na.rm = TRUE), collapse = fmedian(cgdata), times = 2) +# Unit: milliseconds +# expr min lq mean median uq max neval +# dplyr 2826.83036 2826.83036 2828.12912 2828.12912 2829.42788 2829.42788 2 +# collapse 19.95564 19.95564 19.98524 19.98524 20.01485 20.01485 2 ## Standard Deviation # Small microbenchmark(dplyr = summarise_all(gGGDC10S, sd, na.rm = TRUE), collapse = fsd(cgGGDC10S)) +# Unit: microseconds +# expr min lq mean median uq max neval +# dplyr 8332.635 8612.5215 9365.1216 8712.766 8989.086 25087.982 100 +# collapse 242.228 251.0225 269.7849 273.552 282.326 321.891 100 # Large microbenchmark(dplyr = summarise_all(gdata, sd, na.rm = TRUE), collapse = fsd(cgdata), times = 2) +# Unit: milliseconds +# expr min lq mean median uq max neval +# dplyr 1375.80363 1375.80363 1409.60358 1409.60358 1443.40352 1443.40352 2 +# collapse 46.21713 46.21713 56.88205 56.88205 67.54697 67.54697 2 ## Maximum # Small microbenchmark(dplyr = summarise_all(gGGDC10S, max, na.rm = TRUE), collapse = fmax(cgGGDC10S)) +# Unit: microseconds +# expr min lq mean median uq max neval +# dplyr 39964.504 41008.8560 43577.92707 41448.273 44195.1095 58816.550 100 +# collapse 68.798 74.7225 87.83389 77.572 100.9215 129.519 100 # Large microbenchmark(dplyr = summarise_all(gdata, max, na.rm = TRUE), collapse = fmax(cgdata), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# dplyr 480.83804 490.9982 540.7374 517.86136 533.85723 687.14713 10 +# collapse 11.40116 11.7745 11.9366 11.85156 11.94908 13.18318 10 ## First Value # Small microbenchmark(dplyr = summarise_all(gGGDC10S, first), collapse = ffirst(cgGGDC10S, na.rm = FALSE)) +# Unit: microseconds +# expr min lq mean median uq max neval +# dplyr 4147.888 4242.249 4801.88966 4383.248 4701.532 19254.215 100 +# collapse 11.685 14.227 26.25476 24.764 35.301 137.514 100 # Large microbenchmark(dplyr = summarise_all(gdata, first), collapse = ffirst(cgdata, na.rm = FALSE), times = 10) +# Unit: microseconds +# expr min lq mean median uq max neval +# dplyr 530327.66 558767.393 637499.226 596503.08 672801.103 969373.660 10 +# collapse 872.89 999.088 1087.845 1068.87 1204.416 1289.327 10 ## Number of Distinct Values # Small microbenchmark(dplyr = summarise_all(gGGDC10S, n_distinct, na.rm = TRUE), collapse = fndistinct(cgGGDC10S)) +# Unit: microseconds +# expr min lq mean median uq max neval +# dplyr 11316.574 11600.847 12573.1010 11759.435 11939.487 31659.667 100 +# collapse 189.051 205.164 226.0933 235.422 239.604 443.661 100 # Large microbenchmark(dplyr = summarise_all(gdata, n_distinct, na.rm = TRUE), collapse = fndistinct(cgdata), times = 5) +# Unit: milliseconds +# expr min lq mean median uq max neval +# dplyr 2044.13376 2110.16926 2133.91960 2138.07456 2154.39797 2222.82246 5 +# collapse 30.65443 30.94582 31.51081 31.17123 31.17972 33.60286 5 gc() +# used (Mb) gc trigger (Mb) limit (Mb) max used (Mb) +# Ncells 3972309 212.2 8862174 473.3 NA 8862174 473.3 +# Vcells 24857303 189.7 75772825 578.2 16384 445825141 3401.4 ``` @@ -971,77 +1850,138 @@ gc() Below are some additional benchmarks for weighted aggregations and aggregations using the statistical mode, which cannot easily or efficiently be performed with *dplyr*. -```{r, eval=RUNBENCH, warning=FALSE, message=FALSE} + +```r ## Weighted Mean # Small microbenchmark(fmean(cgGGDC10S, SUM)) +# Unit: microseconds +# expr min lq mean median uq max neval +# fmean(cgGGDC10S, SUM) 195.488 200.4285 218.2836 211.1295 218.8375 444.276 100 # Large microbenchmark(fmean(cgdata, SUM), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# fmean(cgdata, SUM) 34.73516 35.28276 35.66689 35.32257 36.44802 36.80722 10 ## Weighted Standard-Deviation # Small microbenchmark(fsd(cgGGDC10S, SUM)) +# Unit: microseconds +# expr min lq mean median uq max neval +# fsd(cgGGDC10S, SUM) 243.048 244.606 249.2181 246.9635 249.444 323.9 100 # Large microbenchmark(fsd(cgdata, SUM), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# fsd(cgdata, SUM) 44.905 44.93116 45.15391 45.01095 45.22677 46.14689 10 ## Statistical Mode # Small microbenchmark(fmode(cgGGDC10S)) +# Unit: microseconds +# expr min lq mean median uq max neval +# fmode(cgGGDC10S) 245.098 248.3575 253.4809 250.6945 253.9335 420.619 100 # Large microbenchmark(fmode(cgdata), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# fmode(cgdata) 40.26151 41.82082 41.63019 41.88382 42.0232 42.0587 10 ## Weighted Statistical Mode # Small microbenchmark(fmode(cgGGDC10S, SUM)) +# Unit: microseconds +# expr min lq mean median uq max neval +# fmode(cgGGDC10S, SUM) 330.993 333.535 337.7744 334.5395 337.3685 447.187 100 # Large microbenchmark(fmode(cgdata, SUM), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# fmode(cgdata, SUM) 57.69815 57.78466 57.98187 57.84567 58.09942 58.81835 10 gc() +# used (Mb) gc trigger (Mb) limit (Mb) max used (Mb) +# Ncells 3971768 212.2 8862174 473.3 NA 8862174 473.3 +# Vcells 24853915 189.7 75772825 578.2 16384 445825141 3401.4 ``` ### 3.2 Transformation -```{r, eval=RUNBENCH, warning=FALSE, message=FALSE} + +```r ## Replacing with group sum # Small microbenchmark(dplyr = mutate_all(gGGDC10S, sum, na.rm = TRUE), collapse = fsum(cgGGDC10S, TRA = "replace_fill")) +# Unit: microseconds +# expr min lq mean median uq max neval +# dplyr 13088.102 13223.340 14388.9000 13359.7680 14380.05 29060.554 100 +# collapse 238.456 273.757 292.1693 293.9905 312.01 388.106 100 # Large microbenchmark(dplyr = mutate_all(gdata, sum, na.rm = TRUE), collapse = fsum(cgdata, TRA = "replace_fill"), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# dplyr 391.63618 679.62609 662.91807 716.40975 729.7527 749.4973 10 +# collapse 49.63788 50.24189 61.77658 55.18416 63.4596 111.6039 10 ## Dividing by group sum # Small microbenchmark(dplyr = mutate_all(gGGDC10S, function(x) x/sum(x, na.rm = TRUE)), collapse = fsum(cgGGDC10S, TRA = "/")) +# Unit: microseconds +# expr min lq mean median uq max neval +# dplyr 13058.992 13203.8450 14294.3733 13321.41 13880.796 42300.028 100 +# collapse 242.884 268.5295 278.8541 274.29 294.585 330.255 100 # Large microbenchmark(dplyr = mutate_all(gdata, function(x) x/sum(x, na.rm = TRUE)), collapse = fsum(cgdata, TRA = "/"), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# dplyr 474.9046 654.6199 796.14248 907.32863 942.32567 999.2501 10 +# collapse 49.3542 50.9056 84.66647 52.05635 74.51705 325.4319 10 ## Centering # Small microbenchmark(dplyr = mutate_all(gGGDC10S, function(x) x-mean.default(x, na.rm = TRUE)), collapse = fwithin(cgGGDC10S)) +# Unit: microseconds +# expr min lq mean median uq max neval +# dplyr 14460.04 14769.4095 15977.4942 14859.815 15013.421 37113.077 100 +# collapse 203.77 229.7845 246.5043 242.638 266.664 293.191 100 # Large microbenchmark(dplyr = mutate_all(gdata, function(x) x-mean.default(x, na.rm = TRUE)), collapse = fwithin(cgdata), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# dplyr 893.06503 925.50231 1217.2225 1259.34620 1445.254 1545.5490 10 +# collapse 43.90731 56.97093 143.4797 73.39498 152.872 429.3341 10 ## Centering and Scaling (Standardizing) # Small microbenchmark(dplyr = mutate_all(gGGDC10S, function(x) (x-mean.default(x, na.rm = TRUE))/sd(x, na.rm = TRUE)), collapse = fscale(cgGGDC10S)) +# Unit: microseconds +# expr min lq mean median uq max neval +# dplyr 20275.033 21145.524 24976.1242 22214.190 25194.0285 79869.435 100 +# collapse 277.775 304.958 323.3613 314.388 338.2705 437.388 100 # Large microbenchmark(dplyr = mutate_all(gdata, function(x) (x-mean.default(x, na.rm = TRUE))/sd(x, na.rm = TRUE)), collapse = fscale(cgdata), times = 2) +# Unit: milliseconds +# expr min lq mean median uq max neval +# dplyr 2118.97696 2118.97696 2315.9282 2315.9282 2512.87938 2512.87938 2 +# collapse 60.17144 60.17144 60.6284 60.6284 61.08537 61.08537 2 ## Lag # Small @@ -1049,54 +1989,102 @@ microbenchmark(dplyr_unordered = mutate(gGGDC10S, across(everything(), dplyr::la collapse_unordered = flag(cgGGDC10S), dplyr_ordered = mutate(gGGDC10S, across(everything(), \(x) dplyr::lag(x, order_by = Year))), collapse_ordered = flag(cgGGDC10S, t = Year)) +# Unit: microseconds +# expr min lq mean median uq max neval +# dplyr_unordered 14495.386 14796.101 17579.85413 15265.3250 15889.7550 49137.721 100 +# collapse_unordered 48.544 75.071 90.29225 86.6330 109.6545 225.377 100 +# dplyr_ordered 24893.437 25327.607 27521.59809 25904.9275 27136.2190 51312.074 100 +# collapse_ordered 80.196 107.953 120.85160 117.5675 131.6715 189.051 100 # Large microbenchmark(dplyr_unordered = mutate(gdata, across(everything(), dplyr::lag)), collapse_unordered = flag(cgdata), dplyr_ordered = mutate(gdata, across(everything(), \(x) dplyr::lag(x, order_by = Year))), collapse_ordered = flag(cgdata, t = Year), times = 2) +# Unit: milliseconds +# expr min lq mean median uq max neval +# dplyr_unordered 3461.11500 3461.11500 3471.95821 3471.95821 3482.80142 3482.80142 2 +# collapse_unordered 13.71897 13.71897 211.59809 211.59809 409.47721 409.47721 2 +# dplyr_ordered 5786.57522 5786.57522 6291.90389 6291.90389 6797.23256 6797.23256 2 +# collapse_ordered 25.14399 25.14399 35.36102 35.36102 45.57806 45.57806 2 ## First-Difference (unordered) # Small microbenchmark(dplyr_unordered = mutate_all(gGGDC10S, function(x) x - dplyr::lag(x)), collapse_unordered = fdiff(cgGGDC10S)) +# Unit: microseconds +# expr min lq mean median uq max neval +# dplyr_unordered 25613.274 25878.0725 27951.41954 26257.3225 27226.808 43048.893 100 +# collapse_unordered 56.539 72.3035 95.72147 91.6965 102.664 254.077 100 # Large microbenchmark(dplyr_unordered = mutate_all(gdata, function(x) x - dplyr::lag(x)), collapse_unordered = fdiff(cgdata), times = 2) +# Unit: milliseconds +# expr min lq mean median uq max neval +# dplyr_unordered 3287.88487 3287.88487 3425.69703 3425.69703 3563.509 3563.509 2 +# collapse_unordered 16.58971 16.58971 23.36885 23.36885 30.148 30.148 2 gc() +# used (Mb) gc trigger (Mb) limit (Mb) max used (Mb) +# Ncells 3978800 212.5 8862175 473.3 NA 8862175 473.3 +# Vcells 24870572 189.8 72805912 555.5 16384 445825141 3401.4 ``` Below again some benchmarks for transformations not easily of efficiently performed with *dplyr*, such as centering on the overall mean, mean-preserving scaling, weighted scaling and centering, sequences of lags / leads, (iterated) panel-differences and growth rates. -```{r, eval=RUNBENCH, warning=FALSE, message=FALSE} + +```r # Centering on overall mean microbenchmark(fwithin(cgdata, mean = "overall.mean"), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# fwithin(cgdata, mean = "overall.mean") 44.66782 48.03445 52.04073 50.07953 53.67134 71.13221 10 # Weighted Centering microbenchmark(fwithin(cgdata, SUM), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# fwithin(cgdata, SUM) 40.45204 42.86833 46.55326 46.18277 47.28202 57.82673 10 microbenchmark(fwithin(cgdata, SUM, mean = "overall.mean"), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max +# fwithin(cgdata, SUM, mean = "overall.mean") 39.99279 40.32256 43.0638 40.60269 41.34366 54.45542 +# neval +# 10 # Weighted Scaling and Standardizing microbenchmark(fsd(cgdata, SUM, TRA = "/"), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# fsd(cgdata, SUM, TRA = "/") 50.19536 50.9145 55.12553 53.23862 56.27094 67.46816 10 microbenchmark(fscale(cgdata, SUM), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# fscale(cgdata, SUM) 54.14792 57.64584 60.83251 59.88025 61.16425 72.31928 10 # Sequence of lags and leads microbenchmark(flag(cgdata, -1:1), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# flag(cgdata, -1:1) 26.03902 48.02695 194.8518 257.0652 264.5479 276.5348 10 # Iterated difference microbenchmark(fdiff(cgdata, 1, 2), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# fdiff(cgdata, 1, 2) 38.76001 39.83896 44.93731 41.08887 48.98348 63.42528 10 # Growth Rate microbenchmark(fgrowth(cgdata,1), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# fgrowth(cgdata, 1) 11.58627 13.81528 18.05776 14.03489 22.34279 31.15811 10 ``` -```{r, echo=FALSE} -options(oldopts) -``` + ## References diff --git a/vignettes/collapse_and_dplyr.Rmd.orig b/vignettes/collapse_and_dplyr.Rmd.orig new file mode 100644 index 00000000..143958f6 --- /dev/null +++ b/vignettes/collapse_and_dplyr.Rmd.orig @@ -0,0 +1,1109 @@ +--- +title: "collapse and dplyr" +subtitle: "Fast (Weighted) Aggregations and Transformations in a Piped Workflow" +author: "Sebastian Krantz" +date: "2021-01-04" +output: + rmarkdown::html_vignette: + toc: true + +vignette: > + %\VignetteIndexEntry{collapse and dplyr} + %\VignetteEngine{knitr::rmarkdown} + %\VignetteEncoding{UTF-8} +params: + cache: true +--- + +```{css, echo=FALSE} +pre { + max-height: 500px; + overflow-y: auto; +} + +pre[class] { + max-height: 500px; +} +``` + +```{r, echo=FALSE} +NCRAN <- identical(Sys.getenv("NCRAN"), "TRUE") +RUNBENCH <- NCRAN && identical(Sys.getenv("RUNBENCH"), "TRUE") + +oldopts <- options(width = 100L) +``` + +```{r, echo = FALSE, message = FALSE, warning=FALSE, eval=NCRAN} +library(dplyr) +library(microbenchmark) +library(collapse) +knitr::opts_chunk$set(error = FALSE, message = FALSE, warning = FALSE, + comment = "#", tidy = FALSE, cache = TRUE, collapse = TRUE, + fig.width = 8, fig.height = 5, + out.width = '100%') + +set.seed(101) +``` + + +This vignette focuses on the integration of *collapse* and the popular *dplyr* package by Hadley Wickham. In particular it will demonstrate how using *collapse*'s fast functions and some fast alternatives for *dplyr* verbs can substantially facilitate and speed up basic data manipulation, grouped and weighted aggregations and transformations, and panel data computations (i.e. between- and within-transformations, panel-lags, differences and growth rates) in a *dplyr* (piped) workflow. + +*** + +**Notes:** + +- This vignette is targeted at *dplyr* / *tidyverse* users. *collapse* is a standalone package and can be programmed efficiently without pipes or *dplyr* verbs. + +- The 'Introduction to *collapse*' vignette provides a thorough introduction to the package and a built-in structured documentation is available under `help("collapse-documentation")` after installing the package. In addition `help("collapse-package")` provides a compact set of examples for quick-start. + +- Documentation and vignettes can also be viewed [online](). + +*** + +## 1. Fast Aggregations + +A key feature of *collapse* is it's broad set of *Fast Statistical Functions* (`fsum, fprod, fmean, fmedian, fmode, fvar, fsd, fmin, fmax, fnth, ffirst, flast, fnobs, fndistinct`) which are able to substantially speed-up column-wise, grouped and weighted computations on vectors, matrices or data frames. The functions are S3 generic, with a default (vector), matrix and data frame method, as well as a grouped_df method for grouped tibbles used by *dplyr*. The grouped tibble method has the following arguments: + +```{r eval=FALSE} +FUN.grouped_df(x, [w = NULL,] TRA = NULL, [na.rm = TRUE,] + use.g.names = FALSE, keep.group_vars = TRUE, [keep.w = TRUE,] ...) +``` + +where `w` is a weight variable, and `TRA` and can be used to transform `x` using the computed statistics and one of 10 available transformations (`"replace_fill", "replace", "-", "-+", "/", "%", "+", "*", "%%", "-%%"`, discussed in section 2). `na.rm` efficiently removes missing values and is `TRUE` by default. `use.g.names` generates new row-names from the unique combinations of groups (default: disabled), whereas `keep.group_vars` (default: enabled) will keep the grouping columns as is custom in the native `data %>% group_by(...) %>% summarize(...)` workflow in *dplyr*. Finally, `keep.w` regulates whether a weighting variable used is also aggregated and saved in a column. For `fsum, fmean, fmedian, fnth, fvar, fsd` and `fmode` this will compute the sum of the weights in each group, whereas `fprod` returns the product of the weights. + +With that in mind, let's consider some straightforward applications. + +### 1.1 Simple Aggregations + +Consider the Groningen Growth and Development Center 10-Sector Database included in *collapse* and introduced in the main vignette: + +```{r, eval=NCRAN} +library(collapse) +head(GGDC10S) + +# Summarize the Data: +# descr(GGDC10S, cols = is_categorical) +# aperm(qsu(GGDC10S, ~Variable, cols = is.numeric)) + +# Efficiently converting to tibble (no deep copy) +GGDC10S <- qTBL(GGDC10S) +``` + +Simple column-wise computations using the fast functions and pipe operators are performed as follows: + +```{r, eval=NCRAN} +library(dplyr) + +GGDC10S %>% fnobs # Number of Observations +GGDC10S %>% fndistinct # Number of distinct values +GGDC10S %>% select_at(6:16) %>% fmedian # Median +GGDC10S %>% select_at(6:16) %>% fmean # Mean +GGDC10S %>% fmode # Mode +GGDC10S %>% fmode(drop = FALSE) # Keep data structure intact +``` + +Moving on to grouped statistics, we can compute the average value added and employment by sector and country using: + +```{r, eval=NCRAN} +GGDC10S %>% + group_by(Variable, Country) %>% + select_at(6:16) %>% fmean + +``` + +Similarly we can aggregate using any other of the above functions. + + + + + + + + + + + +It is important to not use *dplyr*'s `summarize` together with these functions since that would eliminate their speed gain. These functions are fast because they are executed only once and carry out the grouped computations in C++, whereas `summarize` will apply the function to each group in the grouped tibble. + + + +*** + +#### Excursus: What is Happening Behind the Scenes? +To better explain this point it is perhaps good to shed some light on what is happening behind the scenes of *dplyr* and *collapse*. Fundamentally both packages follow different computing paradigms: + +*dplyr* is an efficient implementation of the Split-Apply-Combine computing paradigm. Data is split into groups, these data-chunks are then passed to a function carrying out the computation, and finally recombined to produce the aggregated data.frame. + +This modus operandi is evident in the grouping mechanism of *dplyr*. When a data.frame is passed through *group_by*, a 'groups' attribute is attached: + +```{r, eval=NCRAN} +GGDC10S %>% group_by(Variable, Country) %>% attr("groups") +``` + +This object is a data.frame giving the unique groups and in the third (last) column vectors containing the indices of the rows belonging to that group. A command like `summarize` uses this information to split the data.frame into groups which are then passed sequentially to the function used and later recombined. These steps are also done in C++ which makes *dplyr* quite efficient. + +Now *collapse* is based around one-pass grouped computations at the C++ level using its own grouped statistical functions. In other words the data is not split and recombined at all but the entire computation is performed in a single C++ loop running through that data and completing the computations for each group simultaneously. This modus operandi is also evident in *collapse* grouping objects. The method `GRP.grouped_df` takes a *dplyr* grouping object from a grouped tibble and efficiently converts it to a *collapse* grouping object: + +```{r, eval=NCRAN} +GGDC10S %>% group_by(Variable, Country) %>% GRP %>% str +``` + +This object is a list where the first three elements give the number of groups, the group-id to which each row belongs and a vector of group-sizes. A function like `fsum` uses this information to (for each column) create a result vector of size 'N.groups' and the run through the column using the 'group.id' vector to add the i'th data point to the 'group.id[i]'th element of the result vector. When the loop is finished, the grouped computation is also finished. + +It is obvious that *collapse* is faster than *dplyr* since it's method of computing involves less steps, and it does not need to call statistical functions multiple times. See the benchmark section. + + +*** + +### 1.2 More Speed using *collapse* Verbs +*collapse* fast functions do not develop their maximal performance on a grouped tibble created with `group_by` because of the additional conversion cost of the grouping object incurred by `GRP.grouped_df`. This cost is already minimized through the use of C++, but we can do even better replacing `group_by` with `collapse::fgroup_by`. `fgroup_by` works like `group_by` but does the grouping with `collapse::GRP` (up to 10x faster than `group_by`) and simply attaches a *collapse* grouping object to the grouped_df. Thus the speed gain is 2-fold: Faster grouping and no conversion cost when calling *collapse* functions. + +Another improvement comes from replacing the *dplyr* verb `select` with `collapse::fselect`, and, for selection using column names, indices or functions use `collapse::get_vars` instead of `select_at` or `select_if`. Next to `get_vars`, *collapse* also introduces the predicates `num_vars`, `cat_vars`, `char_vars`, `fact_vars`, `logi_vars` and `date_vars` to efficiently select columns by type. + +```{r, eval=NCRAN} +GGDC10S %>% fgroup_by(Variable, Country) %>% get_vars(6:16) %>% fmedian + +microbenchmark(collapse = GGDC10S %>% fgroup_by(Variable, Country) %>% get_vars(6:16) %>% fmedian, + hybrid = GGDC10S %>% group_by(Variable, Country) %>% select_at(6:16) %>% fmedian, + dplyr = GGDC10S %>% group_by(Variable, Country) %>% select_at(6:16) %>% summarise_all(median, na.rm = TRUE)) +``` +Benchmarks on the different components of this code and with larger data are provided under 'Benchmarks'. Note that a grouped tibble created with `fgroup_by` can no longer be used for grouped computations with *dplyr* verbs like `mutate` or `summarize`. +`fgroup_by` first assigns the class *GDP_df* which is for printing grouping information and subsetting, then the object classes (*tbl_df*, *data.table* or whatever else), followed by classes *grouped_df* and *data.frame*, and adds the grouping object in a 'groups' attribute. Since *tbl_df* is assigned before *grouped_df*, the object is treated by the *dplyr* ecosystem like a normal tibble. + +```{r, eval=NCRAN} +class(group_by(GGDC10S, Variable, Country)) + +class(fgroup_by(GGDC10S, Variable, Country)) +``` + + The function `fungroup` removes classes 'GDP_df' and 'grouped_df' and the 'groups' attribute (and can thus also be used for grouped tibbles created with `dplyr::group_by`). + + Note that any kind of data frame based class can be grouped with `fgroup_by`, and still retain full responsiveness to all methods defined for that class. Functions performing aggregation on the grouped data frame remove the grouping object and classes afterwards, yielding an object with the same class and attributes as the input. + +The print method shown below reports the grouping variables, and then in square brackets the information `[number of groups | average group size (standard-deviation of group sizes)]`: + +```{r, eval=NCRAN} +fgroup_by(GGDC10S, Variable, Country) +``` + +Note further that `fselect` and `get_vars` are not full drop-in replacements for `select` because they do not have a grouped_df method: + +```{r, eval=NCRAN} +GGDC10S %>% group_by(Variable, Country) %>% select_at(6:16) %>% tail(3) +GGDC10S %>% group_by(Variable, Country) %>% get_vars(6:16) %>% tail(3) +``` + +Since by default `keep.group_vars = TRUE` in the *Fast Statistical Functions*, the end result is nevertheless the same: + +```{r, eval=NCRAN} +GGDC10S %>% group_by(Variable, Country) %>% select_at(6:16) %>% fmean %>% tail(3) +GGDC10S %>% group_by(Variable, Country) %>% get_vars(6:16) %>% fmean %>% tail(3) +``` + +Another useful verb introduced by *collapse* is `fgroup_vars`, which can be used to efficiently obtain the grouping columns or grouping variables from a grouped tibble: + +```{r, eval=NCRAN} +# fgroup_by fully supports grouped tibbles created with group_by or fgroup_by: +GGDC10S %>% group_by(Variable, Country) %>% fgroup_vars %>% head(3) +GGDC10S %>% fgroup_by(Variable, Country) %>% fgroup_vars %>% head(3) + +# The other possibilities: +GGDC10S %>% group_by(Variable, Country) %>% fgroup_vars("unique") %>% head(3) +GGDC10S %>% group_by(Variable, Country) %>% fgroup_vars("names") +GGDC10S %>% group_by(Variable, Country) %>% fgroup_vars("indices") +GGDC10S %>% group_by(Variable, Country) %>% fgroup_vars("named_indices") +GGDC10S %>% group_by(Variable, Country) %>% fgroup_vars("logical") +GGDC10S %>% group_by(Variable, Country) %>% fgroup_vars("named_logical") +``` + +Another *collapse* verb to mention here is `fsubset`, a faster alternative to `dplyr::filter` which also provides an option to flexibly subset columns after the select argument: + +```{r, eval=NCRAN} +# Two equivalent calls, the first is substantially faster +GGDC10S %>% fsubset(Variable == "VA" & Year > 1990, Country, Year, AGR:GOV) %>% head(3) + +GGDC10S %>% filter(Variable == "VA" & Year > 1990) %>% select(Country, Year, AGR:GOV) %>% head(3) +``` + +*collapse* also offers `roworder`, `frename`, `colorder` and `ftransform`/`TRA` as fast replacements for `dplyr::arrange`, `dplyr::rename`, `dplyr::relocate` and `dplyr::mutate`. + +### 1.3 Multi-Function Aggregations + +One can also aggregate with multiple functions at the same time. For such operations it is often necessary to use curly braces `{` to prevent first argument injection so that `%>% cbind(FUN1(.), FUN2(.))` does not evaluate as `%>% cbind(., FUN1(.), FUN2(.))`: + +```{r, eval=NCRAN} +GGDC10S %>% + fgroup_by(Variable, Country) %>% + get_vars(6:16) %>% { + cbind(fmedian(.), + add_stub(fmean(., keep.group_vars = FALSE), "mean_")) + } %>% head(3) +``` + +The function `add_stub` used above is a *collapse* function adding a prefix (default) or suffix to variables names. The *collapse* predicate `add_vars` provides a more efficient alternative to `cbind.data.frame`. The idea here is 'adding' variables to the data.frame in the first argument i.e. the attributes of the first argument are preserved, so the expression below still gives a tibble instead of a data.frame: + + + + + +```{r, eval=NCRAN} +GGDC10S %>% + fgroup_by(Variable, Country) %>% { + add_vars(get_vars(., "Reg", regex = TRUE) %>% ffirst, # Regular expression matching column names + num_vars(.) %>% fmean(keep.group_vars = FALSE) %>% add_stub("mean_"), # num_vars selects all numeric variables + fselect(., PU:TRA) %>% fmedian(keep.group_vars = FALSE) %>% add_stub("median_"), + fselect(., PU:CON) %>% fmin(keep.group_vars = FALSE) %>% add_stub("min_")) + } %>% head(3) +``` + +Another nice feature of `add_vars` is that it can also very efficiently reorder columns i.e. bind columns in a different order than they are passed. This can be done by simply specifying the positions the added columns should have in the final data frame, and then `add_vars` shifts the first argument columns to the right to fill in the gaps. + +```{r, eval=NCRAN} +GGDC10S %>% + fsubset(Variable == "VA", Country, AGR, SUM) %>% + fgroup_by(Country) %>% { + add_vars(fgroup_vars(.,"unique"), + fmean(., keep.group_vars = FALSE) %>% add_stub("mean_"), + fsd(., keep.group_vars = FALSE) %>% add_stub("sd_"), + pos = c(2,4,3,5)) + } %>% head(3) +``` + +A much more compact solution to multi-function and multi-type aggregation is offered by the function *collapg*: + +```{r, eval=NCRAN} +# This aggregates numeric colums using the mean (fmean) and categorical columns with the mode (fmode) +GGDC10S %>% fgroup_by(Variable, Country) %>% collapg %>% head(3) +``` + +By default it aggregates numeric columns using the `fmean` and categorical columns using `fmode`, and preserves the order of all columns. Changing these defaults is very easy: + +```{r, eval=NCRAN} +# This aggregates numeric colums using the median and categorical columns using the first value +GGDC10S %>% fgroup_by(Variable, Country) %>% collapg(fmedian, flast) %>% head(3) +``` + +One can apply multiple functions to both numeric and/or categorical data: + +```{r, eval=NCRAN} +GGDC10S %>% fgroup_by(Variable, Country) %>% + collapg(list(fmean, fmedian), list(first, fmode, flast)) %>% head(3) +``` + +Applying multiple functions to only numeric (or only categorical) data allows return in a long format: +```{r, eval=NCRAN} +GGDC10S %>% fgroup_by(Variable, Country) %>% + collapg(list(fmean, fmedian), cols = is.numeric, return = "long") %>% head(3) +``` + +Finally, `collapg` also makes it very easy to apply aggregator functions to certain columns only: + +```{r, eval=NCRAN} +GGDC10S %>% fgroup_by(Variable, Country) %>% + collapg(custom = list(fmean = 6:8, fmedian = 10:12)) %>% head(3) +``` + To understand more about `collapg`, look it up in the documentation (`?collapg`). + +### 1.4 Weighted Aggregations + +Weighted aggregations are possible with the functions `fsum, fprod, fmean, fmedian, fnth, fmode, fvar` and `fsd`. The implementation is such that by default (option `keep.w = TRUE`) these functions also aggregate the weights, so that further weighted computations can be performed on the aggregated data. `fprod` saves the product of the weights, whereas the other functions save the sum of the weights in a column next to the grouping variables. If `na.rm = TRUE` (the default), rows with missing weights are omitted from the computation. + + +```{r, eval=NCRAN} +# This computes a frequency-weighted grouped standard-deviation, taking the total EMP / VA as weight +GGDC10S %>% + fgroup_by(Variable, Country) %>% + fselect(AGR:SUM) %>% fsd(SUM) %>% head(3) + +# This computes a weighted grouped mode, taking the total EMP / VA as weight +GGDC10S %>% + fgroup_by(Variable, Country) %>% + fselect(AGR:SUM) %>% fmode(SUM) %>% head(3) +``` + +The weighted variance / standard deviation is currently only implemented with frequency weights. + + +Weighted aggregations may also be performed with `collapg`. By default `fsum` is used to compute a sum of the weights, but it is also possible here to aggregate the weights with other functions: + +```{r, eval=NCRAN} +# This aggregates numeric colums using the weighted mean (the default) and categorical columns using the weighted mode (the default). +# Weights (column SUM) are aggregated using both the sum and the maximum. +GGDC10S %>% group_by(Variable, Country) %>% + collapg(w = SUM, wFUN = list(fsum, fmax)) %>% head(3) +``` + + + + + + + + + + + + + + + + +## 2. Fast Transformations + +*collapse* also provides some fast transformations that significantly extend the scope and speed of manipulations that can be performed with `dplyr::mutate`. + + +### 2.1 Fast Transform and Compute Variables +The function `ftransform` can be used to manipulate columns in the same ways as `mutate`: + +```{r, eval=NCRAN} +GGDC10S %>% fsubset(Variable == "VA", Country, Year, AGR, SUM) %>% + ftransform(AGR_perc = AGR / SUM * 100, # Computing % of VA in Agriculture + AGR_mean = fmean(AGR), # Average Agricultural VA + AGR = NULL, SUM = NULL) %>% # Deleting columns AGR and SUM + head +``` + +The modification brought by `ftransformv` enables transformations of groups of columns like `dplyr::mutate_at` and `dplyr::mutate_if`: + +```{r, eval=NCRAN} +# This replaces variables mpg, carb and wt by their log (.c turns expressions into character vectors) +mtcars %>% ftransformv(.c(mpg, carb, wt), log) %>% head + +# Logging numeric variables +iris %>% ftransformv(is.numeric, log) %>% head +``` + +Instead of `column = value` type arguments, it is also possible to pass a single list of transformed variables to `ftransform`, which will be regarded in the same way as an evaluated list of `column = value` arguments. It can be used for more complex transformations: + +```{r, eval=NCRAN} +# Logging values and replacing generated Inf values +mtcars %>% ftransform(fselect(., mpg, cyl, vs:gear) %>% lapply(log) %>% replace_Inf) %>% head +``` + +If only the computed columns need to be returned, `fcompute` provides an efficient alternative: + +```{r, eval=NCRAN} +GGDC10S %>% fsubset(Variable == "VA", Country, Year, AGR, SUM) %>% + fcompute(AGR_perc = AGR / SUM * 100, + AGR_mean = fmean(AGR)) %>% head +``` + +`ftransform` and `fcompute` are an order of magnitude faster than `mutate`, but they do not support grouped computations using arbitrary functions. We will see that this is hardly a limitation as *collapse* provides very efficient and elegant alternative programming mechanisms... + +### 2.2 Replacing and Sweeping out Statistics + + +All statistical (scalar-valued) functions in the collapse package (`fsum, fprod, fmean, fmedian, fmode, fvar, fsd, fmin, fmax, fnth, ffirst, flast, fnobs, fndistinct`) have a `TRA` argument which can be used to efficiently transform data by either (column-wise) replacing data values with computed statistics or sweeping the statistics out of the data. Operations can be specified using either an integer or quoted operator / string. The 10 operations supported by `TRA` are: + +* 1 - "replace_fill" : replace and overwrite missing values (same as `mutate`) + +* 2 - "replace" : replace but preserve missing values + +* 3 - "-" : subtract (center) + +* 4 - "-+" : subtract group-statistics but add average of group statistics + +* 5 - "/" : divide (scale) + +* 6 - "%" : compute percentages (divide and multiply by 100) + +* 7 - "+" : add + +* 8 - "*" : multiply + +* 9 - "%%" : modulus + +* 10 - "-%%" : subtract modulus + + + +Simple transformations are again straightforward to specify: +```{r, eval=NCRAN} +# This subtracts the median value from all data points i.e. centers on the median +GGDC10S %>% num_vars %>% fmedian(TRA = "-") %>% head + +# This replaces all data points with the mode +GGDC10S %>% char_vars %>% fmode(TRA = "replace") %>% head +``` + +Similarly for grouped transformations: + + + + + + +```{r, eval=NCRAN} +# Replacing data with the 2nd quartile (25%) +GGDC10S %>% + fselect(Variable, Country, AGR:SUM) %>% + fgroup_by(Variable, Country) %>% fnth(0.25, TRA = "replace_fill") %>% head(3) + +# Scaling sectoral data by Variable and Country +GGDC10S %>% + fselect(Variable, Country, AGR:SUM) %>% + fgroup_by(Variable, Country) %>% fsd(TRA = "/") %>% head + + +``` + + + + + +The benchmarks below will demonstrate that these internal sweeping and replacement operations fully performed in C++ compute significantly faster than using `dplyr::mutate`, especially as the number of groups grows large. The S3 generic nature of the *Fast Statistical Functions* further allows us to perform grouped mutations on the fly (together with `ftransform` or `fcompute`), without the need of first creating a grouped tibble: + +```{r, eval=NCRAN} +# AGR_gmed = TRUE if AGR is greater than it's median value, grouped by Variable and Country +# Note: This calls fmedian.default +settransform(GGDC10S, AGR_gmed = AGR > fmedian(AGR, list(Variable, Country), TRA = "replace")) +tail(GGDC10S, 3) + +# Dividing (scaling) the sectoral data (columns 6 through 16) by their grouped standard deviation +settransformv(GGDC10S, 6:16, fsd, list(Variable, Country), TRA = "/", apply = FALSE) +tail(GGDC10S, 3) +rm(GGDC10S) + +``` + +```{r, echo=FALSE, eval=NCRAN} +GGDC10S <- qTBL(GGDC10S) +``` + +Weights are easily added to any grouped transformation: + +```{r, eval=NCRAN} +# This subtracts weighted group means from the data, using SUM column as weights.. +GGDC10S %>% + fselect(Variable, Country, AGR:SUM) %>% + fgroup_by(Variable, Country) %>% fmean(SUM, "-") %>% head + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Sequential operations are also easily performed: +```{r, eval=NCRAN} +# This scales and then subtracts the median +GGDC10S %>% + fselect(Variable, Country, AGR:SUM) %>% + fgroup_by(Variable, Country) %>% fsd(TRA = "/") %>% fmedian(TRA = "-") +``` + +Of course it is also possible to combine multiple functions as in the aggregation section, or to add variables to existing data: + +```{r, eval=NCRAN} +# This adds a groupwise observation count next to each column +add_vars(GGDC10S, seq(7,27,2)) <- GGDC10S %>% + fgroup_by(Variable, Country) %>% fselect(AGR:SUM) %>% + fnobs("replace_fill") %>% add_stub("N_") + +head(GGDC10S) +rm(GGDC10S) +``` + +```{r, echo=FALSE, eval=NCRAN} +GGDC10S <- qTBL(GGDC10S) +``` +There are lots of other examples one could construct using the 10 operations and 14 functions listed above, the examples provided just outline the suggested programming basics. Performance considerations make it very much worthwhile to spend some time and think how complex operations can be implemented in this programming framework, before defining some function in R and applying it to data using `dplyr::mutate`. + + + +### 2.3 More Control using the `TRA` Function + +Towards this end, calling `TRA()` directly also facilitates more complex and customized operations. Behind the scenes of the `TRA = ...` argument, the *Fast Statistical Functions* first compute the grouped statistics on all columns of the data, and these statistics are then directly fed into a C++ function that uses them to replace or sweep them out of data points in one of the 10 ways described above. This function can also be called directly by the name of `TRA`. + + +Fundamentally, `TRA` is a generalization of `base::sweep` for column-wise grouped operations^[Row-wise operations are not supported by TRA.]. Direct calls to `TRA` enable more control over inputs and outputs. + +The two operations below are equivalent, although the first is slightly more efficient as it only requires one method dispatch and one check of the inputs: + +```{r, eval=NCRAN} +# This divides by the product +GGDC10S %>% + fgroup_by(Variable, Country) %>% + get_vars(6:16) %>% fprod(TRA = "/") %>% head + +# Same thing +GGDC10S %>% + fgroup_by(Variable, Country) %>% + get_vars(6:16) %>% + TRA(fprod(., keep.group_vars = FALSE), "/") %>% head # [same as TRA(.,fprod(., keep.group_vars = FALSE),"/")] +``` + +`TRA.grouped_df` was designed such that it matches the columns of the statistics (aggregated columns) to those of the original data, and only transforms matching columns while returning the whole data frame. Thus it is easily possible to only apply a transformation to the first two sectors: + +```{r, eval=NCRAN} +# This only demeans Agriculture (AGR) and Mining (MIN) +GGDC10S %>% + fgroup_by(Variable, Country) %>% + TRA(fselect(., AGR, MIN) %>% fmean(keep.group_vars = FALSE), "-") %>% head +``` +Since `TRA` is already built into all *Fast Statistical Functions* as an argument, it is best used in computations where grouped statistics are computed using some other function. + +```{r, eval=NCRAN} +# Same as above, with one line of code using fmean.data.frame and ftransform... +GGDC10S %>% ftransform(fmean(list(AGR = AGR, MIN = MIN), list(Variable, Country), TRA = "-")) %>% head + +``` + + + + + + + + +Another potential use of `TRA` is to do computations in two- or more steps, for example if both aggregated and transformed data are needed, or if computations are more complex and involve other manipulations in-between the aggregating and sweeping part: + +```{r, eval=NCRAN} +# Get grouped tibble +gGGDC <- GGDC10S %>% fgroup_by(Variable, Country) + +# Get aggregated data +gsumGGDC <- gGGDC %>% fselect(AGR:SUM) %>% fsum +head(gsumGGDC) + +# Get transformed (scaled) data +head(TRA(gGGDC, gsumGGDC, "/")) +``` + + +As discussed, whether using the argument to fast statistical functions or `TRA` directly, these data transformations are essentially a two-step process: Statistics are first computed and then used to transform the original data. + + + + +Although both steps are efficiently done in C++, it would be even more efficient to do them in a single step without materializing all the statistics before transforming the data. Such slightly more efficient functions are provided for the very commonly applied tasks of centering and averaging data by groups (widely known as 'between'-group and 'within'-group transformations), and scaling and centering data by groups (also known as 'standardizing' data). + + + +### 2.4 Faster Centering, Averaging and Standardizing + + +The functions `fbetween` and `fwithin` are slightly more memory efficient implementations of `fmean` invoked with different `TRA` options: + +```{r, eval=NCRAN} +GGDC10S %>% # Same as ... %>% fmean(TRA = "replace") + fgroup_by(Variable, Country) %>% get_vars(6:16) %>% fbetween %>% tail(2) + +GGDC10S %>% # Same as ... %>% fmean(TRA = "replace_fill") + fgroup_by(Variable, Country) %>% get_vars(6:16) %>% fbetween(fill = TRUE) %>% tail(2) + +GGDC10S %>% # Same as ... %>% fmean(TRA = "-") + fgroup_by(Variable, Country) %>% get_vars(6:16) %>% fwithin %>% tail(2) +``` + +Apart from higher speed, `fwithin` has a `mean` argument to assign an arbitrary mean to centered data, the default being `mean = 0`. A very common choice for such an added mean is just the overall mean of the data, which can be added in by invoking `mean = "overall.mean"`: + +```{r, eval=NCRAN} +GGDC10S %>% + fgroup_by(Variable, Country) %>% + fselect(Country, Variable, AGR:SUM) %>% fwithin(mean = "overall.mean") %>% tail(3) +``` + + + + + + + + + + +This can also be done using weights. The code below uses the `SUM` column as weights, and then for each variable and each group subtracts out the weighted mean, and then adds the overall weighted column mean back to the centered columns. The `SUM` column is just kept as it is and added after the grouping columns. + +```{r, eval=NCRAN} +GGDC10S %>% + fgroup_by(Variable, Country) %>% + fselect(Country, Variable, AGR:SUM) %>% fwithin(SUM, mean = "overall.mean") %>% tail(3) +``` +Another argument to `fwithin` is the `theta` parameter, allowing partial- or quasi-demeaning operations, e.g. `fwithin(gdata, theta = theta)` is equal to `gdata - theta * fbetween(gdata)`. This is particularly useful to prepare data for variance components (also known as 'random-effects') estimation. + + +Apart from `fbetween` and `fwithin`, the function `fscale` exists to efficiently scale and center data, to avoid sequential calls such as `... %>% fsd(TRA = "/") %>% fmean(TRA = "-")`. + +```{r, eval=NCRAN} +# This efficiently scales and centers (i.e. standardizes) the data +GGDC10S %>% + fgroup_by(Variable, Country) %>% + fselect(Country, Variable, AGR:SUM) %>% fscale +``` + +`fscale` also has additional `mean` and `sd` arguments allowing the user to (group-) scale data to an arbitrary mean and standard deviation. Setting `mean = FALSE` just scales the data but preserves the means, and is thus different from `fsd(..., TRA = "/")` which simply divides all values by the standard deviation: + +```{r, eval=NCRAN} +# Saving grouped tibble +gGGDC <- GGDC10S %>% + fgroup_by(Variable, Country) %>% + fselect(Country, Variable, AGR:SUM) + +# Original means +head(fmean(gGGDC)) + +# Mean Preserving Scaling +head(fmean(fscale(gGGDC, mean = FALSE))) +head(fsd(fscale(gGGDC, mean = FALSE))) +``` + +One can also set `mean = "overall.mean"`, which group-centers columns on the overall mean as illustrated with `fwithin`. Another interesting option is setting `sd = "within.sd"`. This group-scales data such that every group has a standard deviation equal to the within-standard deviation of the data: + +```{r, eval=NCRAN} +# Just using VA data for this example +gGGDC <- GGDC10S %>% + fsubset(Variable == "VA", Country, AGR:SUM) %>% + fgroup_by(Country) + +# This calculates the within- standard deviation for all columns +fsd(num_vars(ungroup(fwithin(gGGDC)))) + +# This scales all groups to take on the within- standard deviation while preserving group means +fsd(fscale(gGGDC, mean = FALSE, sd = "within.sd")) + +``` + +A grouped scaling operation with both `mean = "overall.mean"` and `sd = "within.sd"` thus efficiently achieves a harmonization of all groups in the first two moments without changing the fundamental properties (in terms of level and scale) of the data. + + +### 2.5 Lags / Leads, Differences and Growth Rates + + + +This section introduces 3 further powerful *collapse* functions: `flag`, `fdiff` and `fgrowth`. The first function, `flag`, efficiently computes sequences of fully identified lags and leads on time series and panel data. The following code computes 1 fully-identified panel-lag and 1 fully identified panel-lead of each variable in the data: + + +```{r, eval=NCRAN} +GGDC10S %>% + fselect(-Region, -Regioncode) %>% + fgroup_by(Variable, Country) %>% flag(-1:1, Year) +``` + +If the time-variable passed does not exactly identify the data (i.e. because of repeated values in each group), all 3 functions will issue appropriate error messages. `flag`, `fdiff` and `fgrowth` support irregular time series and unbalanced panels. + +It is also possible to omit the time-variable if one is certain that the data is sorted: +```{r, eval=NCRAN} +GGDC10S %>% + fselect(Variable, Country,AGR:SUM) %>% + fgroup_by(Variable, Country) %>% flag +``` + +`fdiff` computes sequences of lagged-leaded and iterated differences as well as quasi-differences and log-differences on time series and panel data. The code below computes the 1 and 10 year first and second differences of each variable in the data: +```{r, eval=NCRAN} +GGDC10S %>% + fselect(-Region, -Regioncode) %>% + fgroup_by(Variable, Country) %>% fdiff(c(1, 10), 1:2, Year) +``` +Log-differences of the form $log(x_t) - log(x_{t-s})$ are also easily computed. + +```{r, eval=NCRAN} +GGDC10S %>% + fselect(-Region, -Regioncode) %>% + fgroup_by(Variable, Country) %>% fdiff(c(1, 10), 1, Year, log = TRUE) +``` + +Finally, it is also possible to compute quasi-differences and quasi-log-differences of the form $x_t - \rho x_{t-s}$ or $log(x_t) - \rho log(x_{t-s})$: + +```{r, eval=NCRAN} +GGDC10S %>% + fselect(-Region, -Regioncode) %>% + fgroup_by(Variable, Country) %>% fdiff(t = Year, rho = 0.95) +``` + +The quasi-differencing feature was added to `fdiff` to facilitate the preparation of time series and panel data for least-squares estimations suffering from serial correlation following Cochrane & Orcutt (1949). + + + +Finally, `fgrowth` computes growth rates in the same way. By default exact growth rates are computed in percentage terms using $(x_t-x_{t-s}) / x_{t-s} \times 100$ (the default argument is `scale = 100`). The user can also request growth rates obtained by log-differencing using $log(x_t/ x_{t-s}) \times 100$. +```{r, eval=NCRAN} +# Exact growth rates, computed as: (x/lag(x) - 1) * 100 +GGDC10S %>% + fselect(-Region, -Regioncode) %>% + fgroup_by(Variable, Country) %>% fgrowth(c(1, 10), 1, Year) + +# Log-difference growth rates, computed as: log(x / lag(x)) * 100 +GGDC10S %>% + fselect(-Region, -Regioncode) %>% + fgroup_by(Variable, Country) %>% fgrowth(c(1, 10), 1, Year, logdiff = TRUE) +``` + +`fdiff` and `fgrowth` can also perform leaded (forward) differences and growth rates (i.e. `... %>% fgrowth(-c(1, 10), 1:2, Year)` would compute one and 10-year leaded first and second differences). Again it is possible to perform sequential operations: + +```{r, eval=NCRAN} +# This computes the 1 and 10-year growth rates, for the current period and lagged by one period +GGDC10S %>% + fselect(-Region, -Regioncode) %>% + fgroup_by(Variable, Country) %>% fgrowth(c(1, 10), 1, Year) %>% flag(0:1, Year) +``` + +## 3. Benchmarks + +This section seeks to demonstrate that the functionality introduced in the preceding 2 sections indeed produces code that evaluates substantially faster than native *dplyr*. + +To do this properly, the different components of a typical piped call (selecting / subsetting, ordering, grouping, and performing some computation) are benchmarked separately on 2 different data sizes. + +All benchmarks are run on a Windows 8.1 laptop with a 2x 2.2 GHZ Intel i5 processor, 8GB DDR3 RAM and a Samsung 850 EVO SSD hard drive. + +### 3.1 Data +Benchmarks are run on the original `GGDC10S` data used throughout this vignette and a larger dataset with approx. 1 million observations, obtained by replicating and row-binding `GGDC10S` 200 times while maintaining unique groups. + +```{r, eval=RUNBENCH} +# This shows the groups in GGDC10S +GRP(GGDC10S, ~ Variable + Country) + +# This replicates the data 200 times +data <- replicate(200, GGDC10S, simplify = FALSE) +# This function adds a number i to the country and variable columns of each dataset +uniquify <- function(x, i) ftransform(x, lapply(unclass(x)[c(1,4)], paste0, i)) +# Making datasets unique and row-binding them +data <- unlist2d(Map(uniquify, data, as.list(1:200)), idcols = FALSE) +fdim(data) + +# This shows the groups in the replicated data +GRP(data, ~ Variable + Country) + +gc() +``` + +### 3.1 Selecting, Subsetting, Ordering and Grouping + +```{r, eval=RUNBENCH, warning=FALSE, message=FALSE} +## Selecting columns +# Small +microbenchmark(dplyr = select(GGDC10S, Country, Variable, AGR:SUM), + collapse = fselect(GGDC10S, Country, Variable, AGR:SUM)) + +# Large +microbenchmark(dplyr = select(data, Country, Variable, AGR:SUM), + collapse = fselect(data, Country, Variable, AGR:SUM)) + +## Subsetting columns +# Small +microbenchmark(dplyr = filter(GGDC10S, Variable == "VA"), + collapse = fsubset(GGDC10S, Variable == "VA")) + +# Large +microbenchmark(dplyr = filter(data, Variable == "VA"), + collapse = fsubset(data, Variable == "VA")) + +## Ordering rows +# Small +microbenchmark(dplyr = arrange(GGDC10S, desc(Country), Variable, Year), + collapse = roworder(GGDC10S, -Country, Variable, Year)) + +# Large +microbenchmark(dplyr = arrange(data, desc(Country), Variable, Year), + collapse = roworder(data, -Country, Variable, Year), times = 2) + + +## Grouping +# Small +microbenchmark(dplyr = group_by(GGDC10S, Country, Variable), + collapse = fgroup_by(GGDC10S, Country, Variable)) + +# Large +microbenchmark(dplyr = group_by(data, Country, Variable), + collapse = fgroup_by(data, Country, Variable), times = 10) + +## Computing a new column +# Small +microbenchmark(dplyr = mutate(GGDC10S, NEW = AGR+1), + collapse = ftransform(GGDC10S, NEW = AGR+1)) + +# Large +microbenchmark(dplyr = mutate(data, NEW = AGR+1), + collapse = ftransform(data, NEW = AGR+1)) + +## All combined with pipes +# Small +microbenchmark(dplyr = filter(GGDC10S, Variable == "VA") %>% + select(Country, Year, AGR:SUM) %>% + arrange(desc(Country), Year) %>% + mutate(NEW = AGR+1) %>% + group_by(Country), + collapse = fsubset(GGDC10S, Variable == "VA", Country, Year, AGR:SUM) %>% + roworder(-Country, Year) %>% + ftransform(NEW = AGR+1) %>% + fgroup_by(Country)) + +# Large +microbenchmark(dplyr = filter(data, Variable == "VA") %>% + select(Country, Year, AGR:SUM) %>% + arrange(desc(Country), Year) %>% + mutate(NEW = AGR+1) %>% + group_by(Country), + collapse = fsubset(data, Variable == "VA", Country, Year, AGR:SUM) %>% + roworder(-Country, Year) %>% + ftransform(NEW = AGR+1) %>% + fgroup_by(Country), times = 10) + +gc() +``` + + +### 3.1 Aggregation + +```{r, eval=RUNBENCH, warning=FALSE, message=FALSE} +## Grouping the data +cgGGDC10S <- fgroup_by(GGDC10S, Variable, Country) %>% fselect(-Region, -Regioncode) +gGGDC10S <- group_by(GGDC10S, Variable, Country) %>% fselect(-Region, -Regioncode) +cgdata <- fgroup_by(data, Variable, Country) %>% fselect(-Region, -Regioncode) +gdata <- group_by(data, Variable, Country) %>% fselect(-Region, -Regioncode) +rm(data, GGDC10S) +gc() + +## Conversion of Grouping object: This time would be required extra in all hybrid calls +## i.e. when calling collapse functions on data grouped with dplyr::group_by +# Small +microbenchmark(GRP(gGGDC10S)) + +# Large +microbenchmark(GRP(gdata)) + + +## Sum +# Small +microbenchmark(dplyr = summarise_all(gGGDC10S, sum, na.rm = TRUE), + collapse = fsum(cgGGDC10S)) + +# Large +microbenchmark(dplyr = summarise_all(gdata, sum, na.rm = TRUE), + collapse = fsum(cgdata), times = 10) + +## Mean +# Small +microbenchmark(dplyr = summarise_all(gGGDC10S, mean.default, na.rm = TRUE), + collapse = fmean(cgGGDC10S)) + +# Large +microbenchmark(dplyr = summarise_all(gdata, mean.default, na.rm = TRUE), + collapse = fmean(cgdata), times = 10) + +## Median +# Small +microbenchmark(dplyr = summarise_all(gGGDC10S, median, na.rm = TRUE), + collapse = fmedian(cgGGDC10S)) + +# Large +microbenchmark(dplyr = summarise_all(gdata, median, na.rm = TRUE), + collapse = fmedian(cgdata), times = 2) + +## Standard Deviation +# Small +microbenchmark(dplyr = summarise_all(gGGDC10S, sd, na.rm = TRUE), + collapse = fsd(cgGGDC10S)) + +# Large +microbenchmark(dplyr = summarise_all(gdata, sd, na.rm = TRUE), + collapse = fsd(cgdata), times = 2) + +## Maximum +# Small +microbenchmark(dplyr = summarise_all(gGGDC10S, max, na.rm = TRUE), + collapse = fmax(cgGGDC10S)) + +# Large +microbenchmark(dplyr = summarise_all(gdata, max, na.rm = TRUE), + collapse = fmax(cgdata), times = 10) + +## First Value +# Small +microbenchmark(dplyr = summarise_all(gGGDC10S, first), + collapse = ffirst(cgGGDC10S, na.rm = FALSE)) + +# Large +microbenchmark(dplyr = summarise_all(gdata, first), + collapse = ffirst(cgdata, na.rm = FALSE), times = 10) + +## Number of Distinct Values +# Small +microbenchmark(dplyr = summarise_all(gGGDC10S, n_distinct, na.rm = TRUE), + collapse = fndistinct(cgGGDC10S)) + +# Large +microbenchmark(dplyr = summarise_all(gdata, n_distinct, na.rm = TRUE), + collapse = fndistinct(cgdata), times = 5) + +gc() +``` + + + + + + + + + + + + +Below are some additional benchmarks for weighted aggregations and aggregations using the statistical mode, which cannot easily or efficiently be performed with *dplyr*. + +```{r, eval=RUNBENCH, warning=FALSE, message=FALSE} +## Weighted Mean +# Small +microbenchmark(fmean(cgGGDC10S, SUM)) + +# Large +microbenchmark(fmean(cgdata, SUM), times = 10) + +## Weighted Standard-Deviation +# Small +microbenchmark(fsd(cgGGDC10S, SUM)) + +# Large +microbenchmark(fsd(cgdata, SUM), times = 10) + +## Statistical Mode +# Small +microbenchmark(fmode(cgGGDC10S)) + +# Large +microbenchmark(fmode(cgdata), times = 10) + +## Weighted Statistical Mode +# Small +microbenchmark(fmode(cgGGDC10S, SUM)) + +# Large +microbenchmark(fmode(cgdata, SUM), times = 10) + +gc() +``` + +### 3.2 Transformation + +```{r, eval=RUNBENCH, warning=FALSE, message=FALSE} + +## Replacing with group sum +# Small +microbenchmark(dplyr = mutate_all(gGGDC10S, sum, na.rm = TRUE), + collapse = fsum(cgGGDC10S, TRA = "replace_fill")) + +# Large +microbenchmark(dplyr = mutate_all(gdata, sum, na.rm = TRUE), + collapse = fsum(cgdata, TRA = "replace_fill"), times = 10) + +## Dividing by group sum +# Small +microbenchmark(dplyr = mutate_all(gGGDC10S, function(x) x/sum(x, na.rm = TRUE)), + collapse = fsum(cgGGDC10S, TRA = "/")) + +# Large +microbenchmark(dplyr = mutate_all(gdata, function(x) x/sum(x, na.rm = TRUE)), + collapse = fsum(cgdata, TRA = "/"), times = 10) + +## Centering +# Small +microbenchmark(dplyr = mutate_all(gGGDC10S, function(x) x-mean.default(x, na.rm = TRUE)), + collapse = fwithin(cgGGDC10S)) + +# Large +microbenchmark(dplyr = mutate_all(gdata, function(x) x-mean.default(x, na.rm = TRUE)), + collapse = fwithin(cgdata), times = 10) + +## Centering and Scaling (Standardizing) +# Small +microbenchmark(dplyr = mutate_all(gGGDC10S, function(x) (x-mean.default(x, na.rm = TRUE))/sd(x, na.rm = TRUE)), + collapse = fscale(cgGGDC10S)) + +# Large +microbenchmark(dplyr = mutate_all(gdata, function(x) (x-mean.default(x, na.rm = TRUE))/sd(x, na.rm = TRUE)), + collapse = fscale(cgdata), times = 2) + +## Lag +# Small +microbenchmark(dplyr_unordered = mutate(gGGDC10S, across(everything(), dplyr::lag)), + collapse_unordered = flag(cgGGDC10S), + dplyr_ordered = mutate(gGGDC10S, across(everything(), \(x) dplyr::lag(x, order_by = Year))), + collapse_ordered = flag(cgGGDC10S, t = Year)) + +# Large +microbenchmark(dplyr_unordered = mutate(gdata, across(everything(), dplyr::lag)), + collapse_unordered = flag(cgdata), + dplyr_ordered = mutate(gdata, across(everything(), \(x) dplyr::lag(x, order_by = Year))), + collapse_ordered = flag(cgdata, t = Year), times = 2) + +## First-Difference (unordered) +# Small +microbenchmark(dplyr_unordered = mutate_all(gGGDC10S, function(x) x - dplyr::lag(x)), + collapse_unordered = fdiff(cgGGDC10S)) + +# Large +microbenchmark(dplyr_unordered = mutate_all(gdata, function(x) x - dplyr::lag(x)), + collapse_unordered = fdiff(cgdata), times = 2) + +gc() +``` + +Below again some benchmarks for transformations not easily of efficiently performed with *dplyr*, such as centering on the overall mean, mean-preserving scaling, weighted scaling and centering, sequences of lags / leads, (iterated) panel-differences and growth rates. + +```{r, eval=RUNBENCH, warning=FALSE, message=FALSE} +# Centering on overall mean +microbenchmark(fwithin(cgdata, mean = "overall.mean"), times = 10) + +# Weighted Centering +microbenchmark(fwithin(cgdata, SUM), times = 10) +microbenchmark(fwithin(cgdata, SUM, mean = "overall.mean"), times = 10) + +# Weighted Scaling and Standardizing +microbenchmark(fsd(cgdata, SUM, TRA = "/"), times = 10) +microbenchmark(fscale(cgdata, SUM), times = 10) + +# Sequence of lags and leads +microbenchmark(flag(cgdata, -1:1), times = 10) + +# Iterated difference +microbenchmark(fdiff(cgdata, 1, 2), times = 10) + +# Growth Rate +microbenchmark(fgrowth(cgdata,1), times = 10) +``` + + + +```{r, echo=FALSE} +options(oldopts) +``` + + +## References + +Timmer, M. P., de Vries, G. J., & de Vries, K. (2015). "Patterns of Structural Change in Developing Countries." . In J. Weiss, & M. Tribe (Eds.), *Routledge Handbook of Industry and Development.* (pp. 65-83). Routledge. + +Cochrane, D. & Orcutt, G. H. (1949). "Application of Least Squares Regression to Relationships Containing Auto-Correlated Error Terms". *Journal of the American Statistical Association.* 44 (245): 32–61. + +Prais, S. J. & Winsten, C. B. (1954). "Trend Estimators and Serial Correlation". *Cowles Commission Discussion Paper No. 383.* Chicago. + diff --git a/vignettes/collapse_and_plm.Rmd b/vignettes/collapse_and_plm.Rmd index ebd8f45c..f18cfcdf 100644 --- a/vignettes/collapse_and_plm.Rmd +++ b/vignettes/collapse_and_plm.Rmd @@ -1,9 +1,9 @@ --- title: "collapse and plm" -subtitle: "Fast Transformation and Exploration of Panel Data" # utilizing *plm* classes" Advanced and fast +subtitle: "Fast Transformation and Exploration of Panel Data" # utilizing *plm* classes" Advanced and fast author: "Sebastian Krantz" date: "2021-06-27" -output: +output: rmarkdown::html_vignette: toc: true @@ -11,11 +11,9 @@ vignette: > %\VignetteIndexEntry{collapse and plm} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} -params: - cache: true --- -```{css, echo=FALSE} + -```{r, echo=FALSE} -NCRAN <- identical(Sys.getenv("NCRAN"), "TRUE") -RUNBENCH <- NCRAN && identical(Sys.getenv("RUNBENCH"), "TRUE") -oldopts <- options(width = 100L) -``` -```{r, echo = FALSE, message = FALSE, warning=FALSE, eval = NCRAN} -library(data.table) # Keep here becasue of not run options on CRAN -library(microbenchmark) -library(plm) -library(collapse) -knitr::opts_chunk$set(error = FALSE, message = FALSE, warning = FALSE, - comment = "#", tidy = FALSE, cache = TRUE, collapse = TRUE, - fig.width = 8, fig.height = 5, - out.width = '100%') -lag <- stats::lag -F <- getNamespace("collapse")$F -set.seed(101) -``` -This vignette focuses on the integration of *collapse* and the popular *plm* ('Linear Models for Panel Data') package by Yves Croissant, Giovanni Millo and Kevin Tappe. It will demonstrate the utility of the *pseries* and *pdata.frame* classes introduced in *plm* together with the corresponding methods for fast *collapse* functions (implemented in C or C++), to extend and facilitate extremely fast computations on panel-vectors and panel data frames (20-100 times faster than native *plm*). The *collapse* package should enable R programmers to - with very little effort - write high-performance code in the domain of panel data exploration and panel data econometrics. +This vignette focuses on the integration of *collapse* and the popular *plm* ('Linear Models for Panel Data') package by Yves Croissant, Giovanni Millo and Kevin Tappe. It will demonstrate the utility of the *pseries* and *pdata.frame* classes introduced in *plm* together with the corresponding methods for fast *collapse* functions (implemented in C or C++), to extend and facilitate extremely fast computations on panel-vectors and panel data frames (20-100 times faster than native *plm*). The *collapse* package should enable R programmers to - with very little effort - write high-performance code in the domain of panel data exploration and panel data econometrics. *** **Notes:** -- To learn more about *collapse*, see the 'Introduction to *collapse*' vignette or the built-in structured documentation available under `help("collapse-documentation")` after installing the package. In addition `help("collapse-package")` provides a compact set of examples for quick-start. +- To learn more about *collapse*, see the 'Introduction to *collapse*' vignette or the built-in structured documentation available under `help("collapse-documentation")` after installing the package. In addition `help("collapse-package")` provides a compact set of examples for quick-start. - Documentation and vignettes can also be viewed [online](). *** -The vignette is structured as follows: +The vignette is structured as follows: -* **Part 1** introduces *collapse*'s fast functions and associated *transformation operators* to compute various transformations on panel data, and delivers some benchmarks. +* **Part 1** introduces *collapse*'s fast functions and associated *transformation operators* to compute various transformations on panel data, and delivers some benchmarks. -* **Part 2** uses these functions to explore panel data a bit and introduce additional functions for summary statistics, panel-autocorrelations and testing fixed effects. +* **Part 2** uses these functions to explore panel data a bit and introduce additional functions for summary statistics, panel-autocorrelations and testing fixed effects. -* **Part 3** finally provides an example programming application by coding a slightly extended and very efficient Hausman and Taylor (1981) estimator. +* **Part 3** finally provides an example programming application by coding a slightly extended and very efficient Hausman and Taylor (1981) estimator. For this vignette we will use a dataset (`wlddev`) supplied with *collapse* containing a panel of 5 key development indicators taken from the World Bank Development Indicators Database: -```{r, eval = NCRAN} + +```r library(collapse) head(wlddev) +# country iso3c date year decade region income OECD PCGDP LIFEEX GINI ODA +# 1 Afghanistan AFG 1961-01-01 1960 1960 South Asia Low income FALSE NA 32.446 NA 116769997 +# 2 Afghanistan AFG 1962-01-01 1961 1960 South Asia Low income FALSE NA 32.962 NA 232080002 +# 3 Afghanistan AFG 1963-01-01 1962 1960 South Asia Low income FALSE NA 33.471 NA 112839996 +# 4 Afghanistan AFG 1964-01-01 1963 1960 South Asia Low income FALSE NA 33.971 NA 237720001 +# 5 Afghanistan AFG 1965-01-01 1964 1960 South Asia Low income FALSE NA 34.463 NA 295920013 +# 6 Afghanistan AFG 1966-01-01 1965 1960 South Asia Low income FALSE NA 34.948 NA 341839996 +# POP +# 1 8996973 +# 2 9169410 +# 3 9351441 +# 4 9543205 +# 5 9744781 +# 6 9956320 fnobs(wlddev) # This column-wise counts the number of observations +# country iso3c date year decade region income OECD PCGDP LIFEEX GINI ODA +# 13176 13176 13176 13176 13176 13176 13176 13176 9470 11670 1744 8608 +# POP +# 12919 fndistinct(wlddev) # This counts the number of distinct values +# country iso3c date year decade region income OECD PCGDP LIFEEX GINI ODA +# 216 216 61 61 7 7 4 2 9470 10548 368 7832 +# POP +# 12877 ``` ## Part 1: Fast Transformation of Panel Data -First let us convert this data to a *plm* panel data.frame (class *pdata.frame*): +First let us convert this data to a *plm* panel data.frame (class *pdata.frame*): -```{r, eval = NCRAN} + +```r library(plm) # This creates a panel data frame pwlddev <- pdata.frame(wlddev, index = c("iso3c", "year")) str(pwlddev, give.attr = FALSE) +# Classes 'pdata.frame' and 'data.frame': 13176 obs. of 13 variables: +# $ country: 'pseries' Named chr "Aruba" "Aruba" "Aruba" "Aruba" ... +# $ iso3c : Factor w/ 216 levels "ABW","AFG","AGO",..: 1 1 1 1 1 1 1 1 1 1 ... +# $ date : pseries, format: "1961-01-01" "1962-01-01" "1963-01-01" ... +# $ year : Factor w/ 61 levels "1960","1961",..: 1 2 3 4 5 6 7 8 9 10 ... +# $ decade : 'pseries' Named int 1960 1960 1960 1960 1960 1960 1960 1960 1960 1960 ... +# $ region : Factor w/ 7 levels "East Asia & Pacific",..: 3 3 3 3 3 3 3 3 3 3 ... +# $ income : Factor w/ 4 levels "High income",..: 1 1 1 1 1 1 1 1 1 1 ... +# $ OECD : 'pseries' Named logi FALSE FALSE FALSE FALSE FALSE FALSE ... +# $ PCGDP : 'pseries' Named num NA NA NA NA NA NA NA NA NA NA ... +# $ LIFEEX : 'pseries' Named num 65.7 66.1 66.4 66.8 67.1 ... +# $ GINI : 'pseries' Named num NA NA NA NA NA NA NA NA NA NA ... +# $ ODA : 'pseries' Named num NA NA NA NA NA NA NA NA NA NA ... +# $ POP : 'pseries' Named num 54211 55438 56225 56695 57032 ... # A pdata.frame has an index attribute attached [retrieved using index(pwlddev) or attr(pwlddev, "index")] str(index(pwlddev)) +# Classes 'pindex' and 'data.frame': 13176 obs. of 2 variables: +# $ iso3c: Factor w/ 216 levels "ABW","AFG","AGO",..: 1 1 1 1 1 1 1 1 1 1 ... +# $ year : Factor w/ 61 levels "1960","1961",..: 1 2 3 4 5 6 7 8 9 10 ... # This shows the individual and time dimensions pdim(pwlddev) - +# Balanced Panel: n = 216, T = 61, N = 13176 ``` A `plm::pdata.frame` is a data.frame with panel identifiers attached as a list of factors in an *index* attribute (non-factor index variables are converted to factor). Each column in that data.frame is a Panel Series (`plm::pseries`), which also has the panel identifiers attached: -```{r, eval = NCRAN} + +```r # Panel Series of GDP per Capita and Life-Expectancy at Birth PCGDP <- pwlddev$PCGDP LIFEEX <- pwlddev$LIFEEX str(LIFEEX) +# 'pseries' Named num [1:13176] 65.7 66.1 66.4 66.8 67.1 ... +# - attr(*, "names")= chr [1:13176] "ABW-1960" "ABW-1961" "ABW-1962" "ABW-1963" ... +# - attr(*, "index")=Classes 'pindex' and 'data.frame': 13176 obs. of 2 variables: +# ..$ iso3c: Factor w/ 216 levels "ABW","AFG","AGO",..: 1 1 1 1 1 1 1 1 1 1 ... +# ..$ year : Factor w/ 61 levels "1960","1961",..: 1 2 3 4 5 6 7 8 9 10 ... ``` -Now that we have explored the basic data structures provided in the *plm* package, let's compute some transformations on them: +Now that we have explored the basic data structures provided in the *plm* package, let's compute some transformations on them: ### 1.1 Between and Within Transformations -The functions `fbetween` and `fbetween` can be used to compute efficient between and within transformations on panel vectors and panel data.frames: +The functions `fbetween` and `fbetween` can be used to compute efficient between and within transformations on panel vectors and panel data.frames: -```{r, eval = NCRAN} + +```r # Between-Transformations head(fbetween(LIFEEX)) # Between individual (default) +# ABW-1960 ABW-1961 ABW-1962 ABW-1963 ABW-1964 ABW-1965 +# 72.40653 72.40653 72.40653 72.40653 72.40653 72.40653 head(fbetween(LIFEEX, effect = "year")) # Between time +# ABW-1960 ABW-1961 ABW-1962 ABW-1963 ABW-1964 ABW-1965 +# 53.91206 54.47441 54.85718 55.20272 55.66802 56.12963 # Within-Transformations head(fwithin(LIFEEX)) # Within individuals (default) +# ABW-1960 ABW-1961 ABW-1962 ABW-1963 ABW-1964 ABW-1965 +# -6.744533 -6.332533 -5.962533 -5.619533 -5.293533 -4.971533 head(fwithin(LIFEEX, effect = "year")) # Within time +# ABW-1960 ABW-1961 ABW-1962 ABW-1963 ABW-1964 ABW-1965 +# 11.74994 11.59959 11.58682 11.58428 11.44498 11.30537 ``` by default `na.rm = TRUE` thus both functions skip (preserve) missing values in the data (which is the default for all *collapse* functions). For `fbetween` the output behavior can be altered with the option `fill`: Setting `fill = TRUE` will compute the group-means on the complete cases in each group (as long as `na.rm = TRUE`), but replace all values in each group with the group mean (hence overwriting or 'filling up' missing values): -```{r, eval = NCRAN} + +```r # This preserves missing values in the output -head(fbetween(PCGDP), 30) +head(fbetween(PCGDP), 30) +# ABW-1960 ABW-1961 ABW-1962 ABW-1963 ABW-1964 ABW-1965 ABW-1966 ABW-1967 ABW-1968 ABW-1969 ABW-1970 +# NA NA NA NA NA NA NA NA NA NA NA +# ABW-1971 ABW-1972 ABW-1973 ABW-1974 ABW-1975 ABW-1976 ABW-1977 ABW-1978 ABW-1979 ABW-1980 ABW-1981 +# NA NA NA NA NA NA NA NA NA NA NA +# ABW-1982 ABW-1983 ABW-1984 ABW-1985 ABW-1986 ABW-1987 ABW-1988 ABW-1989 +# NA NA NA NA 25413.84 25413.84 25413.84 25413.84 # This replaces all individuals with the group mean -head(fbetween(PCGDP, fill = TRUE), 30) +head(fbetween(PCGDP, fill = TRUE), 30) +# ABW-1960 ABW-1961 ABW-1962 ABW-1963 ABW-1964 ABW-1965 ABW-1966 ABW-1967 ABW-1968 ABW-1969 ABW-1970 +# 25413.84 25413.84 25413.84 25413.84 25413.84 25413.84 25413.84 25413.84 25413.84 25413.84 25413.84 +# ABW-1971 ABW-1972 ABW-1973 ABW-1974 ABW-1975 ABW-1976 ABW-1977 ABW-1978 ABW-1979 ABW-1980 ABW-1981 +# 25413.84 25413.84 25413.84 25413.84 25413.84 25413.84 25413.84 25413.84 25413.84 25413.84 25413.84 +# ABW-1982 ABW-1983 ABW-1984 ABW-1985 ABW-1986 ABW-1987 ABW-1988 ABW-1989 +# 25413.84 25413.84 25413.84 25413.84 25413.84 25413.84 25413.84 25413.84 ``` In `fwithin` the `mean` argument allows to set an arbitrary data mean (different from 0) after the data is centered. In grouped centering task, as sensible choice for such an added mean would be the overall mean of the data series, enabled by the option `mean = "overall.mean"`. This will add the overall mean of the series back to the data after subtracting out group means, and thus preserve the level of the data (and will only change the intercept when employed in a regression): -```{r, eval = NCRAN} + +```r # This performed standard grouped centering -head(fwithin(LIFEEX)) +head(fwithin(LIFEEX)) +# ABW-1960 ABW-1961 ABW-1962 ABW-1963 ABW-1964 ABW-1965 +# -6.744533 -6.332533 -5.962533 -5.619533 -5.293533 -4.971533 # This adds the overall average Life-Expectancy (across countries) to the country-demeaned series -head(fwithin(LIFEEX, mean = "overall.mean")) +head(fwithin(LIFEEX, mean = "overall.mean")) +# ABW-1960 ABW-1961 ABW-1962 ABW-1963 ABW-1964 ABW-1965 +# 57.55177 57.96377 58.33377 58.67677 59.00277 59.32477 ``` `fbetween` and `fwithin` can also be applied to *pdata.frame*'s where they will perform these computations variable by variable: -```{r, eval = NCRAN} + +```r head(fbetween(num_vars(pwlddev)), 3) +# decade PCGDP LIFEEX GINI ODA POP +# ABW-1960 1985.574 NA 72.40653 NA NA 76268.63 +# ABW-1961 1985.574 NA 72.40653 NA NA 76268.63 +# ABW-1962 1985.574 NA 72.40653 NA NA 76268.63 head(fbetween(num_vars(pwlddev), fill = TRUE), 3) +# decade PCGDP LIFEEX GINI ODA POP +# ABW-1960 1985.574 25413.84 72.40653 NA 33245000 76268.63 +# ABW-1961 1985.574 25413.84 72.40653 NA 33245000 76268.63 +# ABW-1962 1985.574 25413.84 72.40653 NA 33245000 76268.63 head(fwithin(num_vars(pwlddev)), 3) +# decade PCGDP LIFEEX GINI ODA POP +# ABW-1960 -25.57377 NA -6.744533 NA NA -22057.63 +# ABW-1961 -25.57377 NA -6.332533 NA NA -20830.63 +# ABW-1962 -25.57377 NA -5.962533 NA NA -20043.63 head(fwithin(num_vars(pwlddev), mean = "overall.mean"), 3) +# decade PCGDP LIFEEX GINI ODA POP +# ABW-1960 1960 NA 57.55177 NA NA 24223914 +# ABW-1961 1960 NA 57.96377 NA NA 24225141 +# ABW-1962 1960 NA 58.33377 NA NA 24225928 ``` Now next to `fbetween` and `fwithin` there also exist short versions `B` and `W`, which are referred to as *transformation operators*. These are essentially wrappers around `fbetween` and `fwithin` and provide the same functionality, but are more parsimonious to employ in regression formulas and also offer additional features when applied to panel data.frames. For panel series, `B` and `W` are exact analogues to `fbetween` and `fwithin`, just under a shorter name: -```{r, eval = NCRAN} + +```r identical(fbetween(PCGDP), B(PCGDP)) +# [1] TRUE identical(fbetween(PCGDP, fill = TRUE), B(PCGDP, fill = TRUE)) +# [1] TRUE identical(fwithin(PCGDP), W(PCGDP)) +# [1] TRUE identical(fwithin(PCGDP, mean = "overall.mean"), W(PCGDP, mean = "overall.mean")) +# [1] TRUE ``` When applied to panel data.frames, `B` and `W` offer some additional utility by (a) allowing you to select columns to transform using the `cols` argument (default is `cols = is.numeric`, so by default all numeric columns will be selected for transformation), (b) allowing you to add a prefix to the transformed columns with the `stub` argument (default is `stub = "B."` for `B` and `stub = "W."` for `W`) and (c) preserving the panel-id's with the `keep.ids` argument (default `keep.ids = TRUE`): -```{r, eval = NCRAN} + +```r head(B(pwlddev), 3) +# iso3c year B.decade B.PCGDP B.LIFEEX B.GINI B.ODA B.POP +# ABW-1960 ABW 1960 1985.574 NA 72.40653 NA NA 76268.63 +# ABW-1961 ABW 1961 1985.574 NA 72.40653 NA NA 76268.63 +# ABW-1962 ABW 1962 1985.574 NA 72.40653 NA NA 76268.63 head(W(pwlddev, cols = 9:12), 3) # Here using the cols argument +# iso3c year W.PCGDP W.LIFEEX W.GINI W.ODA +# ABW-1960 ABW 1960 NA -6.744533 NA NA +# ABW-1961 ABW 1961 NA -6.332533 NA NA +# ABW-1962 ABW 1962 NA -5.962533 NA NA ``` `fbetween` / `B` and `fwithin` / `W` also support weighted computations. This of course applies more to panel-survey settings, but for the sake of illustration suppose we wanted to weight our between and within transformations by the population of these countries: -```{r, eval = NCRAN} + +```r # This replaces values by the POP-weighted group mean and also preserves the weight variable (POP, argument keep.w = TRUE) head(B(pwlddev, w = ~ POP), 3) +# iso3c year POP B.decade B.PCGDP B.LIFEEX B.GINI B.ODA +# ABW-1960 ABW 1960 54211 1988.976 NA 72.96257 NA NA +# ABW-1961 ABW 1961 55438 1988.976 NA 72.96257 NA NA +# ABW-1962 ABW 1962 56225 1988.976 NA 72.96257 NA NA # This centers values on the POP-weighted group mean head(W(pwlddev, w = ~ POP, cols = c("PCGDP","LIFEEX","GINI")), 3) +# iso3c year POP W.PCGDP W.LIFEEX W.GINI +# ABW-1960 ABW 1960 54211 NA -7.300566 NA +# ABW-1961 ABW 1961 55438 NA -6.888566 NA +# ABW-1962 ABW 1962 56225 NA -6.518566 NA # This centers values on the POP-weighted group mean and also adds the overall POP-weighted mean of the data head(W(pwlddev, w = ~ POP, cols = c("PCGDP","LIFEEX","GINI"), mean = "overall.mean"), 3) +# iso3c year POP W.PCGDP W.LIFEEX W.GINI +# ABW-1960 ABW 1960 54211 NA 58.58012 NA +# ABW-1961 ABW 1961 55438 NA 58.99212 NA +# ABW-1962 ABW 1962 56225 NA 59.36212 NA ``` As shown above, with `B` and `W` the weight column can also be passed as a formula or character string, whereas `fbetween` and `fwithin` require the all inputs to be passed directly in terms of data (i.e. `fbetween(get_vars(pwlddev, 9:11), w = pwlddev$POP)`), and the weight vector or id columns are never preserved in the output. Therefore in most applications `B` and `W` are probably more convenient for quick use, whereas `fbetween` and `fwithin` are the preferred programmers choice, also because they have a little less R-overhead which makes them a tiny bit faster. @@ -205,54 +303,112 @@ As shown above, with `B` and `W` the weight column can also be passed as a formu Analogous to `fbetween` / `B` and `fwithin` / `W`, *collapse* provides a duo of functions and operators `fhdbetween` / `HDB` and `fhdwithin` / `HDW` to efficiently average and center data on multiple groups. The credit herefore goes to Laurent Berge, the author of the *fixest* package who wrote an efficient C-implementation of the alternating-projections algorithm to perform this task. `fhdbetween` / `HDB` and `fhdwithin` / `HDW` enrich this implementation (available in the function `fixest::demean`) by providing more options regarding missing values, and also allowing continuous covariates and (full) interactions to be projected out alongside factors. The methods for *pseries* and *pdata.frame*'s are however rather simple, as they simply simultaneously center panel-vectors on various panel-identifiers in the index (which can be more than 2, the default is to center on all identifiers): -```{r, eval = NCRAN} -# This simultaneously averages Life-Expectancy across countries and years + +```r +# This simultaneously averages Life-Expectancy across countries and years head(HDB(LIFEEX)) # (same as running a regression on country and year dummies and taking the fitted values) +# ABW-1960 ABW-1961 ABW-1962 ABW-1963 ABW-1964 ABW-1965 +# 62.36179 62.85981 63.24258 63.65245 64.11774 64.52503 -# This simultaneously centers Life-Expectenacy on countries and years +# This simultaneously centers Life-Expectenacy on countries and years head(HDW(LIFEEX)) # (same as running a regression on country and year dummies and taking the residuals) +# ABW-1960 ABW-1961 ABW-1962 ABW-1963 ABW-1964 ABW-1965 +# 3.300210 3.214193 3.201424 3.134554 2.995255 2.909975 ``` The architecture of `fhdbetween` / `HDB` and `fhdwithin` / `HDW` differs a bit from `fbetween` / `B` and `fwithin` / `W`. This is essentially a consequence of the underlying C++-implementation (accessed through `fixest::demean`), which was not built to accommodate missing values. `fhdbetween` / `HDB` and `fhdwithin` / `HDW` therefore both have an argument `fill = TRUE` (the default), which stipulates that missing values in the data are preserved in the output. The *collapse* default `na.rm = TRUE` again ensures that only complete cases are used for the computation: -```{r, eval = NCRAN} + +```r # Missing values are preserved in the output when fill = TRUE (the default) -head(HDB(PCGDP), 30) +head(HDB(PCGDP), 30) +# ABW-1960 ABW-1961 ABW-1962 ABW-1963 ABW-1964 ABW-1965 ABW-1966 ABW-1967 ABW-1968 ABW-1969 ABW-1970 +# NA NA NA NA NA NA NA NA NA NA NA +# ABW-1971 ABW-1972 ABW-1973 ABW-1974 ABW-1975 ABW-1976 ABW-1977 ABW-1978 ABW-1979 ABW-1980 ABW-1981 +# NA NA NA NA NA NA NA NA NA NA NA +# ABW-1982 ABW-1983 ABW-1984 ABW-1985 ABW-1986 ABW-1987 ABW-1988 ABW-1989 +# NA NA NA NA 21833.32 22132.25 22479.20 22772.31 # When fill = FALSE, only the complete cases are returned nofill <- HDB(PCGDP, fill = FALSE) head(nofill, 30) - -# This results in a shorter panel-vector -length(nofill) +# ABW-1986 ABW-1987 ABW-1988 ABW-1989 ABW-1990 ABW-1991 ABW-1992 ABW-1993 ABW-1994 ABW-1995 ABW-1996 +# 21833.32 22132.25 22479.20 22772.31 23064.29 23060.00 23089.75 23115.36 23343.25 23595.16 23823.11 +# ABW-1997 ABW-1998 ABW-1999 ABW-2000 ABW-2001 ABW-2002 ABW-2003 ABW-2004 ABW-2005 ABW-2006 ABW-2007 +# 24149.44 24424.69 24727.46 25205.98 25399.16 25603.11 25851.29 26349.64 26665.54 27224.58 27772.82 +# ABW-2008 ABW-2009 ABW-2010 ABW-2011 ABW-2012 ABW-2013 ABW-2014 ABW-2015 +# 27769.52 27002.95 27218.84 27424.18 27471.49 27660.92 27889.34 28107.78 + +# This results in a shorter panel-vector +length(nofill) +# [1] 9470 length(PCGDP) +# [1] 13176 # The cases that were missing and removed from the output are available as an attribute head(attr(nofill, "na.rm"), 30) +# [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 59 60 61 62 ``` In the *pdata.frame* methods there are 3 different choices how to deal with missing values. The default for the *plm* classes in `variable.wise = TRUE`, which will essentially sequentially apply `fhdbetween.pseries` and `fhdwithin.pseries` (with the default `fill = TRUE`) to all columns. This is the same behavior as in `fbetween` / `B` and `fwithin` / `W`, which also consider the column-wise complete obs: -```{r, eval = NCRAN} + +```r # This column-wise centers the data on countries and years tail(HDW(pwlddev), 10) +# HDW.decade HDW.PCGDP HDW.LIFEEX HDW.GINI HDW.ODA HDW.POP +# ZWE-2011 0 -4632.971 -8.080748 -3.663217 118306300 -4547122 +# ZWE-2012 0 -4523.505 -6.271385 NA 385526419 -4749368 +# ZWE-2013 0 -4710.576 -4.753056 NA 149910333 -4903132 +# ZWE-2014 0 -4931.693 -3.568136 NA 93295114 -5059317 +# ZWE-2015 0 -5148.895 -2.685053 NA 150833589 -5224484 +# ZWE-2016 0 -5433.809 -2.203219 NA -27844184 -5404667 +# ZWE-2017 0 -5645.022 -1.920365 -1.964138 10266318 -5591762 +# ZWE-2018 0 -5938.794 -1.759333 NA 59646823 -5774326 +# ZWE-2019 0 -5710.646 -1.669415 5.627356 223473855 -5946725 +# ZWE-2020 0 NA NA NA NA NA ``` If `variable.wise = FALSE`, `fhdbetween` / `HDB` and `fhdwithin` / `HDW` will only consider the complete cases in the dataset, but still return a dataset of the same dimensions (as long as `fill = TRUE`), resulting in some rows all-missing: -```{r, eval = NCRAN} + +```r # This centers the complete cases of the data data on countries and years and keeps missing cases tail(HDW(pwlddev, variable.wise = FALSE), 10) +# HDW.decade HDW.PCGDP HDW.LIFEEX HDW.GINI HDW.ODA HDW.POP +# ZWE-2011 0 517.6924 -4.379840 -3.839653 -176176494 -3042247 +# ZWE-2012 NA NA NA NA NA NA +# ZWE-2013 NA NA NA NA NA NA +# ZWE-2014 NA NA NA NA NA NA +# ZWE-2015 NA NA NA NA NA NA +# ZWE-2016 NA NA NA NA NA NA +# ZWE-2017 0 -128.5240 1.971143 -1.314869 -67497466 1936716 +# ZWE-2018 NA NA NA NA NA NA +# ZWE-2019 0 -389.1684 2.408697 5.154522 243673961 1105530 +# ZWE-2020 NA NA NA NA NA NA ``` Finally, if also `fill = FALSE`, the behavior is the same as in the *pseries* method: Missing cases are removed from the data: -```{r, eval = NCRAN} + +```r # This centers the complete cases of the data data on countries and years, and removes missing cases res <- HDW(pwlddev, fill = FALSE) tail(res, 10) +# HDW.decade HDW.PCGDP HDW.LIFEEX HDW.GINI HDW.ODA HDW.POP +# ZMB-1996 0 534.39373 -3.6445256 -4.744748 -174237036 4911230.7 +# ZMB-1998 0 201.58094 -4.1708951 -5.085621 -492258601 644947.7 +# ZMB-2002 0 250.78234 -2.9085522 -10.912265 81848768 -1027712.3 +# ZMB-2004 0 -72.94954 -1.9629513 1.494340 396830282 -3774596.6 +# ZMB-2006 0 -308.55937 -0.4975872 2.407226 485998870 -2255101.6 +# ZMB-2010 0 -428.16949 3.9600416 4.497547 -148714637 -4174306.2 +# ZMB-2015 0 -1106.52213 8.4099983 7.553052 -335529320 -4962997.8 +# ZWE-2011 0 517.69244 -4.3798401 -3.839653 -176176494 -3042246.9 +# ZWE-2017 0 -128.52402 1.9711431 -1.314869 -67497466 1936716.5 +# ZWE-2019 0 -389.16842 2.4086971 5.154522 243673961 1105530.5 tail(attr(res, "na.rm")) +# [1] 13169 13170 13171 13172 13174 13176 ``` @@ -261,65 +417,109 @@ tail(attr(res, "na.rm")) -*Notes: * (1) Because of the different missing case options and associated challenges, panel-identifiers are not preserved in `HDB` and `HDW`. (2) The default `variable.wise = TRUE` and `fill = TRUE` was only set for the *pseries* and *pdata.frame* methods, to harmonize the default implementations with `fbetween` / `B` and `fwithin` / `W` for these classes. In the standard *default*, *matrix* and *data.frame* methods, the defaults are `variable.wise = FALSE` and `fill = FALSE` (i.e. missing cases are removed beforehand), which is generally more efficient. +*Notes: * (1) Because of the different missing case options and associated challenges, panel-identifiers are not preserved in `HDB` and `HDW`. (2) The default `variable.wise = TRUE` and `fill = TRUE` was only set for the *pseries* and *pdata.frame* methods, to harmonize the default implementations with `fbetween` / `B` and `fwithin` / `W` for these classes. In the standard *default*, *matrix* and *data.frame* methods, the defaults are `variable.wise = FALSE` and `fill = FALSE` (i.e. missing cases are removed beforehand), which is generally more efficient. ### 1.3 Scaling and Centering -Next to the above functions for grouped centering and averaging, the function / operator pair `fscale` / `STD` can be used to efficiently standardize (i.e. scale and center) panel data along an arbitrary dimension. The architecture is identical to that of `fwithin` / `W` or `fbetween` / `B`. +Next to the above functions for grouped centering and averaging, the function / operator pair `fscale` / `STD` can be used to efficiently standardize (i.e. scale and center) panel data along an arbitrary dimension. The architecture is identical to that of `fwithin` / `W` or `fbetween` / `B`. -```{r, eval = NCRAN} + +```r # This standardizes GDP per capita in each country STD_PCGDP <- STD(PCGDP) -# Checks: +# Checks: head(fmean(STD_PCGDP, index(STD_PCGDP, 1))) +# ABW AFG AGO ALB AND ARE +# -1.422473e-15 2.528841e-16 -6.189493e-16 -2.275957e-16 -9.281464e-16 -6.661338e-17 head(fsd(STD_PCGDP, index(STD_PCGDP, 1))) +# ABW AFG AGO ALB AND ARE +# 1 1 1 1 1 1 # This standardizes GDP per capita in each year STD_PCGDP_T <- STD(PCGDP, effect = "year") -# Checks: +# Checks: head(fmean(STD_PCGDP_T, index(STD_PCGDP_T, 2))) +# 1960 1961 1962 1963 1964 1965 +# 9.882205e-17 3.496021e-16 1.889741e-17 -2.185013e-16 -1.724389e-16 2.616954e-16 head(fsd(STD_PCGDP_T, index(STD_PCGDP_T, 2))) +# 1960 1961 1962 1963 1964 1965 +# 1 1 1 1 1 1 ``` And similarly for *pdata.frame*'s: -```{r, eval = NCRAN} + +```r head(STD(pwlddev, cols = 9:12)) +# iso3c year STD.PCGDP STD.LIFEEX STD.GINI STD.ODA +# ABW-1960 ABW 1960 NA -2.372636 NA NA +# ABW-1961 ABW 1961 NA -2.227700 NA NA +# ABW-1962 ABW 1962 NA -2.097539 NA NA +# ABW-1963 ABW 1963 NA -1.976876 NA NA +# ABW-1964 ABW 1964 NA -1.862193 NA NA +# ABW-1965 ABW 1965 NA -1.748918 NA NA head(STD(pwlddev, cols = 9:12, effect = "year")) +# iso3c year STD.PCGDP STD.LIFEEX STD.GINI STD.ODA +# ABW-1960 ABW 1960 NA 0.9609854 NA NA +# ABW-1961 ABW 1961 NA 0.9485730 NA NA +# ABW-1962 ABW 1962 NA 0.9585105 NA NA +# ABW-1963 ABW 1963 NA 0.9669638 NA NA +# ABW-1964 ABW 1964 NA 0.9579477 NA NA +# ABW-1965 ABW 1965 NA 0.9556529 NA NA ``` More customized scaling can be done with the help of the `mean` and `sd` arguments to `fscale` / `STD`. By default `mean = 0` and `sd = 1`, but these could be assigned any numeric values: -```{r, eval = NCRAN} + +```r # This will scale the data such that mean mean within each country is 5 and the standard deviation is 3 qsu(fscale(pwlddev$PCGDP, mean = 5, sd = 3)) +# N/T Mean SD Min Max +# Overall 9466 5 2.968 -6.1908 16.257 +# Between 202 5 0 5 5 +# Within 46.8614 5 2.968 -6.1908 16.257 ``` -Even further customization (i.e. setting means and standard deviations for each group and / or each column) can of course be achieved by calling `collapse::TRA` on the result of `fscale` to sweep out an appropriate set of means and standard deviations. +Even further customization (i.e. setting means and standard deviations for each group and / or each column) can of course be achieved by calling `collapse::TRA` on the result of `fscale` to sweep out an appropriate set of means and standard deviations. Scaling without centering can be done with the option `mean = FALSE`. This will also preserve the mean of the data overall and within each group: -```{r, eval = NCRAN} + +```r # Scaling without centering: Mean preserving with fscale / STD qsu(fscale(pwlddev$PCGDP, mean = FALSE, sd = 3)) +# N/T Mean SD Min Max +# Overall 9466 12031.4627 17803.3537 247.7598 131349.27 +# Between 202 12169.2793 18055.6626 253.1886 131342.669 +# Within 46.8614 12031.4627 2.968 12020.2718 12042.7196 # Scaling without centering can also be done using fsd, but this does not preserve the mean qsu(fsd(pwlddev$PCGDP, index(pwlddev, 1), TRA = "/")) - +# N/T Mean SD Min Max +# Overall 9466 4.247 3.192 0.0579 26.647 +# Between 202 4.6036 3.5846 0.8207 24.8111 +# Within 46.8614 4.247 0.9893 0.5167 7.9993 ``` Finally a special kind of data harmonization in the first two moments can be done by setting `mean = "overall.mean"` and `sd = "within.sd"` in a grouped scaling task. This will harmonize the data across groups such that the mean of each group is equal to the overall data mean and the standard deviation equal to the within standard deviation (= the standard deviation calculated on the group-centered series): -```{r, eval = NCRAN} + +```r fmean(pwlddev$PCGDP) # Overall mean +# [1] 12048.78 fsd(W(pwlddev$PCGDP)) # Within sd +# [1] 6723.681 # Scaling and centerin such that the mean of each country is the overall mean, and the sd of each country is the within sd qsu(fscale(pwlddev$PCGDP, mean = "overall.mean", sd = "within.sd")) +# N/T Mean SD Min Max +# Overall 9466 12048.778 6651.9052 -13032.4333 37278.2175 +# Between 202 12048.778 0 12048.778 12048.778 +# Within 46.8614 12048.778 6651.9052 -13032.4333 37278.2175 ``` All of this seamlessly generalizes to weighted scaling an centering, using the `w` argument to add a weight vector. @@ -334,189 +534,456 @@ With `flag` / `L` / `F`, `fdiff` / `D` and `fgrowth` / `G`, *collapse* provides With `flag` / `L` / `F`, it is easy to lag or lead *pseries*: -```{r, eval = NCRAN} + +```r # A panel-lag -head(flag(LIFEEX)) +head(flag(LIFEEX)) +# ABW-1960 ABW-1961 ABW-1962 ABW-1963 ABW-1964 ABW-1965 +# NA 65.662 66.074 66.444 66.787 67.113 # A panel-lead head(flag(LIFEEX, -1)) +# ABW-1960 ABW-1961 ABW-1962 ABW-1963 ABW-1964 ABW-1965 +# 66.074 66.444 66.787 67.113 67.435 67.762 # The lag and lead operators are even more parsimonious to employ: all_identical(L(LIFEEX), flag(LIFEEX), lag(LIFEEX)) +# [1] TRUE all_identical(F(LIFEEX), flag(LIFEEX, -1), lead(LIFEEX)) +# [1] TRUE ``` It is also possible to compute a sequence of lags / leads using `flag` or one of the operators: -```{r, eval = NCRAN} + +```r # sequence of panel- lags and leads head(flag(LIFEEX, -1:3)) +# F1 -- L1 L2 L3 +# ABW-1960 66.074 65.662 NA NA NA +# ABW-1961 66.444 66.074 65.662 NA NA +# ABW-1962 66.787 66.444 66.074 65.662 NA +# ABW-1963 67.113 66.787 66.444 66.074 65.662 +# ABW-1964 67.435 67.113 66.787 66.444 66.074 +# ABW-1965 67.762 67.435 67.113 66.787 66.444 all_identical(L(LIFEEX, -1:3), F(LIFEEX, 1:-3), flag(LIFEEX, -1:3)) +# [1] TRUE # The native plm implementation also returns a matrix of lags but with different column names head(lag(LIFEEX, -1:3), 4) - +# -1 0 1 2 3 +# ABW-1960 66.074 65.662 NA NA NA +# ABW-1961 66.444 66.074 65.662 NA NA +# ABW-1962 66.787 66.444 66.074 65.662 NA +# ABW-1963 67.113 66.787 66.444 66.074 65.662 ``` -Of course the lag orders may be unevenly spaced, i.e. `L(x, -1:3*12)` would compute seasonal lags on monthly data. On *pdata.frame*'s, the effects of `flag` and `L` / `F` differ insofar that `flag` will just lag the entire dataset without preserving identifiers (although the index attribute is always preserved), whereas `L` / `F` by default (`cols = is.numeric`) select the numeric variables and add the panel-id's on the left (default `keep.ids = TRUE`): +Of course the lag orders may be unevenly spaced, i.e. `L(x, -1:3*12)` would compute seasonal lags on monthly data. On *pdata.frame*'s, the effects of `flag` and `L` / `F` differ insofar that `flag` will just lag the entire dataset without preserving identifiers (although the index attribute is always preserved), whereas `L` / `F` by default (`cols = is.numeric`) select the numeric variables and add the panel-id's on the left (default `keep.ids = TRUE`): + -```{r, eval = NCRAN} +```r # This lags the entire data head(flag(pwlddev)) +# country iso3c date year decade region income OECD PCGDP +# ABW-1960 NA NA NA +# ABW-1961 Aruba ABW 1961-01-01 1960 1960 Latin America & Caribbean High income FALSE NA +# ABW-1962 Aruba ABW 1962-01-01 1961 1960 Latin America & Caribbean High income FALSE NA +# ABW-1963 Aruba ABW 1963-01-01 1962 1960 Latin America & Caribbean High income FALSE NA +# ABW-1964 Aruba ABW 1964-01-01 1963 1960 Latin America & Caribbean High income FALSE NA +# ABW-1965 Aruba ABW 1965-01-01 1964 1960 Latin America & Caribbean High income FALSE NA +# LIFEEX GINI ODA POP +# ABW-1960 NA NA NA NA +# ABW-1961 65.662 NA NA 54211 +# ABW-1962 66.074 NA NA 55438 +# ABW-1963 66.444 NA NA 56225 +# ABW-1964 66.787 NA NA 56695 +# ABW-1965 67.113 NA NA 57032 # This lags only numeric columns and preserves panel-id's head(L(pwlddev)) +# iso3c year L1.decade L1.PCGDP L1.LIFEEX L1.GINI L1.ODA L1.POP +# ABW-1960 ABW 1960 NA NA NA NA NA NA +# ABW-1961 ABW 1961 1960 NA 65.662 NA NA 54211 +# ABW-1962 ABW 1962 1960 NA 66.074 NA NA 55438 +# ABW-1963 ABW 1963 1960 NA 66.444 NA NA 56225 +# ABW-1964 ABW 1964 1960 NA 66.787 NA NA 56695 +# ABW-1965 ABW 1965 1960 NA 67.113 NA NA 57032 # This lags only columns 9 through 12 and preserves panel-id's head(L(pwlddev, cols = 9:12)) +# iso3c year L1.PCGDP L1.LIFEEX L1.GINI L1.ODA +# ABW-1960 ABW 1960 NA NA NA NA +# ABW-1961 ABW 1961 NA 65.662 NA NA +# ABW-1962 ABW 1962 NA 66.074 NA NA +# ABW-1963 ABW 1963 NA 66.444 NA NA +# ABW-1964 ABW 1964 NA 66.787 NA NA +# ABW-1965 ABW 1965 NA 67.113 NA NA ``` We can also easily compute a sequence of lags / leads on a panel data.frame: -```{r, eval = NCRAN} + +```r # This lags only columns 9 through 12 and preserves panel-id's head(L(pwlddev, -1:3, cols = 9:12)) +# iso3c year F1.PCGDP PCGDP L1.PCGDP L2.PCGDP L3.PCGDP F1.LIFEEX LIFEEX L1.LIFEEX L2.LIFEEX +# ABW-1960 ABW 1960 NA NA NA NA NA 66.074 65.662 NA NA +# ABW-1961 ABW 1961 NA NA NA NA NA 66.444 66.074 65.662 NA +# ABW-1962 ABW 1962 NA NA NA NA NA 66.787 66.444 66.074 65.662 +# ABW-1963 ABW 1963 NA NA NA NA NA 67.113 66.787 66.444 66.074 +# ABW-1964 ABW 1964 NA NA NA NA NA 67.435 67.113 66.787 66.444 +# ABW-1965 ABW 1965 NA NA NA NA NA 67.762 67.435 67.113 66.787 +# L3.LIFEEX F1.GINI GINI L1.GINI L2.GINI L3.GINI F1.ODA ODA L1.ODA L2.ODA L3.ODA +# ABW-1960 NA NA NA NA NA NA NA NA NA NA NA +# ABW-1961 NA NA NA NA NA NA NA NA NA NA NA +# ABW-1962 NA NA NA NA NA NA NA NA NA NA NA +# ABW-1963 65.662 NA NA NA NA NA NA NA NA NA NA +# ABW-1964 66.074 NA NA NA NA NA NA NA NA NA NA +# ABW-1965 66.444 NA NA NA NA NA NA NA NA NA NA ``` Essentially the same functionality applies to `fdiff` / `D` and `fgrowth` / `G`, with the main differences that these functions also have a `diff` argument to determine the number of iterations: -```{r, eval = NCRAN} + +```r # Panel-difference of Life Expectancy head(fdiff(LIFEEX)) +# ABW-1960 ABW-1961 ABW-1962 ABW-1963 ABW-1964 ABW-1965 +# NA 0.412 0.370 0.343 0.326 0.322 # Second panel-difference head(fdiff(LIFEEX, diff = 2)) +# ABW-1960 ABW-1961 ABW-1962 ABW-1963 ABW-1964 ABW-1965 +# NA NA -0.042 -0.027 -0.017 -0.004 # Panel-growth rate of Life Expectancy head(fgrowth(LIFEEX)) +# ABW-1960 ABW-1961 ABW-1962 ABW-1963 ABW-1964 ABW-1965 +# NA 0.6274558 0.5599782 0.5162242 0.4881189 0.4797878 # Growth rate of growth rate of Life Expectancy head(fgrowth(LIFEEX, diff = 2)) +# ABW-1960 ABW-1961 ABW-1962 ABW-1963 ABW-1964 ABW-1965 +# NA NA -10.754153 -7.813521 -5.444387 -1.706782 identical(D(LIFEEX), fdiff(LIFEEX)) +# [1] TRUE identical(G(LIFEEX), fgrowth(LIFEEX)) +# [1] TRUE identical(fdiff(LIFEEX), diff(LIFEEX)) # Same as plm::diff.pseries (which does not compute iterated panel-differences) +# [1] TRUE ``` -By default, growth rates are calculated in percentage terms which is set by the default argument `scale = 100`. It is also possible to compute log-differences with `fdiff(.., log = TRUE)` or the `Dlog` operator, and growth rates in percentage terms based on log-differences using `fgrowth(.., logdiff = TRUE)`. +By default, growth rates are calculated in percentage terms which is set by the default argument `scale = 100`. It is also possible to compute log-differences with `fdiff(.., log = TRUE)` or the `Dlog` operator, and growth rates in percentage terms based on log-differences using `fgrowth(.., logdiff = TRUE)`. -```{r, eval = NCRAN} + +```r # Panel log-difference of Life Expectancy head(Dlog(LIFEEX)) +# ABW-1960 ABW-1961 ABW-1962 ABW-1963 ABW-1964 ABW-1965 +# NA 0.006254955 0.005584162 0.005148963 0.004869315 0.004786405 # Panel log-difference growth rate (in percentage terms) of Life Expectancy head(G(LIFEEX, logdiff = TRUE)) +# ABW-1960 ABW-1961 ABW-1962 ABW-1963 ABW-1964 ABW-1965 +# NA 0.6254955 0.5584162 0.5148963 0.4869315 0.4786405 ``` It is also possible to compute sequences of lagged / leaded and iterated differences, log-differences and growth rates: -```{r, eval = NCRAN} + +```r # first and second forward-difference and first and second difference of lags 1-3 of Life-Expectancy head(D(LIFEEX, -1:3, 1:2)) - -# Same with Log-differences +# FD1 FD2 -- D1 D2 L2D1 L2D2 L3D1 L3D2 +# ABW-1960 -0.412 -0.042 65.662 NA NA NA NA NA NA +# ABW-1961 -0.370 -0.027 66.074 0.412 NA NA NA NA NA +# ABW-1962 -0.343 -0.017 66.444 0.370 -0.042 0.782 NA NA NA +# ABW-1963 -0.326 -0.004 66.787 0.343 -0.027 0.713 NA 1.125 NA +# ABW-1964 -0.322 0.005 67.113 0.326 -0.017 0.669 -0.113 1.039 NA +# ABW-1965 -0.327 0.006 67.435 0.322 -0.004 0.648 -0.065 0.991 NA + +# Same with Log-differences head(Dlog(LIFEEX, -1:3, 1:2)) +# FDlog1 FDlog2 -- Dlog1 Dlog2 L2Dlog1 L2Dlog2 +# ABW-1960 -0.006254955 -6.707929e-04 4.184520 NA NA NA NA +# ABW-1961 -0.005584162 -4.351984e-04 4.190775 0.006254955 NA NA NA +# ABW-1962 -0.005148963 -2.796481e-04 4.196359 0.005584162 -0.0006707929 0.01183912 NA +# ABW-1963 -0.004869315 -8.291000e-05 4.201508 0.005148963 -0.0004351984 0.01073312 NA +# ABW-1964 -0.004786405 5.098981e-05 4.206378 0.004869315 -0.0002796481 0.01001828 -0.001820838 +# ABW-1965 -0.004837395 6.482830e-05 4.211164 0.004786405 -0.0000829100 0.00965572 -0.001077405 +# L3Dlog1 L3Dlog2 +# ABW-1960 NA NA +# ABW-1961 NA NA +# ABW-1962 NA NA +# ABW-1963 0.01698808 NA +# ABW-1964 0.01560244 NA +# ABW-1965 0.01480468 NA # Same with (exact) growth rates head(G(LIFEEX, -1:3, 1:2)) +# FG1 FG2 -- G1 G2 L2G1 L2G2 L3G1 L3G2 +# ABW-1960 -0.6235433 11.974895 65.662 NA NA NA NA NA NA +# ABW-1961 -0.5568599 8.428580 66.074 0.6274558 NA NA NA NA NA +# ABW-1962 -0.5135730 5.728297 66.444 0.5599782 -10.754153 1.1909476 NA NA NA +# ABW-1963 -0.4857479 1.727984 66.787 0.5162242 -7.813521 1.0790931 NA 1.713320 NA +# ABW-1964 -0.4774968 -1.051555 67.113 0.4881189 -5.444387 1.0068629 -15.45699 1.572479 NA +# ABW-1965 -0.4825714 -1.319230 67.435 0.4797878 -1.706782 0.9702487 -10.08666 1.491482 NA ``` -A further possibility is to compute quasi-differences and quasi-log-differences of the form $x_t - \rho x_{t-s}$ or $log(x_t) - \rho log(x_{t-s})$. These are useful for panel-regressions suffering from serial-correlation, following Cochrane & Orcutt (1949), and can be specified with the `rho` argument to `fdiff`, `D` and `Dlog`. +A further possibility is to compute quasi-differences and quasi-log-differences of the form $x_t - \rho x_{t-s}$ or $log(x_t) - \rho log(x_{t-s})$. These are useful for panel-regressions suffering from serial-correlation, following Cochrane & Orcutt (1949), and can be specified with the `rho` argument to `fdiff`, `D` and `Dlog`. + -```{r, eval = NCRAN} +```r # Regression of GDP on Life Expectance with country and time FE mod <- lm(PCGDP ~ LIFEEX, data = fhdwithin(fselect(pwlddev, PCGDP, LIFEEX), fill = FALSE)) mod +# +# Call: +# lm(formula = PCGDP ~ LIFEEX, data = fhdwithin(fselect(pwlddev, +# PCGDP, LIFEEX), fill = FALSE)) +# +# Coefficients: +# (Intercept) LIFEEX +# -2.442e-12 -3.330e+02 # Computing autocorrelation of residuals r <- residuals(mod) r <- pwcor(r, L(r, 1, substr(names(r), 1, 3))) # Need this to compute a panel-lag r +# [1] .98 # Running the regression again quasi-differencing the transformed data modCO <- lm(PCGDP ~ LIFEEX, data = fdiff(fhdwithin(fselect(pwlddev, PCGDP, LIFEEX), variable.wise = FALSE), rho = r, stubs = FALSE)) modCO +# +# Call: +# lm(formula = PCGDP ~ LIFEEX, data = fdiff(fhdwithin(fselect(pwlddev, +# PCGDP, LIFEEX), variable.wise = FALSE), rho = r, stubs = FALSE)) +# +# Coefficients: +# (Intercept) LIFEEX +# -12.93 -91.97 # In this case rho is almost 1, so we might as well just difference the untransformed data and go with that -# We also need to bootstrap this for proper standard errors. +# We also need to bootstrap this for proper standard errors. ``` A final important advantage of the *collapse* functions is that the panel-identifiers are preserved, even if a matrix of lags / leads / differences or growth rates is returned. This allows for nested panel-computations, for example we can compute shifted sequences of lagged / leaded and iterated panel differences: -```{r, eval = NCRAN} + +```r # Sequence of differneces (same as above), adding one extra lag of the whole sequence head(L(D(LIFEEX, -1:3, 1:2), 0:1)) - +# FD1 L1.FD1 FD2 L1.FD2 -- L1.-- D1 L1.D1 D2 L1.D2 L2D1 L1.L2D1 L2D2 +# ABW-1960 -0.412 NA -0.042 NA 65.662 NA NA NA NA NA NA NA NA +# ABW-1961 -0.370 -0.412 -0.027 -0.042 66.074 65.662 0.412 NA NA NA NA NA NA +# ABW-1962 -0.343 -0.370 -0.017 -0.027 66.444 66.074 0.370 0.412 -0.042 NA 0.782 NA NA +# ABW-1963 -0.326 -0.343 -0.004 -0.017 66.787 66.444 0.343 0.370 -0.027 -0.042 0.713 0.782 NA +# ABW-1964 -0.322 -0.326 0.005 -0.004 67.113 66.787 0.326 0.343 -0.017 -0.027 0.669 0.713 -0.113 +# ABW-1965 -0.327 -0.322 0.006 0.005 67.435 67.113 0.322 0.326 -0.004 -0.017 0.648 0.669 -0.065 +# L1.L2D2 L3D1 L1.L3D1 L3D2 L1.L3D2 +# ABW-1960 NA NA NA NA NA +# ABW-1961 NA NA NA NA NA +# ABW-1962 NA NA NA NA NA +# ABW-1963 NA 1.125 NA NA NA +# ABW-1964 NA 1.039 1.125 NA NA +# ABW-1965 -0.113 0.991 1.039 NA NA ``` All of this naturally generalized to computations on *pdata.frames*: -```{r, eval = NCRAN} + +```r head(D(pwlddev, -1:3, 1:2, cols = 9:10), 3) +# iso3c year FD1.PCGDP FD2.PCGDP PCGDP D1.PCGDP D2.PCGDP L2D1.PCGDP L2D2.PCGDP L3D1.PCGDP +# ABW-1960 ABW 1960 NA NA NA NA NA NA NA NA +# ABW-1961 ABW 1961 NA NA NA NA NA NA NA NA +# ABW-1962 ABW 1962 NA NA NA NA NA NA NA NA +# L3D2.PCGDP FD1.LIFEEX FD2.LIFEEX LIFEEX D1.LIFEEX D2.LIFEEX L2D1.LIFEEX L2D2.LIFEEX +# ABW-1960 NA -0.412 -0.042 65.662 NA NA NA NA +# ABW-1961 NA -0.370 -0.027 66.074 0.412 NA NA NA +# ABW-1962 NA -0.343 -0.017 66.444 0.370 -0.042 0.782 NA +# L3D1.LIFEEX L3D2.LIFEEX +# ABW-1960 NA NA +# ABW-1961 NA NA +# ABW-1962 NA NA head(L(D(pwlddev, -1:3, 1:2, cols = 9:10), 0:1), 3) +# iso3c year FD1.PCGDP L1.FD1.PCGDP FD2.PCGDP L1.FD2.PCGDP PCGDP L1.PCGDP D1.PCGDP +# ABW-1960 ABW 1960 NA NA NA NA NA NA NA +# ABW-1961 ABW 1961 NA NA NA NA NA NA NA +# ABW-1962 ABW 1962 NA NA NA NA NA NA NA +# L1.D1.PCGDP D2.PCGDP L1.D2.PCGDP L2D1.PCGDP L1.L2D1.PCGDP L2D2.PCGDP L1.L2D2.PCGDP +# ABW-1960 NA NA NA NA NA NA NA +# ABW-1961 NA NA NA NA NA NA NA +# ABW-1962 NA NA NA NA NA NA NA +# L3D1.PCGDP L1.L3D1.PCGDP L3D2.PCGDP L1.L3D2.PCGDP FD1.LIFEEX L1.FD1.LIFEEX FD2.LIFEEX +# ABW-1960 NA NA NA NA -0.412 NA -0.042 +# ABW-1961 NA NA NA NA -0.370 -0.412 -0.027 +# ABW-1962 NA NA NA NA -0.343 -0.370 -0.017 +# L1.FD2.LIFEEX LIFEEX L1.LIFEEX D1.LIFEEX L1.D1.LIFEEX D2.LIFEEX L1.D2.LIFEEX L2D1.LIFEEX +# ABW-1960 NA 65.662 NA NA NA NA NA NA +# ABW-1961 -0.042 66.074 65.662 0.412 NA NA NA NA +# ABW-1962 -0.027 66.444 66.074 0.370 0.412 -0.042 NA 0.782 +# L1.L2D1.LIFEEX L2D2.LIFEEX L1.L2D2.LIFEEX L3D1.LIFEEX L1.L3D1.LIFEEX L3D2.LIFEEX +# ABW-1960 NA NA NA NA NA NA +# ABW-1961 NA NA NA NA NA NA +# ABW-1962 NA NA NA NA NA NA +# L1.L3D2.LIFEEX +# ABW-1960 NA +# ABW-1961 NA +# ABW-1962 NA ``` ### 1.5 Panel Data to Array Conversions Viewing and transforming panel data stored in an array can be a powerful strategy, especially as it provides much more direct access to the different dimensions of the data. The function `psmat` can be used to efficiently transform *pseries* to a 2D matrix, and *pdata.frame*'s to a 3D array: -```{r, eval = NCRAN} + +```r # Converting the panel series to array, individual rows (default) str(psmat(LIFEEX)) +# 'psmat' num [1:216, 1:61] 65.7 32.4 37.5 62.3 NA ... +# - attr(*, "dimnames")=List of 2 +# ..$ : chr [1:216] "ABW" "AFG" "AGO" "ALB" ... +# ..$ : chr [1:61] "1960" "1961" "1962" "1963" ... +# - attr(*, "transpose")= logi FALSE # Converting the panel series to array, individual columns str(psmat(LIFEEX, transpose = TRUE)) +# 'psmat' num [1:61, 1:216] 65.7 66.1 66.4 66.8 67.1 ... +# - attr(*, "dimnames")=List of 2 +# ..$ : chr [1:61] "1960" "1961" "1962" "1963" ... +# ..$ : chr [1:216] "ABW" "AFG" "AGO" "ALB" ... +# - attr(*, "transpose")= logi TRUE # Same as plm::as.matrix.pseries, apart from attributes -identical(unattrib(psmat(LIFEEX)), - unattrib(as.matrix(LIFEEX))) -identical(unattrib(psmat(LIFEEX, transpose = TRUE)), - unattrib(as.matrix(LIFEEX, idbyrow = FALSE))) +identical(unattrib(psmat(LIFEEX)), + unattrib(as.matrix(LIFEEX))) +# [1] TRUE +identical(unattrib(psmat(LIFEEX, transpose = TRUE)), + unattrib(as.matrix(LIFEEX, idbyrow = FALSE))) +# [1] TRUE ``` Applying `psmat` to a *pdata.frame* yields a 3D array: -```{r, eval = NCRAN} + +```r psar <- psmat(pwlddev, cols = 9:12) str(psar) +# 'psmat' num [1:216, 1:61, 1:4] NA NA NA NA NA ... +# - attr(*, "dimnames")=List of 3 +# ..$ : chr [1:216] "ABW" "AFG" "AGO" "ALB" ... +# ..$ : chr [1:61] "1960" "1961" "1962" "1963" ... +# ..$ : chr [1:4] "PCGDP" "LIFEEX" "GINI" "ODA" +# - attr(*, "transpose")= logi FALSE str(psmat(pwlddev, cols = 9:12, transpose = TRUE)) +# 'psmat' num [1:61, 1:216, 1:4] NA NA NA NA NA NA NA NA NA NA ... +# - attr(*, "dimnames")=List of 3 +# ..$ : chr [1:61] "1960" "1961" "1962" "1963" ... +# ..$ : chr [1:216] "ABW" "AFG" "AGO" "ALB" ... +# ..$ : chr [1:4] "PCGDP" "LIFEEX" "GINI" "ODA" +# - attr(*, "transpose")= logi TRUE ``` This format can be very convenient to quickly and freely access data for different countries, variables and time-periods: -```{r, eval = NCRAN} + +```r # Looking at wealth, health and inequality in Brazil and Argentinia, 1990-1999 aperm(psar[c("BRA","ARG"), as.character(1990:1999), c("PCGDP", "LIFEEX", "GINI")]) +# , , BRA +# +# 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 +# PCGDP 7983.7 7963.1 7791.8 8020.6 8311.6 8540.1 8591.0 8744.8 8641.3 8554.1 +# LIFEEX 66.3 66.7 67.1 67.5 67.9 68.3 68.7 69.1 69.4 69.8 +# GINI 60.5 NA 53.2 60.1 NA 59.6 59.9 59.8 59.6 59.0 +# +# , , ARG +# +# 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 +# PCGDP 6245.7 6721.3 7157.3 7644.2 7988.6 7666.5 7994.2 8543.0 8772.1 8381.3 +# LIFEEX 71.6 71.8 72.0 72.2 72.5 72.7 72.8 73.0 73.2 73.4 +# GINI NA 46.8 45.5 44.9 45.9 48.9 49.5 49.1 50.7 49.8 ``` `psmat` can also return the output as a list of panel series matrices: -```{r, eval = NCRAN} + +```r pslist <- psmat(pwlddev, cols = 9:12, array = FALSE) str(pslist) +# List of 4 +# $ PCGDP : 'psmat' num [1:216, 1:61] NA NA NA NA NA ... +# ..- attr(*, "dimnames")=List of 2 +# .. ..$ : chr [1:216] "ABW" "AFG" "AGO" "ALB" ... +# .. ..$ : chr [1:61] "1960" "1961" "1962" "1963" ... +# ..- attr(*, "transpose")= logi FALSE +# $ LIFEEX: 'psmat' num [1:216, 1:61] 65.7 32.4 37.5 62.3 NA ... +# ..- attr(*, "dimnames")=List of 2 +# .. ..$ : chr [1:216] "ABW" "AFG" "AGO" "ALB" ... +# .. ..$ : chr [1:61] "1960" "1961" "1962" "1963" ... +# ..- attr(*, "transpose")= logi FALSE +# $ GINI : 'psmat' num [1:216, 1:61] NA NA NA NA NA NA NA NA NA NA ... +# ..- attr(*, "dimnames")=List of 2 +# .. ..$ : chr [1:216] "ABW" "AFG" "AGO" "ALB" ... +# .. ..$ : chr [1:61] "1960" "1961" "1962" "1963" ... +# ..- attr(*, "transpose")= logi FALSE +# $ ODA : 'psmat' num [1:216, 1:61] NA 116769997 -390000 NA NA ... +# ..- attr(*, "dimnames")=List of 2 +# .. ..$ : chr [1:216] "ABW" "AFG" "AGO" "ALB" ... +# .. ..$ : chr [1:61] "1960" "1961" "1962" "1963" ... +# ..- attr(*, "transpose")= logi FALSE ``` This list can then be unlisted using the function `unlist2d` (for unlisting in 2-dimensions), to yield a reshaped data.frame: -```{r, eval = NCRAN} -head(unlist2d(pslist, idcols = "Variable", row.names = "Country Code"), 3) -``` -Of course we could also have applied some transformation (like computing pairwise correlations) to each matrix before unlisting. In any case this kind of programming provides lots of possibilities to explore and manipulate panel data (as we will see in Part 2). +```r +head(unlist2d(pslist, idcols = "Variable", row.names = "Country Code"), 3) +# Variable Country Code 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 +# 1 PCGDP ABW NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA +# 2 PCGDP AFG NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA +# 3 PCGDP AGO NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA +# 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 +# 1 NA NA NA NA NA NA NA NA NA NA NA 15669.616 +# 2 NA NA NA NA NA NA NA NA NA NA NA NA +# 3 NA NA NA NA NA 3193.404 2947.194 2844.322 2859.919 2925.367 2922.217 2902.618 +# 1987 1988 1989 1990 1991 1992 1993 1994 1995 +# 1 18427.612 22134.017 24837.951 25357.787 26329.313 26401.969 26663.208 27272.310 26705.18 +# 2 NA NA NA NA NA NA NA NA NA +# 3 2916.794 2989.617 2889.886 2697.491 2635.156 2401.234 1767.025 1733.844 1930.80 +# 1996 1997 1998 1999 2000 2001 2002 2003 2004 +# 1 26087.776 27190.501 27151.92 26954.40 28417.384 26966.055 25508.3027 25469.2876 27005.5294 +# 2 NA NA NA NA NA NA 330.3036 343.0809 333.2167 +# 3 2122.968 2205.294 2235.39 2211.13 2205.205 2223.335 2444.4178 2433.8616 2608.7840 +# 2005 2006 2007 2008 2009 2010 2011 2012 2013 +# 1 26979.8854 27046.2242 27427.579 27365.9312 24463.6922 23512.603 24233.0011 23781.2573 24635.7649 +# 2 357.2347 365.2845 405.549 412.0143 488.3003 543.303 528.7366 576.1901 587.5651 +# 3 2896.5547 3116.1810 3424.372 3668.0799 3565.0569 3587.884 3579.9599 3748.4507 3796.8822 +# 2014 2015 2016 2017 2018 2019 2020 +# 1 24563.2343 25822.2514 26231.0267 26630.2053 NA NA NA +# 2 583.6562 574.1841 571.0738 571.4407 564.610 573.2876 NA +# 3 3843.1979 3748.3201 3530.3107 3409.9303 3233.906 3111.1577 NA +``` + +Of course we could also have applied some transformation (like computing pairwise correlations) to each matrix before unlisting. In any case this kind of programming provides lots of possibilities to explore and manipulate panel data (as we will see in Part 2). ### Benchmarks -Below benchmarks are provided of the *collapse* implementation against native *plm*. To do this the dataset used so far is extended to have approx 1 million observations: +Below benchmarks are provided of the *collapse* implementation against native *plm*. To do this the dataset used so far is extended to have approx 1 million observations: + -```{r, eval=RUNBENCH} +```r wlddevsmall <- get_vars(wlddev, c("iso3c","year","OECD","PCGDP","LIFEEX","GINI","ODA")) wlddevsmall$iso3c <- as.character(wlddevsmall$iso3c) data <- replicate(100, wlddevsmall, simplify = FALSE) @@ -528,270 +995,652 @@ uniquify <- function(x, i) { 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 = 61, N = 1317600 ``` -The data has 21600 individuals (countries) observed for up to 61 years (1960-2020), the total number of rows is 1317600. We can pull out a series of life expectancy and run some benchmarks. The Windows laptop on which these benchmarks were run has a 2x 2.2 GHZ Intel i5 processor, 8GB DDR3 RAM and a Samsung SSD hard drive. +The data has 21600 individuals (countries) observed for up to 61 years (1960-2020), the total number of rows is 1317600. We can pull out a series of life expectancy and run some benchmarks. The Windows laptop on which these benchmarks were run has a 2x 2.2 GHZ Intel i5 processor, 8GB DDR3 RAM and a Samsung SSD hard drive. + -```{r, eval=RUNBENCH} +```r library(microbenchmark) # Creating the extended panel series for Life Expectancy (l for large) LIFEEX_l <- data$LIFEEX str(LIFEEX_l) +# 'pseries' Named num [1:1317600] 65.7 66.1 66.4 66.8 67.1 ... +# - attr(*, "names")= chr [1:1317600] "ABW1-1960" "ABW1-1961" "ABW1-1962" "ABW1-1963" ... +# - attr(*, "index")=Classes 'pindex' and 'data.frame': 1317600 obs. of 2 variables: +# ..$ iso3c: Factor w/ 21600 levels "ABW1","ABW10",..: 1 1 1 1 1 1 1 1 1 1 ... +# ..$ year : Factor w/ 61 levels "1960","1961",..: 1 2 3 4 5 6 7 8 9 10 ... # Between Transformations microbenchmark(Between(LIFEEX_l, na.rm = TRUE), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# Between(LIFEEX_l, na.rm = TRUE) 17.73594 18.71248 21.84342 20.13574 22.35853 37.94689 10 microbenchmark(fbetween(LIFEEX_l), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# fbetween(LIFEEX_l) 4.408771 4.639519 4.705529 4.718424 4.771498 4.908684 10 # Within Transformations microbenchmark(Within(LIFEEX_l, na.rm = TRUE), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# Within(LIFEEX_l, na.rm = TRUE) 10.17887 10.74663 10.91092 10.8766 11.24224 11.37664 10 microbenchmark(fwithin(LIFEEX_l), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# fwithin(LIFEEX_l) 4.522218 4.550303 4.735344 4.644296 4.696017 5.297036 10 # Higher-Dimenional Between and Within Transformations microbenchmark(fhdbetween(LIFEEX_l), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# fhdbetween(LIFEEX_l) 56.916 57.29971 66.0179 58.13864 76.50108 84.10625 10 microbenchmark(fhdwithin(LIFEEX_l), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# fhdwithin(LIFEEX_l) 55.55906 56.2372 62.31852 56.56555 75.78784 77.20657 10 # Single Lag microbenchmark(lag(LIFEEX_l), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# lag(LIFEEX_l) 7.967776 8.144896 8.542879 8.632468 8.840092 8.949357 10 microbenchmark(flag(LIFEEX_l), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# flag(LIFEEX_l) 7.994057 8.038747 8.337862 8.180484 8.603481 9.12086 10 # Sequence of Lags / Leads microbenchmark(lag(LIFEEX_l, -1:3), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# lag(LIFEEX_l, -1:3) 18.7525 19.29476 28.61876 27.95813 38.11081 39.5329 10 microbenchmark(flag(LIFEEX_l, -1:3), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# flag(LIFEEX_l, -1:3) 15.5415 15.64335 21.10042 15.83998 33.37699 34.10265 10 # Single difference microbenchmark(diff(LIFEEX_l), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# diff(LIFEEX_l) 8.00525 8.16884 8.370421 8.368776 8.554404 8.733697 10 microbenchmark(fdiff(LIFEEX_l), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# fdiff(LIFEEX_l) 7.937805 8.020502 8.3458 8.2451 8.426238 9.34923 10 # Iterated Difference microbenchmark(fdiff(LIFEEX_l, diff = 2), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# fdiff(LIFEEX_l, diff = 2) 10.20129 10.62786 10.72184 10.77488 10.82326 11.21805 10 # Sequence of Lagged / Leaded and iterated differences microbenchmark(fdiff(LIFEEX_l, -1:3, 1:2), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# fdiff(LIFEEX_l, -1:3, 1:2) 45.90159 52.22494 66.83236 53.21347 57.53222 187.8582 10 # Single Growth Rate microbenchmark(fgrowth(LIFEEX_l), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# fgrowth(LIFEEX_l) 8.222304 8.357153 8.69059 8.727158 8.884167 9.436683 10 # Single Log-Difference microbenchmark(fdiff(LIFEEX_l, log = TRUE), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# fdiff(LIFEEX_l, log = TRUE) 12.41394 12.8583 15.06961 13.17156 13.61659 32.51989 10 # Panel Series to Matrix Conversion # system.time(as.matrix(LIFEEX_l)) This takes about 3 minutes to compute microbenchmark(psmat(LIFEEX_l), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# psmat(LIFEEX_l) 1.482478 1.500149 1.628028 1.520813 1.553941 2.438639 10 ``` This shows a comparison between flag and *data.table*'s shift: -```{r, eval=RUNBENCH} + +```r microbenchmark(L(data, cols = 3:6), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# L(data, cols = 3:6) 14.13692 14.43877 20.88276 18.865 19.73141 37.06244 10 library(data.table) setDT(data) # 'Improper' panel-lag microbenchmark(data[, shift(.SD), by = iso3c, .SDcols = 3:6], times = 10) +# Unit: milliseconds +# expr min lq mean median uq max +# data[, shift(.SD), by = iso3c, .SDcols = 3:6] 176.5308 199.9415 215.6897 204.0719 230.089 268.9992 +# neval +# 10 # This does what L is actually doing (without sorting the data) -microbenchmark(data[order(year), shift(.SD), by = iso3c, .SDcols = 3:6], times = 10) +microbenchmark(data[order(year), shift(.SD), by = iso3c, .SDcols = 3:6], times = 10) +# Unit: milliseconds +# expr min lq mean median +# data[order(year), shift(.SD), by = iso3c, .SDcols = 3:6] 193.9684 210.7025 213.7664 213.0727 +# uq max neval +# 221.9783 226.3685 10 ``` -The above dataset has 1 million obs in 20 thousand groups, but what about 10 million obs and 1 million groups? Do *collapse* functions scale efficiently as data and the number of groups grows large? Here is a simple benchmark: +The above dataset has 1 million obs in 20 thousand groups, but what about 10 million obs and 1 million groups? Do *collapse* functions scale efficiently as data and the number of groups grows large? Here is a simple benchmark: + -```{r, eval=RUNBENCH} +```r x <- rnorm(1e7) # 10 million obs g <- qF(rep(1:1e6, each = 10), na.exclude = FALSE) # 1 million individuals t <- qF(rep(1:10, 1e6), na.exclude = FALSE) # 10 time-periods per individual microbenchmark(fbetween(x, g), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# fbetween(x, g) 51.66189 53.60693 91.00168 62.54655 73.87835 233.3696 10 microbenchmark(fwithin(x, g), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# fwithin(x, g) 43.46291 44.03954 77.0216 45.33919 58.65132 196.7248 10 microbenchmark(flag(x, 1, g, t), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# flag(x, 1, g, t) 42.65382 55.05332 87.72527 59.55935 80.86143 210.8074 10 microbenchmark(flag(x, -1:1, g, t), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# flag(x, -1:1, g, t) 92.19842 92.5559 162.8994 166.736 228.6354 239.6953 10 microbenchmark(fdiff(x, 1, 1, g, t), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# fdiff(x, 1, 1, g, t) 42.51778 46.29306 82.27838 53.85735 67.54295 205.0114 10 microbenchmark(fdiff(x, 1, 2, g, t), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# fdiff(x, 1, 2, g, t) 59.9363 62.11689 84.42818 69.85072 75.38506 217.1431 10 microbenchmark(fdiff(x, -1:1, 1:2, g, t), times = 10) +# Unit: milliseconds +# expr min lq mean median uq max neval +# fdiff(x, -1:1, 1:2, g, t) 163.5046 182.9127 246.2855 250.664 301.4046 339.1415 10 ``` The results show that *collapse* functions perform very well even as the number of groups grows large. -The conclusion of this benchmark analysis is that *collapse*'s fast functions, with or without the help of *plm* classes, allow for very fast transformations of panel data, and should enable R programmers and econometricians to implement high-performance panel data estimators without having to dive into C/C++ themselves or resorting to *data.table* metaprogramming. +The conclusion of this benchmark analysis is that *collapse*'s fast functions, with or without the help of *plm* classes, allow for very fast transformations of panel data, and should enable R programmers and econometricians to implement high-performance panel data estimators without having to dive into C/C++ themselves or resorting to *data.table* metaprogramming. ## Part 2: Fast Exploration of Panel Data -*collapse* also provides some essential functions to summarize and explore panel data, such as a fast check of variation over different dimensions, fast summary-statistics for panel data, panel-auto, partial-auto and cross-correlation functions, and a fast F-test to test fixed effects and other exclusion restrictions on (large) panel data models. Panel data to matrix conversion further allows the application of some correlational and unsupervised learning tools such as PCA, clustering or dynamic factor analysis. +*collapse* also provides some essential functions to summarize and explore panel data, such as a fast check of variation over different dimensions, fast summary-statistics for panel data, panel-auto, partial-auto and cross-correlation functions, and a fast F-test to test fixed effects and other exclusion restrictions on (large) panel data models. Panel data to matrix conversion further allows the application of some correlational and unsupervised learning tools such as PCA, clustering or dynamic factor analysis. ### 2.1 Variation Check for Panel Data The function `varying` can be used to check over which panel-dimensions different variable have variation. When passed a *pdata.frame*, `varying` by default takes the first identifier and checks for variation *within* that dimension. -```{r, eval = NCRAN} -# This checks for any variation within "iso3c", the first index variable: TRUE means data vary within country i.e. over time. + +```r +# This checks for any variation within "iso3c", the first index variable: TRUE means data vary within country i.e. over time. varying(pwlddev) +# country date year decade region income OECD PCGDP LIFEEX GINI ODA POP +# FALSE TRUE TRUE TRUE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE ``` Alternatively any index variable or combination of index variables can be specified: -```{r, eval = NCRAN} -# This checks any variation within time variable, i.e. cross-sectional variation. + +```r +# This checks any variation within time variable, i.e. cross-sectional variation. varying(pwlddev, effect = "year") +# country iso3c date decade region income OECD PCGDP LIFEEX GINI ODA POP +# TRUE TRUE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE ``` Another possibility is checking for variation within each group: -```{r, eval = NCRAN} -# This checks cross-sectional variation within each year for 4 indicators. + +```r +# This checks cross-sectional variation within each year for 4 indicators. head(varying(pwlddev, effect = "year", cols = 9:12, any_group = FALSE)) +# PCGDP LIFEEX GINI ODA +# 1960 TRUE TRUE NA TRUE +# 1961 TRUE TRUE NA TRUE +# 1962 TRUE TRUE NA TRUE +# 1963 TRUE TRUE NA TRUE +# 1964 TRUE TRUE NA TRUE +# 1965 TRUE TRUE NA TRUE ``` -`varying` also has a pseries method. The code below checks for time-variation of the GINI index within each country. A `NA` is returned when there are no observations within a particular country. +`varying` also has a pseries method. The code below checks for time-variation of the GINI index within each country. A `NA` is returned when there are no observations within a particular country. + -```{r, eval = NCRAN} +```r head(varying(pwlddev$GINI, any_group = FALSE), 20) +# ABW AFG AGO ALB AND ARE ARG ARM ASM ATG AUS AUT AZE BDI BEL BEN BFA BGD BGR BHR +# NA NA TRUE TRUE NA TRUE TRUE TRUE NA NA TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE NA ``` If we would like to gave more information about this variation, we could also invoke the functions `fndistinct` and `fsd`, which do not have *pseries* methods: -```{r, eval = NCRAN} + +```r head(fndistinct(pwlddev$GINI, index(pwlddev, "iso3c")), 20) +# ABW AFG AGO ALB AND ARE ARG ARM ASM ATG AUS AUT AZE BDI BEL BEN BFA BGD BGR BHR +# 0 0 3 9 0 2 29 20 0 0 9 16 5 4 16 3 5 9 12 0 head(round(fsd(pwlddev$GINI, index(pwlddev, "iso3c")), 2), 20) +# ABW AFG AGO ALB AND ARE ARG ARM ASM ATG AUS AUT AZE BDI BEL BEN BFA BGD BGR BHR +# NA NA 5.18 2.47 NA 4.60 3.84 2.76 NA NA 1.19 1.76 4.85 4.37 1.71 4.60 5.98 3.02 2.58 NA ``` ### 2.2 Summary Statistics for Panel Data -Efficient summary statistics for panel data have long been implemented in other statistical softwares. The command `qsu`, shorthand for 'quick-summary', is a very efficient summary statistics command inspired by the *xtsummarize* command in the Stata statistical software. It computes a default set of 5 statistics (N, mean, sd, min and max) and can also computed higher moments (skewness and kurtosis) in a single pass through the data (using a numerically stable online algorithm generalized from Welford's Algorithm for variance computations). With panel data, `qsu` computes these statistics not just on the raw data, but also on the between-transformed and within-transformed data: +Efficient summary statistics for panel data have long been implemented in other statistical softwares. The command `qsu`, shorthand for 'quick-summary', is a very efficient summary statistics command inspired by the *xtsummarize* command in the Stata statistical software. It computes a default set of 5 statistics (N, mean, sd, min and max) and can also computed higher moments (skewness and kurtosis) in a single pass through the data (using a numerically stable online algorithm generalized from Welford's Algorithm for variance computations). With panel data, `qsu` computes these statistics not just on the raw data, but also on the between-transformed and within-transformed data: -```{r, eval = NCRAN} -qsu(pwlddev, cols = 9:12, higher = TRUE) -``` - -Key statistics to look at in this summary are the sample size and the standard-deviation decomposed into the between-individuals and the within-individuals standard-deviation: For GDP per Capita we have 8995 observations in the panel series for 203 countries, with on average 44.31 observations (time-periods T) per country. The between-country standard deviation is 19600 USD, around 3-times larger than the within-country (over-time) standard deviation of 6300 USD. Regarding the mean, the between-mean, computed as a cross-sectional average of country averages, usually differs slightly from the overall average taken across all data points. The within-transformed data is computed and summarized with the overall mean added back (i.e. as in `fwithin(PCGDP, mean = "overall.mean")`). -We can also do groupwise panel-statistics and `qsu` also supports weights (not shown): - -```{r, eval = NCRAN} +```r +qsu(pwlddev, cols = 9:12, higher = TRUE) +# , , PCGDP +# +# N/T Mean SD Min Max Skew Kurt +# Overall 9470 12048.778 19077.6416 132.0776 196061.417 3.1276 17.1154 +# Between 206 12962.6054 20189.9007 253.1886 141200.38 3.1263 16.2299 +# Within 45.9709 12048.778 6723.6808 -33504.8721 76767.5254 0.6576 17.2003 +# +# , , LIFEEX +# +# N/T Mean SD Min Max Skew Kurt +# Overall 11670 64.2963 11.4764 18.907 85.4171 -0.6748 2.6718 +# Between 207 64.9537 9.8936 40.9663 85.4171 -0.5012 2.1693 +# Within 56.3768 64.2963 6.0842 32.9068 84.4198 -0.2643 3.7027 +# +# , , GINI +# +# N/T Mean SD Min Max Skew Kurt +# Overall 1744 38.5341 9.2006 20.7 65.8 0.596 2.5329 +# Between 167 39.4233 8.1356 24.8667 61.7143 0.5832 2.8256 +# Within 10.4431 38.5341 2.9277 25.3917 55.3591 0.3263 5.3389 +# +# , , ODA +# +# N/T Mean SD Min Max Skew Kurt +# Overall 8608 454'720131 868'712654 -997'679993 2.56715605e+10 6.9832 114.889 +# Between 178 439'168412 569'049959 468717.916 3.62337432e+09 2.355 9.9487 +# Within 48.3596 454'720131 650'709624 -2.44379420e+09 2.45610972e+10 9.6047 263.3716 +``` + +Key statistics to look at in this summary are the sample size and the standard-deviation decomposed into the between-individuals and the within-individuals standard-deviation: For GDP per Capita we have 8995 observations in the panel series for 203 countries, with on average 44.31 observations (time-periods T) per country. The between-country standard deviation is 19600 USD, around 3-times larger than the within-country (over-time) standard deviation of 6300 USD. Regarding the mean, the between-mean, computed as a cross-sectional average of country averages, usually differs slightly from the overall average taken across all data points. The within-transformed data is computed and summarized with the overall mean added back (i.e. as in `fwithin(PCGDP, mean = "overall.mean")`). + +We can also do groupwise panel-statistics and `qsu` also supports weights (not shown): + + +```r qsu(pwlddev, ~ income, cols = 9:12, higher = TRUE) +# , , Overall, PCGDP +# +# N/T Mean SD Min Max Skew Kurt +# High income 3179 30280.7283 23847.0483 932.0417 196061.417 2.1702 10.3425 +# Low income 1311 597.4053 288.4392 164.3366 1864.7925 1.2385 4.7115 +# Lower middle income 2246 1574.2535 858.7183 144.9863 4818.1922 0.9093 3.7153 +# Upper middle income 2734 4945.3258 2979.5609 132.0776 20532.9523 1.2286 4.9391 +# +# , , Between, PCGDP +# +# N/T Mean SD Min Max Skew Kurt +# High income 71 30280.7283 20908.5323 5413.4495 141200.38 2.1347 9.9673 +# Low income 28 597.4053 243.8219 253.1886 1357.3326 1.4171 5.3137 +# Lower middle income 47 1574.2535 676.3157 444.2899 2896.8682 0.3562 2.2358 +# Upper middle income 60 4945.3258 2327.3834 1604.595 13344.5423 1.24 4.7803 +# +# , , Within, PCGDP +# +# N/T Mean SD Min Max Skew Kurt +# High income 44.7746 12048.778 11467.9987 -33504.8721 76767.5254 0.3924 6.0523 +# Low income 46.8214 12048.778 154.1039 11606.2382 12698.296 0.5098 4.0676 +# Lower middle income 47.7872 12048.778 529.1449 10377.7234 14603.1055 0.7658 5.4272 +# Upper middle income 45.5667 12048.778 1860.395 4846.3834 24883.1246 0.6858 7.8469 +# +# , , Overall, LIFEEX +# +# N/T Mean SD Min Max Skew Kurt +# High income 3831 73.6246 5.6693 42.672 85.4171 -1.0067 5.5553 +# Low income 1800 49.7301 9.0944 26.172 74.43 0.2748 2.6721 +# Lower middle income 2790 58.1481 9.3115 18.907 76.699 -0.3406 2.6845 +# Upper middle income 3249 66.6466 7.537 36.535 80.279 -1.0988 4.2262 +# +# , , Between, LIFEEX +# +# N/T Mean SD Min Max Skew Kurt +# High income 73 73.6246 3.3499 64.0302 85.4171 -0.6537 2.9946 +# Low income 30 49.7301 4.8321 40.9663 66.945 1.5195 6.6802 +# Lower middle income 47 58.1481 5.9945 45.7687 71.6078 0.0352 2.2126 +# Upper middle income 57 66.6466 4.9955 48.057 74.0504 -1.3647 5.303 +# +# , , Within, LIFEEX +# +# N/T Mean SD Min Max Skew Kurt +# High income 52.4795 64.2963 4.5738 42.9381 78.1271 -0.4838 3.8923 +# Low income 60 64.2963 7.7045 41.5678 84.4198 0.0402 2.6086 +# Lower middle income 59.3617 64.2963 7.1253 32.9068 83.9918 -0.2522 3.181 +# Upper middle income 57 64.2963 5.6437 41.4342 83.0122 -0.507 4.0355 +# +# , , Overall, GINI +# +# N/T Mean SD Min Max Skew Kurt +# High income 680 33.3037 6.7885 20.7 58.9 1.4864 5.6772 +# Low income 107 41.1327 6.5767 29.5 65.8 0.7523 4.236 +# Lower middle income 369 40.0504 9.3032 24 63.2 0.4388 2.2218 +# Upper middle income 588 43.1585 8.9549 25.2 64.8 0.0814 2.3517 +# +# , , Between, GINI +# +# N/T Mean SD Min Max Skew Kurt +# High income 41 33.3037 6.5238 24.8667 53.6296 1.5091 5.3913 +# Low income 28 41.1327 5.1706 32.1333 58.75 0.6042 4.0473 +# Lower middle income 46 40.0504 8.4622 27.6955 54.925 0.334 1.797 +# Upper middle income 52 43.1585 8.4359 27.9545 61.7143 0.0336 2.2441 +# +# , , Within, GINI +# +# N/T Mean SD Min Max Skew Kurt +# High income 16.5854 38.5341 1.8771 31.1841 45.8841 -0.0818 4.902 +# Low income 3.8214 38.5341 4.0643 29.4591 55.3591 0.6766 5.1025 +# Lower middle income 8.0217 38.5341 3.8654 27.9452 55.1008 0.4093 4.0058 +# Upper middle income 11.3077 38.5341 3.0043 25.3917 48.0131 0.0728 3.5115 +# +# , , Overall, ODA +# +# N/T Mean SD Min Max Skew +# High income 1575 153'663194 425'918409 -464'709991 4.34612988e+09 5.2505 +# Low income 1692 631'660165 941'498380 -500000 1.04032100e+10 4.4628 +# Lower middle income 2544 692'072692 1.02452490e+09 -605'969971 1.18790801e+10 3.7913 +# Upper middle income 2797 301'326218 765'116131 -997'679993 2.56715605e+10 16.3123 +# Kurt +# High income 36.2748 +# Low income 32.1305 +# Lower middle income 25.2442 +# Upper middle income 464.8625 +# +# , , Between, ODA +# +# N/T Mean SD Min Max Skew Kurt +# High income 42 153'663194 339'972909 468717.916 2.05456932e+09 3.9522 19.0792 +# Low income 30 631'660165 466'265486 91'536334 1.67220583e+09 0.9769 2.6602 +# Lower middle income 47 692'072692 765'003585 28'919000.2 3.62337432e+09 2.0429 7.2664 +# Upper middle income 59 301'326218 382'148153 13'160000 1.91297800e+09 2.1072 7.0291 +# +# , , Within, ODA +# +# N/T Mean SD Min Max Skew +# High income 37.5 454'720131 256'563661 -920'977647 2.87632242e+09 2.2074 +# Low income 56.4 454'720131 817'933797 -1.19519570e+09 9.18572426e+09 3.8872 +# Lower middle income 54.1277 454'720131 681'484247 -2.44379420e+09 1.12814455e+10 3.8965 +# Upper middle income 47.4068 454'720131 662'846500 -2.04042108e+09 2.45610972e+10 19.6351 +# Kurt +# High income 28.8682 +# Low income 33.5194 +# Lower middle income 47.7246 +# Upper middle income 657.3041 ``` Here it should be noted that any grouping is applied independently from the data-transformation, i.e. the data is first transformed, and then grouped statistics are calculated on the transformed data. The computation of statistics is very efficient: -```{r, eval=RUNBENCH} + +```r qsu(LIFEEX_l) +# N/T Mean SD Min Max +# Overall 1'167000 64.2963 11.4759 18.907 85.4171 +# Between 20700 64.9537 9.87 40.9663 85.4171 +# Within 56.3768 64.2963 6.0839 32.9068 84.4198 microbenchmark(qsu(LIFEEX_l)) +# Unit: milliseconds +# expr min lq mean median uq max neval +# qsu(LIFEEX_l) 9.49355 10.25679 11.07317 10.37214 10.78839 50.22574 100 ``` Using the transformation functions and the functions `pwcor` and `pwcov`, we can also easily explore the correlation structure of the data: -```{r, eval = NCRAN} + +```r # Overall pairwise correlations with pairwise observation count and significance testing (* = significant at 5% level) pwcor(get_vars(pwlddev, 9:12), N = TRUE, P = TRUE) +# PCGDP LIFEEX GINI ODA +# PCGDP 1 (9470) .57* (9022) -.44* (1735) -.16* (7128) +# LIFEEX .57* (9022) 1 (11670) -.35* (1742) -.02 (8142) +# GINI -.44* (1735) -.35* (1742) 1 (1744) -.20* (1109) +# ODA -.16* (7128) -.02 (8142) -.20* (1109) 1 (8608) # Between correlations pwcor(fmean(get_vars(pwlddev, 9:12), pwlddev$iso3c), N = TRUE, P = TRUE) +# PCGDP LIFEEX GINI ODA +# PCGDP 1 (206) .60* (199) -.42* (165) -.25* (172) +# LIFEEX .60* (199) 1 (207) -.40* (165) -.21* (172) +# GINI -.42* (165) -.40* (165) 1 (167) -.19* (145) +# ODA -.25* (172) -.21* (172) -.19* (145) 1 (178) # Within correlations pwcor(W(pwlddev, cols = 9:12, keep.ids = FALSE), N = TRUE, P = TRUE) +# W.PCGDP W.LIFEEX W.GINI W.ODA +# W.PCGDP 1 (9470) .31* (9022) -.01 (1735) -.01 (7128) +# W.LIFEEX .31* (9022) 1 (11670) -.16* (1742) .17* (8142) +# W.GINI -.01 (1735) -.16* (1742) 1 (1744) -.08* (1109) +# W.ODA -.01 (7128) .17* (8142) -.08* (1109) 1 (8608) ``` -The correlations show that the between (cross-country) relationships of these macro-variables are quite strong, but within countries the relationships are much weaker, for example there seems to be no significant relationship between GDP per Capita and either inequality or ODA received within countries over time. +The correlations show that the between (cross-country) relationships of these macro-variables are quite strong, but within countries the relationships are much weaker, for example there seems to be no significant relationship between GDP per Capita and either inequality or ODA received within countries over time. ### 2.3 Exploring Panel Data in Matrix / Array Form We can take a single panel series such as GDP per Capita and explore it further: -```{r, eval = NCRAN} + +```r # Generating a (transposed) matrix of country GDPs per capita tGDPmat <- psmat(PCGDP, transpose = TRUE) tGDPmat[1:10, 1:10] +# ABW AFG AGO ALB AND ARE ARG ARM ASM ATG +# 1960 NA NA NA NA NA NA 5643 NA NA NA +# 1961 NA NA NA NA NA NA 5853 NA NA NA +# 1962 NA NA NA NA NA NA 5711 NA NA NA +# 1963 NA NA NA NA NA NA 5323 NA NA NA +# 1964 NA NA NA NA NA NA 5773 NA NA NA +# 1965 NA NA NA NA NA NA 6286 NA NA NA +# 1966 NA NA NA NA NA NA 6152 NA NA NA +# 1967 NA NA NA NA NA NA 6255 NA NA NA +# 1968 NA NA NA NA NA NA 6461 NA NA NA +# 1969 NA NA NA NA NA NA 6981 NA NA NA # plot the matrix (it will plot correctly no matter how the matrix is transposed) plot(tGDPmat, main = "GDP per Capita") +``` + +
+plot of chunk PLMGDPmat +

plot of chunk PLMGDPmat

+
+ +```r # Taking series with more than 20 observation suffsamp <- tGDPmat[, fnobs(tGDPmat) > 20] -# Minimum pairwise observations between any two series: +# Minimum pairwise observations between any two series: min(pwnobs(suffsamp)) +# [1] 16 # We can use the pairwise-correlations of the annual growth rates to hierarchically cluster the economies: plot(hclust(as.dist(1-pwcor(G(suffsamp))))) +``` + +
+plot of chunk PLMGDPmat +

plot of chunk PLMGDPmat

+
+ +```r # Finally we could do PCA on the growth rates: eig <- eigen(pwcor(G(suffsamp))) plot(seq_col(suffsamp), eig$values/sum(eig$values)*100, xlab = "Number of Principal Components", ylab = "% Variance Explained", main = "Screeplot") - ``` +
+plot of chunk PLMGDPmat +

plot of chunk PLMGDPmat

+
+ There is also a nice plot-method applied to panel series arrays returned when `psmat` is applied to a panel data.frame: -```{r, fig.height=8, eval = NCRAN} + +```r plot(psmat(pwlddev, cols = 9:12), legend = TRUE) ``` +
+plot of chunk pwlddev_plot +

plot of chunk pwlddev_plot

+
+ -Above we have explored the cross-sectional relationship between the different national GDP series. Now we explore the time-dependence of the panel-vectors as a whole: +Above we have explored the cross-sectional relationship between the different national GDP series. Now we explore the time-dependence of the panel-vectors as a whole: ### 2.4 Panel- Auto-, Partial-Auto and Cross-Correlation Functions The functions `psacf`, `pspacf` and `psccf` mimic `stats::acf`, `stats::pacf` and `stats::ccf` for panel-vectors and panel data.frames. Below we compute the panel series autocorrelation function of the data: -```{r, eval = NCRAN} + +```r psacf(pwlddev, cols = 9:12) ``` -The computation is conducted by first scaling and centering (i.e. standardizing) the panel-vectors by groups (using `fscale`, default argument `gscale = TRUE`), and then taking the covariance of each series with a matrix of properly computed panel-lags of itself (using `flag`), and dividing that by the variance of the overall series (using `fvar`). +
+plot of chunk plm_psacf +

plot of chunk plm_psacf

+
+ +The computation is conducted by first scaling and centering (i.e. standardizing) the panel-vectors by groups (using `fscale`, default argument `gscale = TRUE`), and then taking the covariance of each series with a matrix of properly computed panel-lags of itself (using `flag`), and dividing that by the variance of the overall series (using `fvar`). In a similar way we can compute the Partial-ACF (using a multivariate Yule-Walker decomposition on the ACF, as in `stats::pacf`), -```{r, eval = NCRAN} + +```r pspacf(pwlddev, cols = 9:12) ``` +
+plot of chunk plm_pspacf +

plot of chunk plm_pspacf

+
+ and the panel-cross-correlation function between GDP per capita and life expectancy (which is already contained in the ACF plot above): -```{r, eval = NCRAN} + +```r psccf(PCGDP, LIFEEX) ``` +
+plot of chunk plm_psccf +

plot of chunk plm_psccf

+
+ ### 2.5 Testing for Individual Specific and Time-Effects As a final step of exploration, we could analyze our series and simple models for the significance and explanatory power of individual or time-fixed effects, without going all the way to running a Hausman Test of fixed vs. random effects on a fully specified model. The main function here is `fFtest` which efficiently computes a fast R-Squared based F-test of exclusion restrictions on models potentially involving many factors. By default (argument `full.df = TRUE`) the degrees of freedom of the test are adjusted to make it identical to the F-statistic from regressing the series on a set of country and time dummies^[In fact factors are projected out using `fixest::demean` and no regression is run at all]. -```{r, eval = NCRAN} + +```r # Testing GDP per Capita fFtest(PCGDP, index(PCGDP)) # Testing individual and time-fixed effects +# R-Sq. DF1 DF2 F-Stat. P-value +# 0.905 264 9205 330.349 0.000 fFtest(PCGDP, index(PCGDP, 1)) # Testing individual effects +# R-Sq. DF1 DF2 F-Stat. P-value +# 0.876 215 9254 303.476 0.000 fFtest(PCGDP, index(PCGDP, 2)) # Testing time effects +# R-Sq. DF1 DF2 F-Stat. P-value +# 0.027 60 9409 4.276 0.000 # Same for Life-Expectancy fFtest(LIFEEX, index(LIFEEX)) # Testing individual and time-fixed effects +# R-Sq. DF1 DF2 F-Stat. P-value +# 0.924 265 11404 519.762 0.000 fFtest(LIFEEX, index(LIFEEX, 1)) # Testing individual effects +# R-Sq. DF1 DF2 F-Stat. P-value +# 0.719 215 11454 136.276 0.000 fFtest(LIFEEX, index(LIFEEX, 2)) # Testing time effects - +# R-Sq. DF1 DF2 F-Stat. P-value +# 0.218 60 11609 54.075 0.000 ``` Below we test the correlation between the country and time-means of GDP and Life-Expectancy: -```{r, eval = NCRAN} + +```r cor.test(B(PCGDP), B(LIFEEX)) # Testing correlation of country means +# +# Pearson's product-moment correlation +# +# data: B(PCGDP) and B(LIFEEX) +# t = 78.752, df = 9020, p-value < 2.2e-16 +# alternative hypothesis: true correlation is not equal to 0 +# 95 percent confidence interval: +# 0.6259141 0.6503737 +# sample estimates: +# cor +# 0.638305 cor.test(B(PCGDP, effect = 2), B(LIFEEX, effect = 2)) # Same for time-means +# +# Pearson's product-moment correlation +# +# data: B(PCGDP, effect = 2) and B(LIFEEX, effect = 2) +# t = 325.6, df = 9020, p-value < 2.2e-16 +# alternative hypothesis: true correlation is not equal to 0 +# 95 percent confidence interval: +# 0.9583431 0.9615804 +# sample estimates: +# cor +# 0.9599938 ``` We can also test for the significance of individual and time-fixed effects (or both) in the regression of GDP on life expectancy and ODA received: -```{r, eval = NCRAN} + +```r fFtest(PCGDP, index(PCGDP), get_vars(pwlddev, c("LIFEEX","ODA"))) # Testing individual and time-fixed effects +# R-Sq. DF1 DF2 F-Stat. P-Value +# Full Model 0.915 227 6682 316.551 0.000 +# Restricted Model 0.162 2 6907 668.816 0.000 +# Exclusion Rest. 0.753 225 6682 262.732 0.000 fFtest(PCGDP, index(PCGDP, 2), get_vars(pwlddev, c("iso3c","LIFEEX","ODA"))) # Testing time-fixed effects +# R-Sq. DF1 DF2 F-Stat. P-Value +# Full Model 0.915 227 6682 316.551 0.000 +# Restricted Model 0.909 168 6741 403.168 0.000 +# Exclusion Rest. 0.005 59 6682 7.238 0.000 ``` -As can be expected in this cross-country data, individual and time-fixed effects play a large role in explaining the data, and these effects are correlated across series, suggesting that a fixed-effects model with both types of fixed-effects would be appropriate. To round things off, below we compute the Hausman test of Fixed vs. Random effects, which confirms this conclusion: +As can be expected in this cross-country data, individual and time-fixed effects play a large role in explaining the data, and these effects are correlated across series, suggesting that a fixed-effects model with both types of fixed-effects would be appropriate. To round things off, below we compute the Hausman test of Fixed vs. Random effects, which confirms this conclusion: -```{r, eval = NCRAN} + +```r phtest(PCGDP ~ LIFEEX, data = pwlddev) +# +# Hausman Test +# +# data: PCGDP ~ LIFEEX +# chisq = 397.04, df = 1, p-value < 2.2e-16 +# alternative hypothesis: one model is inconsistent ``` @@ -828,11 +1677,11 @@ phtest(PCGDP ~ LIFEEX, data = pwlddev) -## Part 3: Programming Panel Data Estimators +## Part 3: Programming Panel Data Estimators A central goal of the *collapse* package is to facilitate advanced and fast programming with data. A primary field of application for the fast functions introduced above is to program efficient panel data estimators. In this section we walk through a short example of how this can be done. The application will be an implementation of the Hausman and Taylor (1981) estimator, considering a more general case than currently implemented in the *plm* package. -In Hausman and Taylor (1981), in a more general scenario, we have a linear panel-model of the form $$y_{it} = \beta_1X_{1it} + \beta_2X_{2it} + \beta_3Z_{1i} + \beta_4Z_{2i} + \alpha_i + \gamma_t + \epsilon$$ where $\alpha_i$ denotes unobserved individual specific effects and $\gamma_t$ denotes unobserved global events. This model has up to 4 kinds of covariates: +In Hausman and Taylor (1981), in a more general scenario, we have a linear panel-model of the form $$y_{it} = \beta_1X_{1it} + \beta_2X_{2it} + \beta_3Z_{1i} + \beta_4Z_{2i} + \alpha_i + \gamma_t + \epsilon$$ where $\alpha_i$ denotes unobserved individual specific effects and $\gamma_t$ denotes unobserved global events. This model has up to 4 kinds of covariates: * Time-Varying covariates $X_{1it}$ that are uncorrelated with the individual specific effect $\alpha_i$, such that $E[X_{1it}\alpha_i] = 0$. It may be the case that $E[X_{1it}\gamma_t] \neq 0$ @@ -857,18 +1706,19 @@ The main estimation problem arises from $E[Z_{2i}\alpha_i] \neq 0$, which would -```{r, eval = NCRAN} + +```r HT_est <- function(y, X1, Z2, X2 = NULL, Z1 = NULL, time.FE = FALSE) { - + # Create matrix of independent variables X <- cbind(Intercept = 1, do.call(cbind, c(X1, X2, Z1, Z2))) - + # Create instrument matrix: if time.FE, higher-order demean X1 and X2, else normal demeaning - IVS <- cbind(Intercept = 1, do.call(cbind, - c(if(time.FE) fhdwithin(X1, na.rm = FALSE) else fwithin(X1, na.rm = FALSE), + IVS <- cbind(Intercept = 1, do.call(cbind, + c(if(time.FE) fhdwithin(X1, na.rm = FALSE) else fwithin(X1, na.rm = FALSE), if(is.null(X2)) X2 else if(time.FE) fhdwithin(X2, na.rm = FALSE) else fwithin(X2, na.rm = FALSE), Z1, fbetween(X1, na.rm = FALSE)))) - + if(length(IVS) == length(X)) { # The IV estimator case return(drop(solve(crossprod(IVS, X), crossprod(IVS, y)))) } else { # The 2SLS case @@ -878,11 +1728,11 @@ HT_est <- function(y, X1, Z2, X2 = NULL, Z1 = NULL, time.FE = FALSE) { } ``` -The estimator is written in such a way that variables of the type $X_{2it}$ and $Z_{1i}$ are optional, and it also includes an option to also project out time-FE or not. The expected inputs for $X_{1it}$ (`X1`), and $X_{2it}$ (`X2`) are column-subsets of a *pdata.frame*. +The estimator is written in such a way that variables of the type $X_{2it}$ and $Z_{1i}$ are optional, and it also includes an option to also project out time-FE or not. The expected inputs for $X_{1it}$ (`X1`), and $X_{2it}$ (`X2`) are column-subsets of a *pdata.frame*. -Having coded the estimator, it would be good to have an example to run it on. I have tried to squeeze an example out of the `wlddev` data used so far in this vignette. It is quite crappy and suffers from a weak-IV problem, but for there sake of illustration lets do it: +Having coded the estimator, it would be good to have an example to run it on. I have tried to squeeze an example out of the `wlddev` data used so far in this vignette. It is quite crappy and suffers from a weak-IV problem, but for there sake of illustration lets do it: -We want to estimate the panel-regression of life-expectancy on GDP per Capita, ODA received, the GINI index and a time-invariant dummy indicating whether the country is an OECD member. All variables except the dummy enter in logs, so this is an elasticity regression. +We want to estimate the panel-regression of life-expectancy on GDP per Capita, ODA received, the GINI index and a time-invariant dummy indicating whether the country is an OECD member. All variables except the dummy enter in logs, so this is an elasticity regression. @@ -902,70 +1752,131 @@ We want to estimate the panel-regression of life-expectancy on GDP per Capita, O -```{r, warning=FALSE, eval = NCRAN} + +```r dat <- get_vars(wlddev, c("iso3c","year","OECD","PCGDP","LIFEEX","GINI","ODA")) get_vars(dat, 4:7) <- lapply(get_vars(dat, 4:7), log) # Taking logs of the data dat$OECD <- as.numeric(dat$OECD) # Creating OECD dummy dat <- pdata.frame(fdroplevels(na_omit(dat)), # Creating Panel data.frame, after removing missing values index = c("iso3c", "year")) # and dropping unused factor levels pdim(dat) +# Unbalanced Panel: n = 134, T = 1-34, N = 1068 varying(dat) +# year OECD PCGDP LIFEEX GINI ODA +# TRUE FALSE TRUE TRUE TRUE TRUE ``` -Using the GINI index cost a lot of observations and brought the sample size down to 918, but the GINI index will be a key variable in what follows. Clearly the OECD dummy is time-invariant. Below we run Hausman-tests of fixed vs. random effects to determine which covariates might be correlated with the unobserved individual effects, and which model would be most appropriate. +Using the GINI index cost a lot of observations and brought the sample size down to 918, but the GINI index will be a key variable in what follows. Clearly the OECD dummy is time-invariant. Below we run Hausman-tests of fixed vs. random effects to determine which covariates might be correlated with the unobserved individual effects, and which model would be most appropriate. -```{r, eval = NCRAN} + +```r # This tests whether each of the covariates is correlated with alpha_i -phtest(LIFEEX ~ PCGDP, dat) # Likely correlated -phtest(LIFEEX ~ ODA, dat) # Likely correlated +phtest(LIFEEX ~ PCGDP, dat) # Likely correlated +# +# Hausman Test +# +# data: LIFEEX ~ PCGDP +# chisq = 17.495, df = 1, p-value = 2.881e-05 +# alternative hypothesis: one model is inconsistent +phtest(LIFEEX ~ ODA, dat) # Likely correlated +# +# Hausman Test +# +# data: LIFEEX ~ ODA +# chisq = 43.925, df = 1, p-value = 3.413e-11 +# alternative hypothesis: one model is inconsistent phtest(LIFEEX ~ GINI, dat) # Likely not correlated ! +# +# Hausman Test +# +# data: LIFEEX ~ GINI +# chisq = 0.56851, df = 1, p-value = 0.4509 +# alternative hypothesis: one model is inconsistent phtest(LIFEEX ~ PCGDP + ODA + GINI, dat) # Fixed Effects is the appropriate model for this regression +# +# Hausman Test +# +# data: LIFEEX ~ PCGDP + ODA + GINI +# chisq = 24.198, df = 3, p-value = 2.272e-05 +# alternative hypothesis: one model is inconsistent ``` The tests suggest that both GDP per Capita and ODA are correlated with country-specific unobservables affecting life-expectancy, and overall a fixed-effects model would be appropriate. However, the Hausman test on the GINI index fails to reject: Country specific unobservables affecting average life-expectancy are not necessarily correlated with the level of inequality across countries. -Now if we want to include the OECD dummy in the regression, we cannot use fixed-effects as this would wipe-out the dummy as well. If the dummy is uncorrelated with the country-specific unobservables affecting life-expectancy (the $\alpha_i$), then we could use a solution suggested by Mundlak (1978) and simply add between-transformed versions of PCGDP and ODA in the regression (in addition to PCGDP and ODA in levels), and so 'control' for the part of PCGDP and ODA correlated with the $\alpha_i$ (in the IV literature this is known as the control-function approach). If however the OECD dummy is correlated with the $\alpha_i$, then we need to use the Hausman and Taylor (1981) estimator. Below I suggest 2 methods of testing this correlation: +Now if we want to include the OECD dummy in the regression, we cannot use fixed-effects as this would wipe-out the dummy as well. If the dummy is uncorrelated with the country-specific unobservables affecting life-expectancy (the $\alpha_i$), then we could use a solution suggested by Mundlak (1978) and simply add between-transformed versions of PCGDP and ODA in the regression (in addition to PCGDP and ODA in levels), and so 'control' for the part of PCGDP and ODA correlated with the $\alpha_i$ (in the IV literature this is known as the control-function approach). If however the OECD dummy is correlated with the $\alpha_i$, then we need to use the Hausman and Taylor (1981) estimator. Below I suggest 2 methods of testing this correlation: + -```{r, eval = NCRAN} +```r # Testing the correlation between OECD dummy and the Between-transformed Life-Expectancy (i.e. not accounting for other covariates) cor.test(dat$OECD, B(dat$LIFEEX)) # -> Significant correlation of 0.21 - +# +# Pearson's product-moment correlation +# +# data: dat$OECD and B(dat$LIFEEX) +# t = 6.797, df = 1066, p-value = 1.774e-11 +# alternative hypothesis: true correlation is not equal to 0 +# 95 percent confidence interval: +# 0.1456048 0.2606109 +# sample estimates: +# cor +# 0.2038109 + # Getting the fixed-effects (estimates of alpha_i) from the model (i.e. accounting for the other covariates) fe <- fixef(plm(LIFEEX ~ PCGDP + ODA + GINI, dat, model = "within")) mODA <- fmean(dat$ODA, dat$iso3c) # Again testing the correlation cor.test(fe, mODA[match(names(fe), names(mODA))]) # -> Not Significant.. but probably due to small sample size, the correlation is still 0.13 +# +# Pearson's product-moment correlation +# +# data: fe and mODA[match(names(fe), names(mODA))] +# t = 1.1218, df = 132, p-value = 0.264 +# alternative hypothesis: true correlation is not equal to 0 +# 95 percent confidence interval: +# -0.07362567 0.26243949 +# sample estimates: +# cor +# 0.09717608 ``` -I interpret the test results as rejecting the hypothesis that the dummy is uncorrelated with $\alpha_i$, thus we do have a case for Hausman and Taylor (1981) here: the OECD dummy is a $Z_{2i}$ with $E[Z_{2i}\alpha_i]\neq 0$. The Hausman tests above suggested that the GINI index is the only variable uncorrelated with $\alpha_i$, thus GINI is $X_{1it}$ with $E[X_{1it}\alpha_i] = 0$. Finally PCGDP and ODA jointly constitute $X_{2it}$, where the Hausman tests strongly suggested that $E[X_{2it}\alpha_i] \neq 0$. We do not have a $Z_{1i}$ in this setup, i.e. a time-invariant variable uncorrelated with the $\alpha_i$. +I interpret the test results as rejecting the hypothesis that the dummy is uncorrelated with $\alpha_i$, thus we do have a case for Hausman and Taylor (1981) here: the OECD dummy is a $Z_{2i}$ with $E[Z_{2i}\alpha_i]\neq 0$. The Hausman tests above suggested that the GINI index is the only variable uncorrelated with $\alpha_i$, thus GINI is $X_{1it}$ with $E[X_{1it}\alpha_i] = 0$. Finally PCGDP and ODA jointly constitute $X_{2it}$, where the Hausman tests strongly suggested that $E[X_{2it}\alpha_i] \neq 0$. We do not have a $Z_{1i}$ in this setup, i.e. a time-invariant variable uncorrelated with the $\alpha_i$. -The Hausman and Taylor (1981) estimator stipulates that we should instrument the OECD dummy with $X_{1i.}$, the between-transformed GINI index. Let us therefore test the regression of the dummy on this instrument to see of it would be a good (i.e. relevant) instrument: +The Hausman and Taylor (1981) estimator stipulates that we should instrument the OECD dummy with $X_{1i.}$, the between-transformed GINI index. Let us therefore test the regression of the dummy on this instrument to see of it would be a good (i.e. relevant) instrument: -```{r, eval = NCRAN} + +```r # This computes the regression of OECD on the GINI instrument: Weak IV problem !! fFtest(dat$OECD, B(dat$GINI)) - +# R-Sq. DF1 DF2 F-Stat. P-value +# 0.000 1 1066 0.153 0.695 ``` -The 0 R-Squared and the F-Statistic of 0.21 suggest that the instrument is very weak indeed, rubbish to be precise, thus the implementation of the HT estimator below is also a rubbish example, but it is still good for illustration purposes: +The 0 R-Squared and the F-Statistic of 0.21 suggest that the instrument is very weak indeed, rubbish to be precise, thus the implementation of the HT estimator below is also a rubbish example, but it is still good for illustration purposes: + -```{r, eval = NCRAN} -HT_est(y = dat$LIFEEX, - X1 = get_vars(dat, "GINI"), +```r +HT_est(y = dat$LIFEEX, + X1 = get_vars(dat, "GINI"), Z2 = get_vars(dat, "OECD"), - X2 = get_vars(dat, c("PCGDP","ODA"))) + X2 = get_vars(dat, c("PCGDP","ODA"))) +# Intercept GINI PCGDP ODA OECD +# 3.638486969 -0.035596160 0.120981946 0.005744747 -5.862368476 ``` Now a central questions is of course: How computationally efficient is this estimator? Let us try to re-run it on the data generated for the benchmark in Part 1: -```{r, eval=RUNBENCH} + +```r dat <- get_vars(data, c("iso3c","year","OECD","PCGDP","LIFEEX","GINI","ODA")) get_vars(dat, 4:7) <- lapply(get_vars(dat, 4:7), log) # Taking logs of the data dat$OECD <- as.numeric(dat$OECD) # Creating OECD dummy dat <- pdata.frame(fdroplevels(na_omit(dat)), # Creating Panel data.frame, after removing missing values index = c("iso3c", "year")) # and dropping unused factor levels pdim(dat) +# Unbalanced Panel: n = 13400, T = 1-34, N = 106800 varying(dat) +# year OECD PCGDP LIFEEX GINI ODA +# TRUE FALSE TRUE TRUE TRUE TRUE library(microbenchmark) microbenchmark(HT_est = HT_est(y = dat$LIFEEX, # The estimator as before @@ -977,12 +1888,14 @@ microbenchmark(HT_est = HT_est(y = dat$LIFEEX, # The estimator as before Z2 = get_vars(dat, "OECD"), X2 = get_vars(dat, c("PCGDP","ODA")), time.FE = TRUE)) +# Unit: milliseconds +# expr min lq mean median uq max neval +# HT_est 7.919437 8.46937 9.761301 8.869612 9.508597 45.08717 100 +# HT_est_TFE 22.501128 23.18640 25.387041 23.469835 24.490612 85.96462 100 ``` At around 100,000 obs and 13,000 groups in an unbalanced panel, the computation involving 3 grouped centering and 1 grouped averaging task as well as 2 list-to matrix conversions and an IV-procedure took about 10 milliseconds with only individual effects, and about 40 - 45 milliseconds with individual and time-fixed effects (projected out iteratively). This should leave some room for running this on much larger data. -```{r, echo=FALSE} -options(oldopts) -``` + ## References @@ -990,7 +1903,7 @@ Hausman J, Taylor W (1981). “Panel Data and Unobservable Individual Effects. Mundlak, Yair. 1978. “On the Pooling of Time Series and Cross Section Data.” *Econometrica* 46 (1): 69–85. -Cochrane, D. & Orcutt, G. H. (1949). "Application of Least Squares Regression to Relationships Containing Auto-Correlated Error Terms". *Journal of the American Statistical Association.* 44 (245): 32–61. +Cochrane, D. & Orcutt, G. H. (1949). "Application of Least Squares Regression to Relationships Containing Auto-Correlated Error Terms". *Journal of the American Statistical Association.* 44 (245): 32–61. Prais, S. J. & Winsten, C. B. (1954). "Trend Estimators and Serial Correlation". *Cowles Commission Discussion Paper No. 383.* Chicago. diff --git a/vignettes/collapse_and_plm.Rmd.orig b/vignettes/collapse_and_plm.Rmd.orig new file mode 100644 index 00000000..228980d7 --- /dev/null +++ b/vignettes/collapse_and_plm.Rmd.orig @@ -0,0 +1,995 @@ +--- +title: "collapse and plm" +subtitle: "Fast Transformation and Exploration of Panel Data" # utilizing *plm* classes" Advanced and fast +author: "Sebastian Krantz" +date: "2021-06-27" +output: + rmarkdown::html_vignette: + toc: true + +vignette: > + %\VignetteIndexEntry{collapse and plm} + %\VignetteEngine{knitr::rmarkdown} + %\VignetteEncoding{UTF-8} +--- + +```{css, echo=FALSE} +pre { + max-height: 600px; + overflow-y: auto; +} + +pre[class] { + max-height: 600px; +} +``` + +```{r, echo=FALSE} +NCRAN <- identical(Sys.getenv("NCRAN"), "TRUE") +RUNBENCH <- NCRAN && identical(Sys.getenv("RUNBENCH"), "TRUE") + +oldopts <- options(width = 100L) +``` + +```{r, echo = FALSE, message = FALSE, warning=FALSE, eval = NCRAN} +library(data.table) # Keep here becasue of not run options on CRAN +library(microbenchmark) +library(plm) +library(collapse) +fdroplevels <- collapse::fdroplevels +knitr::opts_chunk$set(error = FALSE, message = FALSE, warning = FALSE, + comment = "#", tidy = FALSE, cache = TRUE, collapse = TRUE, + fig.width = 8, fig.height = 5, + out.width = '100%') +lag <- stats::lag +F <- getNamespace("collapse")$F + +set.seed(101) +``` + +This vignette focuses on the integration of *collapse* and the popular *plm* ('Linear Models for Panel Data') package by Yves Croissant, Giovanni Millo and Kevin Tappe. It will demonstrate the utility of the *pseries* and *pdata.frame* classes introduced in *plm* together with the corresponding methods for fast *collapse* functions (implemented in C or C++), to extend and facilitate extremely fast computations on panel-vectors and panel data frames (20-100 times faster than native *plm*). The *collapse* package should enable R programmers to - with very little effort - write high-performance code in the domain of panel data exploration and panel data econometrics. + + + +*** +**Notes:** + +- To learn more about *collapse*, see the 'Introduction to *collapse*' vignette or the built-in structured documentation available under `help("collapse-documentation")` after installing the package. In addition `help("collapse-package")` provides a compact set of examples for quick-start. + +- Documentation and vignettes can also be viewed [online](). + +*** + +The vignette is structured as follows: + +* **Part 1** introduces *collapse*'s fast functions and associated *transformation operators* to compute various transformations on panel data, and delivers some benchmarks. + +* **Part 2** uses these functions to explore panel data a bit and introduce additional functions for summary statistics, panel-autocorrelations and testing fixed effects. + +* **Part 3** finally provides an example programming application by coding a slightly extended and very efficient Hausman and Taylor (1981) estimator. + +For this vignette we will use a dataset (`wlddev`) supplied with *collapse* containing a panel of 5 key development indicators taken from the World Bank Development Indicators Database: + +```{r, eval = NCRAN} +library(collapse) + +head(wlddev) + +fnobs(wlddev) # This column-wise counts the number of observations + +fndistinct(wlddev) # This counts the number of distinct values +``` + +## Part 1: Fast Transformation of Panel Data + +First let us convert this data to a *plm* panel data.frame (class *pdata.frame*): + +```{r, eval = NCRAN} +library(plm) + +# This creates a panel data frame +pwlddev <- pdata.frame(wlddev, index = c("iso3c", "year")) + +str(pwlddev, give.attr = FALSE) + +# A pdata.frame has an index attribute attached [retrieved using index(pwlddev) or attr(pwlddev, "index")] +str(index(pwlddev)) + +# This shows the individual and time dimensions +pdim(pwlddev) + +``` + + + +A `plm::pdata.frame` is a data.frame with panel identifiers attached as a list of factors in an *index* attribute (non-factor index variables are converted to factor). Each column in that data.frame is a Panel Series (`plm::pseries`), which also has the panel identifiers attached: + +```{r, eval = NCRAN} +# Panel Series of GDP per Capita and Life-Expectancy at Birth +PCGDP <- pwlddev$PCGDP +LIFEEX <- pwlddev$LIFEEX +str(LIFEEX) +``` + +Now that we have explored the basic data structures provided in the *plm* package, let's compute some transformations on them: + +### 1.1 Between and Within Transformations + +The functions `fbetween` and `fbetween` can be used to compute efficient between and within transformations on panel vectors and panel data.frames: + +```{r, eval = NCRAN} +# Between-Transformations +head(fbetween(LIFEEX)) # Between individual (default) + +head(fbetween(LIFEEX, effect = "year")) # Between time + +# Within-Transformations +head(fwithin(LIFEEX)) # Within individuals (default) + +head(fwithin(LIFEEX, effect = "year")) # Within time +``` + +by default `na.rm = TRUE` thus both functions skip (preserve) missing values in the data (which is the default for all *collapse* functions). For `fbetween` the output behavior can be altered with the option `fill`: Setting `fill = TRUE` will compute the group-means on the complete cases in each group (as long as `na.rm = TRUE`), but replace all values in each group with the group mean (hence overwriting or 'filling up' missing values): + +```{r, eval = NCRAN} +# This preserves missing values in the output +head(fbetween(PCGDP), 30) + +# This replaces all individuals with the group mean +head(fbetween(PCGDP, fill = TRUE), 30) +``` + +In `fwithin` the `mean` argument allows to set an arbitrary data mean (different from 0) after the data is centered. In grouped centering task, as sensible choice for such an added mean would be the overall mean of the data series, enabled by the option `mean = "overall.mean"`. This will add the overall mean of the series back to the data after subtracting out group means, and thus preserve the level of the data (and will only change the intercept when employed in a regression): + +```{r, eval = NCRAN} +# This performed standard grouped centering +head(fwithin(LIFEEX)) + +# This adds the overall average Life-Expectancy (across countries) to the country-demeaned series +head(fwithin(LIFEEX, mean = "overall.mean")) +``` + +`fbetween` and `fwithin` can also be applied to *pdata.frame*'s where they will perform these computations variable by variable: + +```{r, eval = NCRAN} +head(fbetween(num_vars(pwlddev)), 3) + +head(fbetween(num_vars(pwlddev), fill = TRUE), 3) + +head(fwithin(num_vars(pwlddev)), 3) + +head(fwithin(num_vars(pwlddev), mean = "overall.mean"), 3) +``` + +Now next to `fbetween` and `fwithin` there also exist short versions `B` and `W`, which are referred to as *transformation operators*. These are essentially wrappers around `fbetween` and `fwithin` and provide the same functionality, but are more parsimonious to employ in regression formulas and also offer additional features when applied to panel data.frames. For panel series, `B` and `W` are exact analogues to `fbetween` and `fwithin`, just under a shorter name: + +```{r, eval = NCRAN} +identical(fbetween(PCGDP), B(PCGDP)) +identical(fbetween(PCGDP, fill = TRUE), B(PCGDP, fill = TRUE)) +identical(fwithin(PCGDP), W(PCGDP)) +identical(fwithin(PCGDP, mean = "overall.mean"), W(PCGDP, mean = "overall.mean")) +``` + +When applied to panel data.frames, `B` and `W` offer some additional utility by (a) allowing you to select columns to transform using the `cols` argument (default is `cols = is.numeric`, so by default all numeric columns will be selected for transformation), (b) allowing you to add a prefix to the transformed columns with the `stub` argument (default is `stub = "B."` for `B` and `stub = "W."` for `W`) and (c) preserving the panel-id's with the `keep.ids` argument (default `keep.ids = TRUE`): + +```{r, eval = NCRAN} +head(B(pwlddev), 3) + +head(W(pwlddev, cols = 9:12), 3) # Here using the cols argument +``` + + + +`fbetween` / `B` and `fwithin` / `W` also support weighted computations. This of course applies more to panel-survey settings, but for the sake of illustration suppose we wanted to weight our between and within transformations by the population of these countries: + +```{r, eval = NCRAN} +# This replaces values by the POP-weighted group mean and also preserves the weight variable (POP, argument keep.w = TRUE) +head(B(pwlddev, w = ~ POP), 3) + +# This centers values on the POP-weighted group mean +head(W(pwlddev, w = ~ POP, cols = c("PCGDP","LIFEEX","GINI")), 3) + +# This centers values on the POP-weighted group mean and also adds the overall POP-weighted mean of the data +head(W(pwlddev, w = ~ POP, cols = c("PCGDP","LIFEEX","GINI"), mean = "overall.mean"), 3) +``` + +As shown above, with `B` and `W` the weight column can also be passed as a formula or character string, whereas `fbetween` and `fwithin` require the all inputs to be passed directly in terms of data (i.e. `fbetween(get_vars(pwlddev, 9:11), w = pwlddev$POP)`), and the weight vector or id columns are never preserved in the output. Therefore in most applications `B` and `W` are probably more convenient for quick use, whereas `fbetween` and `fwithin` are the preferred programmers choice, also because they have a little less R-overhead which makes them a tiny bit faster. + +### 1.2 Higher-Dimensional Between and Within Transformations + +Analogous to `fbetween` / `B` and `fwithin` / `W`, *collapse* provides a duo of functions and operators `fhdbetween` / `HDB` and `fhdwithin` / `HDW` to efficiently average and center data on multiple groups. The credit herefore goes to Laurent Berge, the author of the *fixest* package who wrote an efficient C-implementation of the alternating-projections algorithm to perform this task. `fhdbetween` / `HDB` and `fhdwithin` / `HDW` enrich this implementation (available in the function `fixest::demean`) by providing more options regarding missing values, and also allowing continuous covariates and (full) interactions to be projected out alongside factors. The methods for *pseries* and *pdata.frame*'s are however rather simple, as they simply simultaneously center panel-vectors on various panel-identifiers in the index (which can be more than 2, the default is to center on all identifiers): + +```{r, eval = NCRAN} +# This simultaneously averages Life-Expectancy across countries and years +head(HDB(LIFEEX)) # (same as running a regression on country and year dummies and taking the fitted values) + +# This simultaneously centers Life-Expectenacy on countries and years +head(HDW(LIFEEX)) # (same as running a regression on country and year dummies and taking the residuals) +``` + +The architecture of `fhdbetween` / `HDB` and `fhdwithin` / `HDW` differs a bit from `fbetween` / `B` and `fwithin` / `W`. This is essentially a consequence of the underlying C++-implementation (accessed through `fixest::demean`), which was not built to accommodate missing values. `fhdbetween` / `HDB` and `fhdwithin` / `HDW` therefore both have an argument `fill = TRUE` (the default), which stipulates that missing values in the data are preserved in the output. The *collapse* default `na.rm = TRUE` again ensures that only complete cases are used for the computation: + +```{r, eval = NCRAN} +# Missing values are preserved in the output when fill = TRUE (the default) +head(HDB(PCGDP), 30) + +# When fill = FALSE, only the complete cases are returned +nofill <- HDB(PCGDP, fill = FALSE) +head(nofill, 30) + +# This results in a shorter panel-vector +length(nofill) +length(PCGDP) + +# The cases that were missing and removed from the output are available as an attribute +head(attr(nofill, "na.rm"), 30) +``` + +In the *pdata.frame* methods there are 3 different choices how to deal with missing values. The default for the *plm* classes in `variable.wise = TRUE`, which will essentially sequentially apply `fhdbetween.pseries` and `fhdwithin.pseries` (with the default `fill = TRUE`) to all columns. This is the same behavior as in `fbetween` / `B` and `fwithin` / `W`, which also consider the column-wise complete obs: + +```{r, eval = NCRAN} +# This column-wise centers the data on countries and years +tail(HDW(pwlddev), 10) +``` + +If `variable.wise = FALSE`, `fhdbetween` / `HDB` and `fhdwithin` / `HDW` will only consider the complete cases in the dataset, but still return a dataset of the same dimensions (as long as `fill = TRUE`), resulting in some rows all-missing: + +```{r, eval = NCRAN} +# This centers the complete cases of the data data on countries and years and keeps missing cases +tail(HDW(pwlddev, variable.wise = FALSE), 10) +``` + +Finally, if also `fill = FALSE`, the behavior is the same as in the *pseries* method: Missing cases are removed from the data: + +```{r, eval = NCRAN} +# This centers the complete cases of the data data on countries and years, and removes missing cases +res <- HDW(pwlddev, fill = FALSE) +tail(res, 10) + +tail(attr(res, "na.rm")) +``` + + + + + + + +*Notes: * (1) Because of the different missing case options and associated challenges, panel-identifiers are not preserved in `HDB` and `HDW`. (2) The default `variable.wise = TRUE` and `fill = TRUE` was only set for the *pseries* and *pdata.frame* methods, to harmonize the default implementations with `fbetween` / `B` and `fwithin` / `W` for these classes. In the standard *default*, *matrix* and *data.frame* methods, the defaults are `variable.wise = FALSE` and `fill = FALSE` (i.e. missing cases are removed beforehand), which is generally more efficient. + + +### 1.3 Scaling and Centering + +Next to the above functions for grouped centering and averaging, the function / operator pair `fscale` / `STD` can be used to efficiently standardize (i.e. scale and center) panel data along an arbitrary dimension. The architecture is identical to that of `fwithin` / `W` or `fbetween` / `B`. + +```{r, eval = NCRAN} +# This standardizes GDP per capita in each country +STD_PCGDP <- STD(PCGDP) + +# Checks: +head(fmean(STD_PCGDP, index(STD_PCGDP, 1))) +head(fsd(STD_PCGDP, index(STD_PCGDP, 1))) + +# This standardizes GDP per capita in each year +STD_PCGDP_T <- STD(PCGDP, effect = "year") + +# Checks: +head(fmean(STD_PCGDP_T, index(STD_PCGDP_T, 2))) +head(fsd(STD_PCGDP_T, index(STD_PCGDP_T, 2))) +``` + +And similarly for *pdata.frame*'s: + +```{r, eval = NCRAN} +head(STD(pwlddev, cols = 9:12)) + +head(STD(pwlddev, cols = 9:12, effect = "year")) +``` + +More customized scaling can be done with the help of the `mean` and `sd` arguments to `fscale` / `STD`. By default `mean = 0` and `sd = 1`, but these could be assigned any numeric values: + +```{r, eval = NCRAN} +# This will scale the data such that mean mean within each country is 5 and the standard deviation is 3 +qsu(fscale(pwlddev$PCGDP, mean = 5, sd = 3)) +``` +Even further customization (i.e. setting means and standard deviations for each group and / or each column) can of course be achieved by calling `collapse::TRA` on the result of `fscale` to sweep out an appropriate set of means and standard deviations. + +Scaling without centering can be done with the option `mean = FALSE`. This will also preserve the mean of the data overall and within each group: +```{r, eval = NCRAN} +# Scaling without centering: Mean preserving with fscale / STD +qsu(fscale(pwlddev$PCGDP, mean = FALSE, sd = 3)) + +# Scaling without centering can also be done using fsd, but this does not preserve the mean +qsu(fsd(pwlddev$PCGDP, index(pwlddev, 1), TRA = "/")) + +``` + + + +Finally a special kind of data harmonization in the first two moments can be done by setting `mean = "overall.mean"` and `sd = "within.sd"` in a grouped scaling task. This will harmonize the data across groups such that the mean of each group is equal to the overall data mean and the standard deviation equal to the within standard deviation (= the standard deviation calculated on the group-centered series): + +```{r, eval = NCRAN} +fmean(pwlddev$PCGDP) # Overall mean +fsd(W(pwlddev$PCGDP)) # Within sd + +# Scaling and centerin such that the mean of each country is the overall mean, and the sd of each country is the within sd +qsu(fscale(pwlddev$PCGDP, mean = "overall.mean", sd = "within.sd")) +``` + +All of this seamlessly generalizes to weighted scaling an centering, using the `w` argument to add a weight vector. + +### 1.4 Panel Lags / Leads, Differences and Growth Rates + + +With `flag` / `L` / `F`, `fdiff` / `D` and `fgrowth` / `G`, *collapse* provides a fast and comprehensive C++ based solution to the computation of (sequences of) lags / leads and (sequences of) lagged / leaded and suitably iterated (quasi-, log-) differences and growth rates on panel data. The *pseries* and *pdata.frame* methods to these functions and associated *transformation operators* use the panel-identifiers in the 'index' attached to these objects (where the last variable in the 'index' is taken as the time-variable and the variables before that are taken as individual identifiers) to perform fast fully-identified time-dependent operations on panel data, without the need of sorting the data. + + + + +With `flag` / `L` / `F`, it is easy to lag or lead *pseries*: + +```{r, eval = NCRAN} +# A panel-lag +head(flag(LIFEEX)) + +# A panel-lead +head(flag(LIFEEX, -1)) + +# The lag and lead operators are even more parsimonious to employ: +all_identical(L(LIFEEX), flag(LIFEEX), lag(LIFEEX)) +all_identical(F(LIFEEX), flag(LIFEEX, -1), lead(LIFEEX)) +``` + +It is also possible to compute a sequence of lags / leads using `flag` or one of the operators: + +```{r, eval = NCRAN} +# sequence of panel- lags and leads +head(flag(LIFEEX, -1:3)) + +all_identical(L(LIFEEX, -1:3), F(LIFEEX, 1:-3), flag(LIFEEX, -1:3)) + +# The native plm implementation also returns a matrix of lags but with different column names +head(lag(LIFEEX, -1:3), 4) + +``` + + + + +Of course the lag orders may be unevenly spaced, i.e. `L(x, -1:3*12)` would compute seasonal lags on monthly data. On *pdata.frame*'s, the effects of `flag` and `L` / `F` differ insofar that `flag` will just lag the entire dataset without preserving identifiers (although the index attribute is always preserved), whereas `L` / `F` by default (`cols = is.numeric`) select the numeric variables and add the panel-id's on the left (default `keep.ids = TRUE`): + +```{r, eval = NCRAN} +# This lags the entire data +head(flag(pwlddev)) + +# This lags only numeric columns and preserves panel-id's +head(L(pwlddev)) + +# This lags only columns 9 through 12 and preserves panel-id's +head(L(pwlddev, cols = 9:12)) +``` + +We can also easily compute a sequence of lags / leads on a panel data.frame: + +```{r, eval = NCRAN} +# This lags only columns 9 through 12 and preserves panel-id's +head(L(pwlddev, -1:3, cols = 9:12)) +``` + +Essentially the same functionality applies to `fdiff` / `D` and `fgrowth` / `G`, with the main differences that these functions also have a `diff` argument to determine the number of iterations: + +```{r, eval = NCRAN} +# Panel-difference of Life Expectancy +head(fdiff(LIFEEX)) + +# Second panel-difference +head(fdiff(LIFEEX, diff = 2)) + +# Panel-growth rate of Life Expectancy +head(fgrowth(LIFEEX)) + +# Growth rate of growth rate of Life Expectancy +head(fgrowth(LIFEEX, diff = 2)) + +identical(D(LIFEEX), fdiff(LIFEEX)) +identical(G(LIFEEX), fgrowth(LIFEEX)) +identical(fdiff(LIFEEX), diff(LIFEEX)) # Same as plm::diff.pseries (which does not compute iterated panel-differences) +``` + +By default, growth rates are calculated in percentage terms which is set by the default argument `scale = 100`. It is also possible to compute log-differences with `fdiff(.., log = TRUE)` or the `Dlog` operator, and growth rates in percentage terms based on log-differences using `fgrowth(.., logdiff = TRUE)`. + + + +```{r, eval = NCRAN} +# Panel log-difference of Life Expectancy +head(Dlog(LIFEEX)) + +# Panel log-difference growth rate (in percentage terms) of Life Expectancy +head(G(LIFEEX, logdiff = TRUE)) +``` + +It is also possible to compute sequences of lagged / leaded and iterated differences, log-differences and growth rates: + +```{r, eval = NCRAN} +# first and second forward-difference and first and second difference of lags 1-3 of Life-Expectancy +head(D(LIFEEX, -1:3, 1:2)) + +# Same with Log-differences +head(Dlog(LIFEEX, -1:3, 1:2)) + +# Same with (exact) growth rates +head(G(LIFEEX, -1:3, 1:2)) +``` + +A further possibility is to compute quasi-differences and quasi-log-differences of the form $x_t - \rho x_{t-s}$ or $log(x_t) - \rho log(x_{t-s})$. These are useful for panel-regressions suffering from serial-correlation, following Cochrane & Orcutt (1949), and can be specified with the `rho` argument to `fdiff`, `D` and `Dlog`. + +```{r, eval = NCRAN} +# Regression of GDP on Life Expectance with country and time FE +mod <- lm(PCGDP ~ LIFEEX, data = fhdwithin(fselect(pwlddev, PCGDP, LIFEEX), fill = FALSE)) +mod + +# Computing autocorrelation of residuals +r <- residuals(mod) +r <- pwcor(r, L(r, 1, substr(names(r), 1, 3))) # Need this to compute a panel-lag +r + +# Running the regression again quasi-differencing the transformed data +modCO <- lm(PCGDP ~ LIFEEX, data = fdiff(fhdwithin(fselect(pwlddev, PCGDP, LIFEEX), variable.wise = FALSE), rho = r, stubs = FALSE)) +modCO + +# In this case rho is almost 1, so we might as well just difference the untransformed data and go with that +# We also need to bootstrap this for proper standard errors. +``` + + +A final important advantage of the *collapse* functions is that the panel-identifiers are preserved, even if a matrix of lags / leads / differences or growth rates is returned. This allows for nested panel-computations, for example we can compute shifted sequences of lagged / leaded and iterated panel differences: + +```{r, eval = NCRAN} +# Sequence of differneces (same as above), adding one extra lag of the whole sequence +head(L(D(LIFEEX, -1:3, 1:2), 0:1)) + +``` + +All of this naturally generalized to computations on *pdata.frames*: + +```{r, eval = NCRAN} +head(D(pwlddev, -1:3, 1:2, cols = 9:10), 3) + +head(L(D(pwlddev, -1:3, 1:2, cols = 9:10), 0:1), 3) +``` + +### 1.5 Panel Data to Array Conversions + +Viewing and transforming panel data stored in an array can be a powerful strategy, especially as it provides much more direct access to the different dimensions of the data. The function `psmat` can be used to efficiently transform *pseries* to a 2D matrix, and *pdata.frame*'s to a 3D array: + +```{r, eval = NCRAN} +# Converting the panel series to array, individual rows (default) +str(psmat(LIFEEX)) + +# Converting the panel series to array, individual columns +str(psmat(LIFEEX, transpose = TRUE)) + +# Same as plm::as.matrix.pseries, apart from attributes +identical(unattrib(psmat(LIFEEX)), + unattrib(as.matrix(LIFEEX))) +identical(unattrib(psmat(LIFEEX, transpose = TRUE)), + unattrib(as.matrix(LIFEEX, idbyrow = FALSE))) +``` + +Applying `psmat` to a *pdata.frame* yields a 3D array: + +```{r, eval = NCRAN} +psar <- psmat(pwlddev, cols = 9:12) +str(psar) + +str(psmat(pwlddev, cols = 9:12, transpose = TRUE)) +``` + +This format can be very convenient to quickly and freely access data for different countries, variables and time-periods: + +```{r, eval = NCRAN} +# Looking at wealth, health and inequality in Brazil and Argentinia, 1990-1999 +aperm(psar[c("BRA","ARG"), as.character(1990:1999), c("PCGDP", "LIFEEX", "GINI")]) +``` + +`psmat` can also return the output as a list of panel series matrices: + +```{r, eval = NCRAN} +pslist <- psmat(pwlddev, cols = 9:12, array = FALSE) +str(pslist) +``` + +This list can then be unlisted using the function `unlist2d` (for unlisting in 2-dimensions), to yield a reshaped data.frame: +```{r, eval = NCRAN} +head(unlist2d(pslist, idcols = "Variable", row.names = "Country Code"), 3) +``` + +Of course we could also have applied some transformation (like computing pairwise correlations) to each matrix before unlisting. In any case this kind of programming provides lots of possibilities to explore and manipulate panel data (as we will see in Part 2). + +### Benchmarks + +Below benchmarks are provided of the *collapse* implementation against native *plm*. To do this the dataset used so far is extended to have approx 1 million observations: + +```{r, eval=RUNBENCH} +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) +``` + +The data has 21600 individuals (countries) observed for up to 61 years (1960-2020), the total number of rows is 1317600. We can pull out a series of life expectancy and run some benchmarks. The Windows laptop on which these benchmarks were run has a 2x 2.2 GHZ Intel i5 processor, 8GB DDR3 RAM and a Samsung SSD hard drive. + +```{r, eval=RUNBENCH} +library(microbenchmark) +# Creating the extended panel series for Life Expectancy (l for large) +LIFEEX_l <- data$LIFEEX +str(LIFEEX_l) + +# Between Transformations +microbenchmark(Between(LIFEEX_l, na.rm = TRUE), times = 10) +microbenchmark(fbetween(LIFEEX_l), times = 10) + +# Within Transformations +microbenchmark(Within(LIFEEX_l, na.rm = TRUE), times = 10) +microbenchmark(fwithin(LIFEEX_l), times = 10) + +# Higher-Dimenional Between and Within Transformations +microbenchmark(fhdbetween(LIFEEX_l), times = 10) +microbenchmark(fhdwithin(LIFEEX_l), times = 10) + +# Single Lag +microbenchmark(lag(LIFEEX_l), times = 10) +microbenchmark(flag(LIFEEX_l), times = 10) + +# Sequence of Lags / Leads +microbenchmark(lag(LIFEEX_l, -1:3), times = 10) +microbenchmark(flag(LIFEEX_l, -1:3), times = 10) + +# Single difference +microbenchmark(diff(LIFEEX_l), times = 10) +microbenchmark(fdiff(LIFEEX_l), times = 10) + +# Iterated Difference +microbenchmark(fdiff(LIFEEX_l, diff = 2), times = 10) + +# Sequence of Lagged / Leaded and iterated differences +microbenchmark(fdiff(LIFEEX_l, -1:3, 1:2), times = 10) + +# Single Growth Rate +microbenchmark(fgrowth(LIFEEX_l), times = 10) + +# Single Log-Difference +microbenchmark(fdiff(LIFEEX_l, log = TRUE), times = 10) + +# Panel Series to Matrix Conversion +# system.time(as.matrix(LIFEEX_l)) This takes about 3 minutes to compute +microbenchmark(psmat(LIFEEX_l), times = 10) +``` + + + +This shows a comparison between flag and *data.table*'s shift: + +```{r, eval=RUNBENCH} +microbenchmark(L(data, cols = 3:6), times = 10) +library(data.table) +setDT(data) +# 'Improper' panel-lag +microbenchmark(data[, shift(.SD), by = iso3c, .SDcols = 3:6], times = 10) + +# This does what L is actually doing (without sorting the data) +microbenchmark(data[order(year), shift(.SD), by = iso3c, .SDcols = 3:6], times = 10) +``` + +The above dataset has 1 million obs in 20 thousand groups, but what about 10 million obs and 1 million groups? Do *collapse* functions scale efficiently as data and the number of groups grows large? Here is a simple benchmark: + +```{r, eval=RUNBENCH} +x <- rnorm(1e7) # 10 million obs +g <- qF(rep(1:1e6, each = 10), na.exclude = FALSE) # 1 million individuals +t <- qF(rep(1:10, 1e6), na.exclude = FALSE) # 10 time-periods per individual + +microbenchmark(fbetween(x, g), times = 10) +microbenchmark(fwithin(x, g), times = 10) +microbenchmark(flag(x, 1, g, t), times = 10) +microbenchmark(flag(x, -1:1, g, t), times = 10) +microbenchmark(fdiff(x, 1, 1, g, t), times = 10) +microbenchmark(fdiff(x, 1, 2, g, t), times = 10) +microbenchmark(fdiff(x, -1:1, 1:2, g, t), times = 10) +``` + +The results show that *collapse* functions perform very well even as the number of groups grows large. + + + +The conclusion of this benchmark analysis is that *collapse*'s fast functions, with or without the help of *plm* classes, allow for very fast transformations of panel data, and should enable R programmers and econometricians to implement high-performance panel data estimators without having to dive into C/C++ themselves or resorting to *data.table* metaprogramming. + +## Part 2: Fast Exploration of Panel Data + +*collapse* also provides some essential functions to summarize and explore panel data, such as a fast check of variation over different dimensions, fast summary-statistics for panel data, panel-auto, partial-auto and cross-correlation functions, and a fast F-test to test fixed effects and other exclusion restrictions on (large) panel data models. Panel data to matrix conversion further allows the application of some correlational and unsupervised learning tools such as PCA, clustering or dynamic factor analysis. + +### 2.1 Variation Check for Panel Data + +The function `varying` can be used to check over which panel-dimensions different variable have variation. When passed a *pdata.frame*, `varying` by default takes the first identifier and checks for variation *within* that dimension. + +```{r, eval = NCRAN} +# This checks for any variation within "iso3c", the first index variable: TRUE means data vary within country i.e. over time. +varying(pwlddev) +``` +Alternatively any index variable or combination of index variables can be specified: + +```{r, eval = NCRAN} +# This checks any variation within time variable, i.e. cross-sectional variation. +varying(pwlddev, effect = "year") +``` +Another possibility is checking for variation within each group: + +```{r, eval = NCRAN} +# This checks cross-sectional variation within each year for 4 indicators. +head(varying(pwlddev, effect = "year", cols = 9:12, any_group = FALSE)) +``` + +`varying` also has a pseries method. The code below checks for time-variation of the GINI index within each country. A `NA` is returned when there are no observations within a particular country. + +```{r, eval = NCRAN} +head(varying(pwlddev$GINI, any_group = FALSE), 20) +``` + +If we would like to gave more information about this variation, we could also invoke the functions `fndistinct` and `fsd`, which do not have *pseries* methods: + +```{r, eval = NCRAN} +head(fndistinct(pwlddev$GINI, index(pwlddev, "iso3c")), 20) + +head(round(fsd(pwlddev$GINI, index(pwlddev, "iso3c")), 2), 20) +``` + +### 2.2 Summary Statistics for Panel Data + +Efficient summary statistics for panel data have long been implemented in other statistical softwares. The command `qsu`, shorthand for 'quick-summary', is a very efficient summary statistics command inspired by the *xtsummarize* command in the Stata statistical software. It computes a default set of 5 statistics (N, mean, sd, min and max) and can also computed higher moments (skewness and kurtosis) in a single pass through the data (using a numerically stable online algorithm generalized from Welford's Algorithm for variance computations). With panel data, `qsu` computes these statistics not just on the raw data, but also on the between-transformed and within-transformed data: + +```{r, eval = NCRAN} +qsu(pwlddev, cols = 9:12, higher = TRUE) +``` + +Key statistics to look at in this summary are the sample size and the standard-deviation decomposed into the between-individuals and the within-individuals standard-deviation: For GDP per Capita we have 8995 observations in the panel series for 203 countries, with on average 44.31 observations (time-periods T) per country. The between-country standard deviation is 19600 USD, around 3-times larger than the within-country (over-time) standard deviation of 6300 USD. Regarding the mean, the between-mean, computed as a cross-sectional average of country averages, usually differs slightly from the overall average taken across all data points. The within-transformed data is computed and summarized with the overall mean added back (i.e. as in `fwithin(PCGDP, mean = "overall.mean")`). + +We can also do groupwise panel-statistics and `qsu` also supports weights (not shown): + +```{r, eval = NCRAN} +qsu(pwlddev, ~ income, cols = 9:12, higher = TRUE) +``` + +Here it should be noted that any grouping is applied independently from the data-transformation, i.e. the data is first transformed, and then grouped statistics are calculated on the transformed data. The computation of statistics is very efficient: + +```{r, eval=RUNBENCH} +qsu(LIFEEX_l) + +microbenchmark(qsu(LIFEEX_l)) +``` + +Using the transformation functions and the functions `pwcor` and `pwcov`, we can also easily explore the correlation structure of the data: + +```{r, eval = NCRAN} +# Overall pairwise correlations with pairwise observation count and significance testing (* = significant at 5% level) +pwcor(get_vars(pwlddev, 9:12), N = TRUE, P = TRUE) + +# Between correlations +pwcor(fmean(get_vars(pwlddev, 9:12), pwlddev$iso3c), N = TRUE, P = TRUE) + +# Within correlations +pwcor(W(pwlddev, cols = 9:12, keep.ids = FALSE), N = TRUE, P = TRUE) +``` + +The correlations show that the between (cross-country) relationships of these macro-variables are quite strong, but within countries the relationships are much weaker, for example there seems to be no significant relationship between GDP per Capita and either inequality or ODA received within countries over time. + +### 2.3 Exploring Panel Data in Matrix / Array Form + +We can take a single panel series such as GDP per Capita and explore it further: + + +```{r PLMGDPmat, eval = NCRAN} +# Generating a (transposed) matrix of country GDPs per capita +tGDPmat <- psmat(PCGDP, transpose = TRUE) +tGDPmat[1:10, 1:10] + +# plot the matrix (it will plot correctly no matter how the matrix is transposed) +plot(tGDPmat, main = "GDP per Capita") + +# Taking series with more than 20 observation +suffsamp <- tGDPmat[, fnobs(tGDPmat) > 20] + +# Minimum pairwise observations between any two series: +min(pwnobs(suffsamp)) + +# We can use the pairwise-correlations of the annual growth rates to hierarchically cluster the economies: +plot(hclust(as.dist(1-pwcor(G(suffsamp))))) + +# Finally we could do PCA on the growth rates: +eig <- eigen(pwcor(G(suffsamp))) +plot(seq_col(suffsamp), eig$values/sum(eig$values)*100, xlab = "Number of Principal Components", ylab = "% Variance Explained", main = "Screeplot") + +``` + +There is also a nice plot-method applied to panel series arrays returned when `psmat` is applied to a panel data.frame: + +```{r pwlddev_plot, fig.height=8, eval = NCRAN} +plot(psmat(pwlddev, cols = 9:12), legend = TRUE) +``` + + + + + + + +Above we have explored the cross-sectional relationship between the different national GDP series. Now we explore the time-dependence of the panel-vectors as a whole: + +### 2.4 Panel- Auto-, Partial-Auto and Cross-Correlation Functions + +The functions `psacf`, `pspacf` and `psccf` mimic `stats::acf`, `stats::pacf` and `stats::ccf` for panel-vectors and panel data.frames. Below we compute the panel series autocorrelation function of the data: + +```{r plm_psacf, eval = NCRAN} +psacf(pwlddev, cols = 9:12) +``` + +The computation is conducted by first scaling and centering (i.e. standardizing) the panel-vectors by groups (using `fscale`, default argument `gscale = TRUE`), and then taking the covariance of each series with a matrix of properly computed panel-lags of itself (using `flag`), and dividing that by the variance of the overall series (using `fvar`). + +In a similar way we can compute the Partial-ACF (using a multivariate Yule-Walker decomposition on the ACF, as in `stats::pacf`), + +```{r plm_pspacf, eval = NCRAN} +pspacf(pwlddev, cols = 9:12) +``` + +and the panel-cross-correlation function between GDP per capita and life expectancy (which is already contained in the ACF plot above): + +```{r plm_psccf, eval = NCRAN} +psccf(PCGDP, LIFEEX) +``` + +### 2.5 Testing for Individual Specific and Time-Effects + +As a final step of exploration, we could analyze our series and simple models for the significance and explanatory power of individual or time-fixed effects, without going all the way to running a Hausman Test of fixed vs. random effects on a fully specified model. The main function here is `fFtest` which efficiently computes a fast R-Squared based F-test of exclusion restrictions on models potentially involving many factors. By default (argument `full.df = TRUE`) the degrees of freedom of the test are adjusted to make it identical to the F-statistic from regressing the series on a set of country and time dummies^[In fact factors are projected out using `fixest::demean` and no regression is run at all]. + +```{r, eval = NCRAN} +# Testing GDP per Capita +fFtest(PCGDP, index(PCGDP)) # Testing individual and time-fixed effects +fFtest(PCGDP, index(PCGDP, 1)) # Testing individual effects +fFtest(PCGDP, index(PCGDP, 2)) # Testing time effects + +# Same for Life-Expectancy +fFtest(LIFEEX, index(LIFEEX)) # Testing individual and time-fixed effects +fFtest(LIFEEX, index(LIFEEX, 1)) # Testing individual effects +fFtest(LIFEEX, index(LIFEEX, 2)) # Testing time effects + +``` +Below we test the correlation between the country and time-means of GDP and Life-Expectancy: +```{r, eval = NCRAN} +cor.test(B(PCGDP), B(LIFEEX)) # Testing correlation of country means + +cor.test(B(PCGDP, effect = 2), B(LIFEEX, effect = 2)) # Same for time-means +``` + +We can also test for the significance of individual and time-fixed effects (or both) in the regression of GDP on life expectancy and ODA received: + +```{r, eval = NCRAN} +fFtest(PCGDP, index(PCGDP), get_vars(pwlddev, c("LIFEEX","ODA"))) # Testing individual and time-fixed effects +fFtest(PCGDP, index(PCGDP, 2), get_vars(pwlddev, c("iso3c","LIFEEX","ODA"))) # Testing time-fixed effects +``` + +As can be expected in this cross-country data, individual and time-fixed effects play a large role in explaining the data, and these effects are correlated across series, suggesting that a fixed-effects model with both types of fixed-effects would be appropriate. To round things off, below we compute the Hausman test of Fixed vs. Random effects, which confirms this conclusion: + +```{r, eval = NCRAN} +phtest(PCGDP ~ LIFEEX, data = pwlddev) +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Part 3: Programming Panel Data Estimators + +A central goal of the *collapse* package is to facilitate advanced and fast programming with data. A primary field of application for the fast functions introduced above is to program efficient panel data estimators. In this section we walk through a short example of how this can be done. The application will be an implementation of the Hausman and Taylor (1981) estimator, considering a more general case than currently implemented in the *plm* package. + +In Hausman and Taylor (1981), in a more general scenario, we have a linear panel-model of the form $$y_{it} = \beta_1X_{1it} + \beta_2X_{2it} + \beta_3Z_{1i} + \beta_4Z_{2i} + \alpha_i + \gamma_t + \epsilon$$ where $\alpha_i$ denotes unobserved individual specific effects and $\gamma_t$ denotes unobserved global events. This model has up to 4 kinds of covariates: + +* Time-Varying covariates $X_{1it}$ that are uncorrelated with the individual specific effect $\alpha_i$, such that $E[X_{1it}\alpha_i] = 0$. It may be the case that $E[X_{1it}\gamma_t] \neq 0$ + +* Time-Varying covariates $X_{2it}$ with $E[X_{2it}\alpha_i] \neq 0$ and possibly $E[X_{2it}\gamma_t] \neq 0$ + +* Time-Invariant covariates $Z_{1i}$ with $E[Z_{1i}\alpha_i] = 0$ + +* Time-Invariant covariates $Z_{2i}$ with $E[Z_{2i}\alpha_i] \neq 0$ + +The main estimation problem arises from $E[Z_{2i}\alpha_i] \neq 0$, which would usually prevent us from estimating $\beta_4$ since taking a within-transformation (fixed effects) would remove $Z_{2i}$ from the equation. Hausman and Taylor (1981) stipulated that since $E[X_{1it}\alpha_i] = 0$, once could use $X_{1i.}$ i.e. the between-transformed $X_{1it}$ to instrument for $Z_{2i}$. They propose an IV/2SLS estimation of the whole equation where the within-transformed covariates $\tilde{X}_{1it}$ and $\tilde{X}_{2it}$ are used to instrument $X_{1it}$ and $X_{2it}$, and $X_{1i.}$ instruments $Z_{2i}$. Assuming that missing values have been removed beforehand, and also taking into account the possibility that $E[X_{1it}\gamma_t] \neq 0$ and $E[X_{2it}\gamma_t] \neq 0$ (i.e. accounting for time fixed-effects), this estimator can be coded as follows: + + + + + + + + + + + + + + +```{r, eval = NCRAN} +HT_est <- function(y, X1, Z2, X2 = NULL, Z1 = NULL, time.FE = FALSE) { + + # Create matrix of independent variables + X <- cbind(Intercept = 1, do.call(cbind, c(X1, X2, Z1, Z2))) + + # Create instrument matrix: if time.FE, higher-order demean X1 and X2, else normal demeaning + IVS <- cbind(Intercept = 1, do.call(cbind, + c(if(time.FE) fhdwithin(X1, na.rm = FALSE) else fwithin(X1, na.rm = FALSE), + if(is.null(X2)) X2 else if(time.FE) fhdwithin(X2, na.rm = FALSE) else fwithin(X2, na.rm = FALSE), + Z1, fbetween(X1, na.rm = FALSE)))) + + if(length(IVS) == length(X)) { # The IV estimator case + return(drop(solve(crossprod(IVS, X), crossprod(IVS, y)))) + } else { # The 2SLS case + Xhat <- qr.fitted(qr(IVS), X) # First stage + return(drop(qr.coef(qr(Xhat), y))) # Second stage + } +} +``` + +The estimator is written in such a way that variables of the type $X_{2it}$ and $Z_{1i}$ are optional, and it also includes an option to also project out time-FE or not. The expected inputs for $X_{1it}$ (`X1`), and $X_{2it}$ (`X2`) are column-subsets of a *pdata.frame*. + +Having coded the estimator, it would be good to have an example to run it on. I have tried to squeeze an example out of the `wlddev` data used so far in this vignette. It is quite crappy and suffers from a weak-IV problem, but for there sake of illustration lets do it: + +We want to estimate the panel-regression of life-expectancy on GDP per Capita, ODA received, the GINI index and a time-invariant dummy indicating whether the country is an OECD member. All variables except the dummy enter in logs, so this is an elasticity regression. + + + + +< + + + + + + + + + + + + + + +```{r, warning=FALSE, eval = NCRAN} +dat <- get_vars(wlddev, c("iso3c","year","OECD","PCGDP","LIFEEX","GINI","ODA")) +get_vars(dat, 4:7) <- lapply(get_vars(dat, 4:7), log) # Taking logs of the data +dat$OECD <- as.numeric(dat$OECD) # Creating OECD dummy +dat <- pdata.frame(fdroplevels(na_omit(dat)), # Creating Panel data.frame, after removing missing values + index = c("iso3c", "year")) # and dropping unused factor levels +pdim(dat) +varying(dat) +``` + +Using the GINI index cost a lot of observations and brought the sample size down to 918, but the GINI index will be a key variable in what follows. Clearly the OECD dummy is time-invariant. Below we run Hausman-tests of fixed vs. random effects to determine which covariates might be correlated with the unobserved individual effects, and which model would be most appropriate. + +```{r, eval = NCRAN} +# This tests whether each of the covariates is correlated with alpha_i +phtest(LIFEEX ~ PCGDP, dat) # Likely correlated +phtest(LIFEEX ~ ODA, dat) # Likely correlated +phtest(LIFEEX ~ GINI, dat) # Likely not correlated ! +phtest(LIFEEX ~ PCGDP + ODA + GINI, dat) # Fixed Effects is the appropriate model for this regression +``` + +The tests suggest that both GDP per Capita and ODA are correlated with country-specific unobservables affecting life-expectancy, and overall a fixed-effects model would be appropriate. However, the Hausman test on the GINI index fails to reject: Country specific unobservables affecting average life-expectancy are not necessarily correlated with the level of inequality across countries. + +Now if we want to include the OECD dummy in the regression, we cannot use fixed-effects as this would wipe-out the dummy as well. If the dummy is uncorrelated with the country-specific unobservables affecting life-expectancy (the $\alpha_i$), then we could use a solution suggested by Mundlak (1978) and simply add between-transformed versions of PCGDP and ODA in the regression (in addition to PCGDP and ODA in levels), and so 'control' for the part of PCGDP and ODA correlated with the $\alpha_i$ (in the IV literature this is known as the control-function approach). If however the OECD dummy is correlated with the $\alpha_i$, then we need to use the Hausman and Taylor (1981) estimator. Below I suggest 2 methods of testing this correlation: + +```{r, eval = NCRAN} +# Testing the correlation between OECD dummy and the Between-transformed Life-Expectancy (i.e. not accounting for other covariates) +cor.test(dat$OECD, B(dat$LIFEEX)) # -> Significant correlation of 0.21 + +# Getting the fixed-effects (estimates of alpha_i) from the model (i.e. accounting for the other covariates) +fe <- fixef(plm(LIFEEX ~ PCGDP + ODA + GINI, dat, model = "within")) +mODA <- fmean(dat$ODA, dat$iso3c) +# Again testing the correlation +cor.test(fe, mODA[match(names(fe), names(mODA))]) # -> Not Significant.. but probably due to small sample size, the correlation is still 0.13 +``` + +I interpret the test results as rejecting the hypothesis that the dummy is uncorrelated with $\alpha_i$, thus we do have a case for Hausman and Taylor (1981) here: the OECD dummy is a $Z_{2i}$ with $E[Z_{2i}\alpha_i]\neq 0$. The Hausman tests above suggested that the GINI index is the only variable uncorrelated with $\alpha_i$, thus GINI is $X_{1it}$ with $E[X_{1it}\alpha_i] = 0$. Finally PCGDP and ODA jointly constitute $X_{2it}$, where the Hausman tests strongly suggested that $E[X_{2it}\alpha_i] \neq 0$. We do not have a $Z_{1i}$ in this setup, i.e. a time-invariant variable uncorrelated with the $\alpha_i$. + +The Hausman and Taylor (1981) estimator stipulates that we should instrument the OECD dummy with $X_{1i.}$, the between-transformed GINI index. Let us therefore test the regression of the dummy on this instrument to see of it would be a good (i.e. relevant) instrument: + +```{r, eval = NCRAN} +# This computes the regression of OECD on the GINI instrument: Weak IV problem !! +fFtest(dat$OECD, B(dat$GINI)) + +``` + +The 0 R-Squared and the F-Statistic of 0.21 suggest that the instrument is very weak indeed, rubbish to be precise, thus the implementation of the HT estimator below is also a rubbish example, but it is still good for illustration purposes: + +```{r, eval = NCRAN} +HT_est(y = dat$LIFEEX, + X1 = get_vars(dat, "GINI"), + Z2 = get_vars(dat, "OECD"), + X2 = get_vars(dat, c("PCGDP","ODA"))) +``` + +Now a central questions is of course: How computationally efficient is this estimator? Let us try to re-run it on the data generated for the benchmark in Part 1: + +```{r, eval=RUNBENCH} +dat <- get_vars(data, c("iso3c","year","OECD","PCGDP","LIFEEX","GINI","ODA")) +get_vars(dat, 4:7) <- lapply(get_vars(dat, 4:7), log) # Taking logs of the data +dat$OECD <- as.numeric(dat$OECD) # Creating OECD dummy +dat <- pdata.frame(fdroplevels(na_omit(dat)), # Creating Panel data.frame, after removing missing values + index = c("iso3c", "year")) # and dropping unused factor levels +pdim(dat) +varying(dat) + +library(microbenchmark) +microbenchmark(HT_est = HT_est(y = dat$LIFEEX, # The estimator as before + X1 = get_vars(dat, "GINI"), + Z2 = get_vars(dat, "OECD"), + X2 = get_vars(dat, c("PCGDP","ODA"))), + HT_est_TFE = HT_est(y = dat$LIFEEX, # Also Projecting out Time-FE + X1 = get_vars(dat, "GINI"), + Z2 = get_vars(dat, "OECD"), + X2 = get_vars(dat, c("PCGDP","ODA")), + time.FE = TRUE)) +``` + +At around 100,000 obs and 13,000 groups in an unbalanced panel, the computation involving 3 grouped centering and 1 grouped averaging task as well as 2 list-to matrix conversions and an IV-procedure took about 10 milliseconds with only individual effects, and about 40 - 45 milliseconds with individual and time-fixed effects (projected out iteratively). This should leave some room for running this on much larger data. +```{r, echo=FALSE} +options(oldopts) +``` + +## References + +Hausman J, Taylor W (1981). “Panel Data and Unobservable Individual Effects.” *Econometrica*, 49, 1377–1398. + +Mundlak, Yair. 1978. “On the Pooling of Time Series and Cross Section Data.” *Econometrica* 46 (1): 69–85. + +Cochrane, D. & Orcutt, G. H. (1949). "Application of Least Squares Regression to Relationships Containing Auto-Correlated Error Terms". *Journal of the American Statistical Association.* 44 (245): 32–61. + +Prais, S. J. & Winsten, C. B. (1954). "Trend Estimators and Serial Correlation". *Cowles Commission Discussion Paper No. 383.* Chicago. + diff --git a/vignettes/collapse_intro.Rmd b/vignettes/collapse_intro.Rmd index 6ef2fdf6..f26b93cf 100644 --- a/vignettes/collapse_intro.Rmd +++ b/vignettes/collapse_intro.Rmd @@ -3,17 +3,17 @@ title: "Introduction to collapse" subtitle: "Advanced and Fast Data Transformation in R" author: "Sebastian Krantz" date: "2021-06-27" -output: +output: rmarkdown::html_vignette: toc: true - + vignette: > %\VignetteIndexEntry{Introduction to collapse} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- -```{css, echo=FALSE} + -```{r, echo=FALSE} -NCRAN <- identical(Sys.getenv("NCRAN"), "TRUE") -RUNBENCH <- NCRAN && identical(Sys.getenv("RUNBENCH"), "TRUE") -oldopts <- options(width = 100L) -``` -```{r, echo = FALSE, message = FALSE, warning=FALSE, eval=NCRAN} -library(vars) -library(dplyr) # Needed because otherwise dplyr is loaded in benchmark chunk not run on CRAN !! -library(magrittr) -library(microbenchmark) # Same thing -library(collapse) -library(data.table) -B <- collapse::B # making sure it masks vars::B by loading into GE -knitr::opts_chunk$set(error = FALSE, message = FALSE, warning = FALSE, - comment = "#", tidy = FALSE, cache = FALSE, collapse = TRUE, - fig.width = 8, fig.height = 5, - out.width = '100%') -X = mtcars[1:2] -by = mtcars$cyl - -F <- getNamespace("collapse")$F - -set.seed(101) -``` *collapse* is a C/C++ based package for data transformation and statistical computing in R. It's aims are: 1. To facilitate complex data transformation, exploration and computing tasks in R. -2. To help make R code fast, flexible, parsimonious and programmer friendly. +2. To help make R code fast, flexible, parsimonious and programmer friendly. -This vignette demonstrates these two points and introduces all main features of the package in a structured way. The chapters are pretty self-contained, however the first chapters introduce the data and faster data manipulation functions which are used throughout the rest of this vignette. +This vignette demonstrates these two points and introduces all main features of the package in a structured way. The chapters are pretty self-contained, however the first chapters introduce the data and faster data manipulation functions which are used throughout the rest of this vignette. - + *** **Notes:** @@ -68,7 +44,7 @@ This vignette demonstrates these two points and introduces all main features of - Apart from this vignette, *collapse* comes with a built-in structured documentation available under `help("collapse-documentation")` after installing the package, and `help("collapse-package")` provides a compact set of examples for quick-start. A cheat sheet is available at [Rstudio](). -- The two other vignettes focus on the integration of *collapse* with *dplyr* workflows (recommended for *dplyr* / *tidyverse* users), and on the integration of *collapse* with the *plm* package (+ some advanced programming with panel data). +- The two other vignettes focus on the integration of *collapse* with *dplyr* workflows (recommended for *dplyr* / *tidyverse* users), and on the integration of *collapse* with the *plm* package (+ some advanced programming with panel data). - Documentation and vignettes can also be viewed [online](). @@ -77,14 +53,14 @@ This vignette demonstrates these two points and introduces all main features of *** ## Why *collapse*? -*collapse* is a high-performance package that extends and enhances the data-manipulation capabilities of R and existing popular packages (such as *dplyr*, *data.table*, and matrix packages). It's main focus is on grouped and weighted statistical programming, complex aggregations and transformations, time series and panel data operations, and programming with lists of data objects. The lead author is an applied economist and created the package mainly to facilitate advanced computations on varied and complex data, in particular surveys, (multivariate) time series, multilevel / panel data, and lists / model objects. +*collapse* is a high-performance package that extends and enhances the data-manipulation capabilities of R and existing popular packages (such as *dplyr*, *data.table*, and matrix packages). It's main focus is on grouped and weighted statistical programming, complex aggregations and transformations, time series and panel data operations, and programming with lists of data objects. The lead author is an applied economist and created the package mainly to facilitate advanced computations on varied and complex data, in particular surveys, (multivariate) time series, multilevel / panel data, and lists / model objects. A secondary aspect to applied work is that data is often imported into R from richer data structures (such as STATA, SPSS or SAS files imported with *haven*). This called for an intelligent suite of data manipulation functions that can both utilize aspects of the richer data structure (such as variable labels), and preserve the data structure / attributes in computations. Sometimes specialized classes like *xts*, *pdata.frame* and *grouped_df* can also become very useful to manipulate certain types of data. Thus *collapse* was built to explicitly supports these classes, while preserving most other classes / data structures in R. -Another objective was to radically improve the speed of R code by extensively relying on efficient algorithms in C/C++ and the faster components of base R. *collapse* ranks among the fastest R packages, and performs many grouped and/or weighted computations noticeably faster than *dplyr* or *data.table*. +Another objective was to radically improve the speed of R code by extensively relying on efficient algorithms in C/C++ and the faster components of base R. *collapse* ranks among the fastest R packages, and performs many grouped and/or weighted computations noticeably faster than *dplyr* or *data.table*. -A final development objective was to channel this performance through a stable and well conceived user API providing extensive and optimized programming capabilities (in standard evaluation) while also facilitating quick use and easy integration with existing data manipulation frameworks (in particular *dplyr* / *tidyverse* and *data.table*, both relying on non-standard evaluation). +A final development objective was to channel this performance through a stable and well conceived user API providing extensive and optimized programming capabilities (in standard evaluation) while also facilitating quick use and easy integration with existing data manipulation frameworks (in particular *dplyr* / *tidyverse* and *data.table*, both relying on non-standard evaluation). -```{r, eval=NCRAN} + +```r library(collapse) head(wlddev) +# country iso3c date year decade region income OECD PCGDP LIFEEX GINI ODA +# 1 Afghanistan AFG 1961-01-01 1960 1960 South Asia Low income FALSE NA 32.446 NA 116769997 +# 2 Afghanistan AFG 1962-01-01 1961 1960 South Asia Low income FALSE NA 32.962 NA 232080002 +# 3 Afghanistan AFG 1963-01-01 1962 1960 South Asia Low income FALSE NA 33.471 NA 112839996 +# 4 Afghanistan AFG 1964-01-01 1963 1960 South Asia Low income FALSE NA 33.971 NA 237720001 +# 5 Afghanistan AFG 1965-01-01 1964 1960 South Asia Low income FALSE NA 34.463 NA 295920013 +# 6 Afghanistan AFG 1966-01-01 1965 1960 South Asia Low income FALSE NA 34.948 NA 341839996 +# POP +# 1 8996973 +# 2 9169410 +# 3 9351441 +# 4 9543205 +# 5 9744781 +# 6 9956320 # The variables have "label" attributes. Use vlabels() to get and set labels namlab(wlddev, class = TRUE) +# Variable Class +# 1 country character +# 2 iso3c factor +# 3 date Date +# 4 year integer +# 5 decade integer +# 6 region factor +# 7 income factor +# 8 OECD logical +# 9 PCGDP numeric +# 10 LIFEEX numeric +# 11 GINI numeric +# 12 ODA numeric +# 13 POP numeric +# Label +# 1 Country Name +# 2 Country Code +# 3 Date Recorded (Fictitious) +# 4 Year +# 5 Decade +# 6 Region +# 7 Income Level +# 8 Is OECD Member Country? +# 9 GDP per capita (constant 2010 US$) +# 10 Life expectancy at birth, total (years) +# 11 Gini index (World Bank estimate) +# 12 Net official development assistance and official aid received (constant 2018 US$) +# 13 Population, total ``` Of the categorical identifiers, the date variable was artificially generated to have an example dataset that contains all common data types frequently encountered in R. A detailed statistical description of this data is computed by `descr`: -```{r, eval=NCRAN} + +```r # A fast and detailed statistical description descr(wlddev) +# Dataset: wlddev, 13 Variables, N = 13176 +# ---------------------------------------------------------------------------------------------------- +# country (character): Country Name +# Statistics +# N Ndist +# 13176 216 +# Table +# Freq Perc +# Afghanistan 61 0.46 +# Albania 61 0.46 +# Algeria 61 0.46 +# American Samoa 61 0.46 +# Andorra 61 0.46 +# Angola 61 0.46 +# Antigua and Barbuda 61 0.46 +# Argentina 61 0.46 +# Armenia 61 0.46 +# Aruba 61 0.46 +# Australia 61 0.46 +# Austria 61 0.46 +# Azerbaijan 61 0.46 +# Bahamas, The 61 0.46 +# ... 202 Others 12322 93.52 +# +# Summary of Table Frequencies +# Min. 1st Qu. Median Mean 3rd Qu. Max. +# 61 61 61 61 61 61 +# ---------------------------------------------------------------------------------------------------- +# iso3c (factor): Country Code +# Statistics +# N Ndist +# 13176 216 +# Table +# Freq Perc +# ABW 61 0.46 +# AFG 61 0.46 +# AGO 61 0.46 +# ALB 61 0.46 +# AND 61 0.46 +# ARE 61 0.46 +# ARG 61 0.46 +# ARM 61 0.46 +# ASM 61 0.46 +# ATG 61 0.46 +# AUS 61 0.46 +# AUT 61 0.46 +# AZE 61 0.46 +# BDI 61 0.46 +# ... 202 Others 12322 93.52 +# +# Summary of Table Frequencies +# Min. 1st Qu. Median Mean 3rd Qu. Max. +# 61 61 61 61 61 61 +# ---------------------------------------------------------------------------------------------------- +# date (Date): Date Recorded (Fictitious) +# Statistics +# N Ndist Min Max +# 13176 61 1961-01-01 2021-01-01 +# ---------------------------------------------------------------------------------------------------- +# year (integer): Year +# Statistics +# N Ndist Mean SD Min Max Skew Kurt +# 13176 61 1990 17.61 1960 2020 -0 1.8 +# Quantiles +# 1% 5% 10% 25% 50% 75% 90% 95% 99% +# 1960 1963 1966 1975 1990 2005 2014 2017 2020 +# ---------------------------------------------------------------------------------------------------- +# decade (integer): Decade +# Statistics +# N Ndist Mean SD Min Max Skew Kurt +# 13176 7 1985.57 17.51 1960 2020 0.03 1.79 +# Quantiles +# 1% 5% 10% 25% 50% 75% 90% 95% 99% +# 1960 1960 1960 1970 1990 2000 2010 2010 2020 +# ---------------------------------------------------------------------------------------------------- +# region (factor): Region +# Statistics +# N Ndist +# 13176 7 +# Table +# Freq Perc +# Europe & Central Asia 3538 26.85 +# Sub-Saharan Africa 2928 22.22 +# Latin America & Caribbean 2562 19.44 +# East Asia & Pacific 2196 16.67 +# Middle East & North Africa 1281 9.72 +# South Asia 488 3.70 +# North America 183 1.39 +# ---------------------------------------------------------------------------------------------------- +# income (factor): Income Level +# Statistics +# N Ndist +# 13176 4 +# Table +# Freq Perc +# High income 4819 36.57 +# Upper middle income 3660 27.78 +# Lower middle income 2867 21.76 +# Low income 1830 13.89 +# ---------------------------------------------------------------------------------------------------- +# OECD (logical): Is OECD Member Country? +# Statistics +# N Ndist +# 13176 2 +# Table +# Freq Perc +# FALSE 10980 83.33 +# TRUE 2196 16.67 +# ---------------------------------------------------------------------------------------------------- +# PCGDP (numeric): GDP per capita (constant 2010 US$) +# Statistics (28.13% NAs) +# N Ndist Mean SD Min Max Skew Kurt +# 9470 9470 12048.78 19077.64 132.08 196061.42 3.13 17.12 +# Quantiles +# 1% 5% 10% 25% 50% 75% 90% 95% 99% +# 227.71 399.62 555.55 1303.19 3767.16 14787.03 35646.02 48507.84 92340.28 +# ---------------------------------------------------------------------------------------------------- +# LIFEEX (numeric): Life expectancy at birth, total (years) +# Statistics (11.43% NAs) +# N Ndist Mean SD Min Max Skew Kurt +# 11670 10548 64.3 11.48 18.91 85.42 -0.67 2.67 +# Quantiles +# 1% 5% 10% 25% 50% 75% 90% 95% 99% +# 35.83 42.77 46.83 56.36 67.44 72.95 77.08 79.34 82.36 +# ---------------------------------------------------------------------------------------------------- +# GINI (numeric): Gini index (World Bank estimate) +# Statistics (86.76% NAs) +# N Ndist Mean SD Min Max Skew Kurt +# 1744 368 38.53 9.2 20.7 65.8 0.6 2.53 +# Quantiles +# 1% 5% 10% 25% 50% 75% 90% 95% 99% +# 24.6 26.3 27.6 31.5 36.4 45 52.6 55.98 60.5 +# ---------------------------------------------------------------------------------------------------- +# ODA (numeric): Net official development assistance and official aid received (constant 2018 US$) +# Statistics (34.67% NAs) +# N Ndist Mean SD Min Max Skew Kurt +# 8608 7832 454'720131 868'712654 -997'679993 2.56715605e+10 6.98 114.89 +# Quantiles +# 1% 5% 10% 25% 50% 75% 90% +# -12'593999.7 1'363500.01 8'347000.31 44'887499.8 165'970001 495'042503 1.18400697e+09 +# 95% 99% +# 1.93281696e+09 3.73380782e+09 +# ---------------------------------------------------------------------------------------------------- +# POP (numeric): Population, total +# Statistics (1.95% NAs) +# N Ndist Mean SD Min Max Skew Kurt +# 12919 12877 24'245971.6 102'120674 2833 1.39771500e+09 9.75 108.91 +# Quantiles +# 1% 5% 10% 25% 50% 75% 90% 95% 99% +# 8698.84 31083.3 62268.4 443791 4'072517 12'816178 46'637331.4 81'177252.5 308'862641 +# ---------------------------------------------------------------------------------------------------- ``` The output of `descr` can be converted into a tidy data frame using: -```{r, eval=NCRAN} + +```r head(as.data.frame(descr(wlddev))) +# Variable Class Label N Ndist Min Max Mean SD +# 1 country character Country Name 13176 216 NA NA NA NA +# 2 iso3c factor Country Code 13176 216 NA NA NA NA +# 3 date Date Date Recorded (Fictitious) 13176 61 -3287 18628 NA NA +# 4 year integer Year 13176 61 1960 2020 1990.000 17.60749 +# 5 decade integer Decade 13176 7 1960 2020 1985.574 17.51175 +# 6 region factor Region 13176 7 NA NA NA NA +# Skew Kurt 1% 5% 10% 25% 50% 75% 90% 95% 99% +# 1 NA NA NA NA NA NA NA NA NA NA NA +# 2 NA NA NA NA NA NA NA NA NA NA NA +# 3 NA NA NA NA NA NA NA NA NA NA NA +# 4 -5.812381e-16 1.799355 1960 1963 1966 1975 1990 2005 2014 2017 2020 +# 5 3.256512e-02 1.791726 1960 1960 1960 1970 1990 2000 2010 2010 2020 +# 6 NA NA NA NA NA NA NA NA NA NA NA ``` Note that `descr` does not require data to be labeled. Since `wlddev` is a panel data set tracking countries over time, we might be interested in checking which variables are time-varying, with the function `varying`: -```{r, eval=NCRAN} + +```r varying(wlddev, wlddev$iso3c) +# country iso3c date year decade region income OECD PCGDP LIFEEX GINI ODA +# FALSE FALSE TRUE TRUE TRUE FALSE FALSE FALSE TRUE TRUE TRUE TRUE +# POP +# TRUE ``` `varying` tells us that all 5 variables `PCGDP`, `LIFEEX`, `GINI`, `ODA` and `POP` vary over time. However the `OECD` variable does not, so this data does not track when countries entered the OECD. We can also have a more detailed look letting `varying` check the variation in each country: -```{r, eval=NCRAN} + +```r head(varying(wlddev, wlddev$iso3c, any_group = FALSE)) +# country iso3c date year decade region income OECD PCGDP LIFEEX GINI ODA POP +# ABW FALSE FALSE TRUE TRUE TRUE FALSE FALSE FALSE TRUE TRUE NA TRUE TRUE +# AFG FALSE FALSE TRUE TRUE TRUE FALSE FALSE FALSE TRUE TRUE NA TRUE TRUE +# AGO FALSE FALSE TRUE TRUE TRUE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE +# ALB FALSE FALSE TRUE TRUE TRUE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE +# AND FALSE FALSE TRUE TRUE TRUE FALSE FALSE FALSE TRUE NA NA NA TRUE +# ARE FALSE FALSE TRUE TRUE TRUE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE ``` -`NA` indicates that there are no data for this country. In general data is varying if it has two or more distinct non-missing values. We could also take a closer look at observation counts and distinct values using: +`NA` indicates that there are no data for this country. In general data is varying if it has two or more distinct non-missing values. We could also take a closer look at observation counts and distinct values using: -```{r, eval=NCRAN} + +```r head(fnobs(wlddev, wlddev$iso3c)) +# country iso3c date year decade region income OECD PCGDP LIFEEX GINI ODA POP +# ABW 61 61 61 61 61 61 61 61 32 60 0 20 60 +# AFG 61 61 61 61 61 61 61 61 18 60 0 60 60 +# AGO 61 61 61 61 61 61 61 61 40 60 3 58 60 +# ALB 61 61 61 61 61 61 61 61 40 60 9 32 60 +# AND 61 61 61 61 61 61 61 61 50 0 0 0 60 +# ARE 61 61 61 61 61 61 61 61 45 60 2 45 60 head(fndistinct(wlddev, wlddev$iso3c)) +# country iso3c date year decade region income OECD PCGDP LIFEEX GINI ODA POP +# ABW 1 1 61 61 7 1 1 1 32 60 0 20 60 +# AFG 1 1 61 61 7 1 1 1 18 60 0 60 60 +# AGO 1 1 61 61 7 1 1 1 40 59 3 58 60 +# ALB 1 1 61 61 7 1 1 1 40 59 9 32 60 +# AND 1 1 61 61 7 1 1 1 50 0 0 0 60 +# ARE 1 1 61 61 7 1 1 1 45 60 2 45 60 ``` -Note that `varying` is more efficient than `fndistinct`, although both functions are very fast. +Note that `varying` is more efficient than `fndistinct`, although both functions are very fast. Even more powerful summary methods for multilevel / panel data are provided by `qsu` (shorthand for *quick-summary*). It is modeled after *STATA*'s *summarize* and *xtsummarize* commands. Calling `qsu` on the data gives a concise summary. We can subset columns internally using the `cols` argument: -```{r, eval=NCRAN} -qsu(wlddev, cols = 9:12, higher = TRUE) # higher adds skewness and kurtosis -``` - -We could easily compute these statistics by region: -```{r, eval=NCRAN} -qsu(wlddev, by = ~region, cols = 9:12, vlabels = TRUE, higher = TRUE) -``` - -Computing summary statistics by country is of course also possible but would be too much information. Fortunately `qsu` lets us do something much more powerful: - -```{r, eval=NCRAN} +```r +qsu(wlddev, cols = 9:12, higher = TRUE) # higher adds skewness and kurtosis +# N Mean SD Min Max Skew Kurt +# PCGDP 9470 12048.778 19077.6416 132.0776 196061.417 3.1276 17.1154 +# LIFEEX 11670 64.2963 11.4764 18.907 85.4171 -0.6748 2.6718 +# GINI 1744 38.5341 9.2006 20.7 65.8 0.596 2.5329 +# ODA 8608 454'720131 868'712654 -997'679993 2.56715605e+10 6.9832 114.889 +``` + +We could easily compute these statistics by region: + + +```r +qsu(wlddev, by = ~region, cols = 9:12, vlabels = TRUE, higher = TRUE) +# , , PCGDP: GDP per capita (constant 2010 US$) +# +# N Mean SD Min Max Skew Kurt +# East Asia & Pacific 1467 10513.2441 14383.5507 132.0776 71992.1517 1.6392 4.7419 +# Europe & Central Asia 2243 25992.9618 26435.1316 366.9354 196061.417 2.2022 10.1977 +# Latin America & Caribbean 1976 7628.4477 8818.5055 1005.4085 88391.3331 4.1702 29.3739 +# Middle East & North Africa 842 13878.4213 18419.7912 578.5996 116232.753 2.4178 9.7669 +# North America 180 48699.76 24196.2855 16405.9053 113236.091 0.938 2.9688 +# South Asia 382 1235.9256 1611.2232 265.9625 8476.564 2.7874 10.3402 +# Sub-Saharan Africa 2380 1840.0259 2596.0104 164.3366 20532.9523 3.1161 14.4175 +# +# , , LIFEEX: Life expectancy at birth, total (years) +# +# N Mean SD Min Max Skew Kurt +# East Asia & Pacific 1807 65.9445 10.1633 18.907 85.078 -0.856 4.3125 +# Europe & Central Asia 3046 72.1625 5.7602 45.369 85.4171 -0.5594 4.0434 +# Latin America & Caribbean 2107 68.3486 7.3768 41.762 82.1902 -1.0357 3.9379 +# Middle East & North Africa 1226 66.2508 9.8306 29.919 82.8049 -0.8782 3.3054 +# North America 144 76.2867 3.5734 68.8978 82.0488 -0.1963 1.976 +# South Asia 480 57.5585 11.3004 32.446 78.921 -0.2623 2.1147 +# Sub-Saharan Africa 2860 51.581 8.6876 26.172 74.5146 0.1452 2.7245 +# +# , , GINI: Gini index (World Bank estimate) +# +# N Mean SD Min Max Skew Kurt +# East Asia & Pacific 154 37.7571 5.0318 27.8 49.1 0.3631 2.3047 +# Europe & Central Asia 798 31.9114 4.5809 20.7 48.4 0.2989 2.5254 +# Latin America & Caribbean 413 49.9557 5.4821 34.4 63.3 -0.0386 2.3631 +# Middle East & North Africa 91 36.0143 5.2073 26 47.4 0.0241 1.9209 +# North America 49 37.4816 3.6972 31 41.5 -0.4282 1.4577 +# South Asia 46 33.8804 3.9898 25.9 43.8 0.4205 2.7748 +# Sub-Saharan Africa 193 44.6606 8.2003 29.8 65.8 0.6598 2.8451 +# +# , , ODA: Net official development assistance and official aid received (constant 2018 US$) +# +# N Mean SD Min Max +# East Asia & Pacific 1537 352'017964 622'847624 -997'679993 4.04487988e+09 +# Europe & Central Asia 787 402'455286 568'237036 -322'070007 4.34612988e+09 +# Latin America & Caribbean 1972 172'880081 260'781049 -444'040009 2.99568994e+09 +# Middle East & North Africa 1105 732'380009 1.52108993e+09 -141'789993 2.56715605e+10 +# North America 39 468717.916 10'653560.8 -15'869999.9 61'509998.3 +# South Asia 466 1.27049955e+09 1.61492889e+09 -247'369995 8.75425977e+09 +# Sub-Saharan Africa 2702 486'371750 656'336230 -18'409999.8 1.18790801e+10 +# Skew Kurt +# East Asia & Pacific 2.722 11.5221 +# Europe & Central Asia 3.1305 15.2525 +# Latin America & Caribbean 3.3259 22.4569 +# Middle East & North Africa 6.6304 79.2238 +# North America 4.8602 29.3092 +# South Asia 1.7923 6.501 +# Sub-Saharan Africa 4.5456 48.8447 +``` + +Computing summary statistics by country is of course also possible but would be too much information. Fortunately `qsu` lets us do something much more powerful: + + +```r qsu(wlddev, pid = ~ iso3c, cols = c(1,4,9:12), vlabels = TRUE, higher = TRUE) +# , , country: Country Name +# +# N/T Mean SD Min Max Skew Kurt +# Overall 13176 - - - - - - +# Between 216 - - - - - - +# Within 61 - - - - - - +# +# , , year: Year +# +# N/T Mean SD Min Max Skew Kurt +# Overall 13176 1990 17.6075 1960 2020 -0 1.7994 +# Between 216 1990 0 1990 1990 - - +# Within 61 1990 17.6075 1960 2020 -0 1.7994 +# +# , , PCGDP: GDP per capita (constant 2010 US$) +# +# N/T Mean SD Min Max Skew Kurt +# Overall 9470 12048.778 19077.6416 132.0776 196061.417 3.1276 17.1154 +# Between 206 12962.6054 20189.9007 253.1886 141200.38 3.1263 16.2299 +# Within 45.9709 12048.778 6723.6808 -33504.8721 76767.5254 0.6576 17.2003 +# +# , , LIFEEX: Life expectancy at birth, total (years) +# +# N/T Mean SD Min Max Skew Kurt +# Overall 11670 64.2963 11.4764 18.907 85.4171 -0.6748 2.6718 +# Between 207 64.9537 9.8936 40.9663 85.4171 -0.5012 2.1693 +# Within 56.3768 64.2963 6.0842 32.9068 84.4198 -0.2643 3.7027 +# +# , , GINI: Gini index (World Bank estimate) +# +# N/T Mean SD Min Max Skew Kurt +# Overall 1744 38.5341 9.2006 20.7 65.8 0.596 2.5329 +# Between 167 39.4233 8.1356 24.8667 61.7143 0.5832 2.8256 +# Within 10.4431 38.5341 2.9277 25.3917 55.3591 0.3263 5.3389 +# +# , , ODA: Net official development assistance and official aid received (constant 2018 US$) +# +# N/T Mean SD Min Max Skew Kurt +# Overall 8608 454'720131 868'712654 -997'679993 2.56715605e+10 6.9832 114.889 +# Between 178 439'168412 569'049959 468717.916 3.62337432e+09 2.355 9.9487 +# Within 48.3596 454'720131 650'709624 -2.44379420e+09 2.45610972e+10 9.6047 263.3716 ``` The above output reports 3 sets of summary statistics for each variable: Statistics computed on the *Overall* (raw) data, and on the *Between*-country (i.e. country averaged) and *Within*-country (i.e. country-demeaned) data^[in the *Within* data, the overall mean was added back after subtracting out country means, to preserve the level of the data, see also section 6.5.]. This is a powerful way to summarize panel data because aggregating the data by country gives us a cross-section of countries with no variation over time, whereas subtracting country specific means from the data eliminates all cross-sectional variation. -So what can these statistics tell us about our data? The `N/T` columns shows that for `PCGDP` we have 8995 total observations, that we observe GDP data for 203 countries and that we have on average 44.3 observations (time-periods) per country. In contrast the GINI Index is only available for 161 countries with 8.4 observations on average. The *Overall* and *Within* mean of the data are identical by definition, and the *Between* mean would also be the same in a balanced panel with no missing observations. In practice we have unequal amounts of observations for different countries, thus countries have different weights in the *Overall* mean and the difference between *Overall* and *Between*-country mean reflects this discrepancy. The most interesting statistic in this summary arguably is the standard deviation, and in particular the comparison of the *Between*-SD reflecting the variation between countries and the *Within*-SD reflecting average variation over time. This comparison shows that PCGDP, LIFEEX and GINI vary more between countries, but ODA received varies more within countries over time. The 0 *Between*-SD for the year variable and the fact that the *Overall* and *Within*-SD are equal shows that year is individual invariant. Thus `qsu` also provides the same information as `varying`, but with additional details on the relative magnitudes of cross-sectional and time series variation. It is also a common pattern that the *kurtosis* increases in within-transformed data, while the *skewness* decreases in most cases. +So what can these statistics tell us about our data? The `N/T` columns shows that for `PCGDP` we have 8995 total observations, that we observe GDP data for 203 countries and that we have on average 44.3 observations (time-periods) per country. In contrast the GINI Index is only available for 161 countries with 8.4 observations on average. The *Overall* and *Within* mean of the data are identical by definition, and the *Between* mean would also be the same in a balanced panel with no missing observations. In practice we have unequal amounts of observations for different countries, thus countries have different weights in the *Overall* mean and the difference between *Overall* and *Between*-country mean reflects this discrepancy. The most interesting statistic in this summary arguably is the standard deviation, and in particular the comparison of the *Between*-SD reflecting the variation between countries and the *Within*-SD reflecting average variation over time. This comparison shows that PCGDP, LIFEEX and GINI vary more between countries, but ODA received varies more within countries over time. The 0 *Between*-SD for the year variable and the fact that the *Overall* and *Within*-SD are equal shows that year is individual invariant. Thus `qsu` also provides the same information as `varying`, but with additional details on the relative magnitudes of cross-sectional and time series variation. It is also a common pattern that the *kurtosis* increases in within-transformed data, while the *skewness* decreases in most cases. We could also do all of that by regions to have a look at the between and within country variations inside and across different World regions: -```{r, eval=NCRAN} + +```r qsu(wlddev, by = ~ region, pid = ~ iso3c, cols = 9:12, vlabels = TRUE, higher = TRUE) +# , , Overall, PCGDP: GDP per capita (constant 2010 US$) +# +# N/T Mean SD Min Max Skew Kurt +# East Asia & Pacific 1467 10513.2441 14383.5507 132.0776 71992.1517 1.6392 4.7419 +# Europe & Central Asia 2243 25992.9618 26435.1316 366.9354 196061.417 2.2022 10.1977 +# Latin America & Caribbean 1976 7628.4477 8818.5055 1005.4085 88391.3331 4.1702 29.3739 +# Middle East & North Africa 842 13878.4213 18419.7912 578.5996 116232.753 2.4178 9.7669 +# North America 180 48699.76 24196.2855 16405.9053 113236.091 0.938 2.9688 +# South Asia 382 1235.9256 1611.2232 265.9625 8476.564 2.7874 10.3402 +# Sub-Saharan Africa 2380 1840.0259 2596.0104 164.3366 20532.9523 3.1161 14.4175 +# +# , , Between, PCGDP: GDP per capita (constant 2010 US$) +# +# N/T Mean SD Min Max Skew Kurt +# East Asia & Pacific 34 10513.2441 12771.742 444.2899 39722.0077 1.1488 2.7089 +# Europe & Central Asia 56 25992.9618 24051.035 809.4753 141200.38 2.0026 9.0733 +# Latin America & Caribbean 38 7628.4477 8470.9708 1357.3326 77403.7443 4.4548 32.4956 +# Middle East & North Africa 20 13878.4213 17251.6962 1069.6596 64878.4021 1.9508 6.0796 +# North America 3 48699.76 18604.4369 35260.4708 74934.5874 0.7065 1.5 +# South Asia 8 1235.9256 1488.3669 413.68 6621.5002 3.0546 11.3083 +# Sub-Saharan Africa 47 1840.0259 2234.3254 253.1886 9922.0052 2.1442 6.8259 +# +# , , Within, PCGDP: GDP per capita (constant 2010 US$) +# +# N/T Mean SD Min Max Skew +# East Asia & Pacific 43.1471 12048.778 6615.8248 -11964.6472 49541.463 0.824 +# Europe & Central Asia 40.0536 12048.778 10971.0483 -33504.8721 76767.5254 0.4307 +# Latin America & Caribbean 52 12048.778 2451.2636 -354.1639 23036.3668 0.1259 +# Middle East & North Africa 42.1 12048.778 6455.0512 -18674.4049 63665.0446 1.8525 +# North America 60 12048.778 15470.4609 -29523.1017 50350.2816 -0.2451 +# South Asia 47.75 12048.778 617.0934 10026.9155 14455.865 0.9846 +# Sub-Saharan Africa 50.6383 12048.778 1321.764 4846.3834 24883.1246 1.3879 +# Kurt +# East Asia & Pacific 8.9418 +# Europe & Central Asia 7.4139 +# Latin America & Caribbean 7.1939 +# Middle East & North Africa 23.0457 +# North America 3.2075 +# South Asia 5.6366 +# Sub-Saharan Africa 28.0186 +# +# , , Overall, LIFEEX: Life expectancy at birth, total (years) +# +# N/T Mean SD Min Max Skew Kurt +# East Asia & Pacific 1807 65.9445 10.1633 18.907 85.078 -0.856 4.3125 +# Europe & Central Asia 3046 72.1625 5.7602 45.369 85.4171 -0.5594 4.0434 +# Latin America & Caribbean 2107 68.3486 7.3768 41.762 82.1902 -1.0357 3.9379 +# Middle East & North Africa 1226 66.2508 9.8306 29.919 82.8049 -0.8782 3.3054 +# North America 144 76.2867 3.5734 68.8978 82.0488 -0.1963 1.976 +# South Asia 480 57.5585 11.3004 32.446 78.921 -0.2623 2.1147 +# Sub-Saharan Africa 2860 51.581 8.6876 26.172 74.5146 0.1452 2.7245 +# +# , , Between, LIFEEX: Life expectancy at birth, total (years) +# +# N/T Mean SD Min Max Skew Kurt +# East Asia & Pacific 32 65.9445 7.6833 49.7995 77.9008 -0.3832 2.4322 +# Europe & Central Asia 55 72.1625 4.4378 60.1129 85.4171 -0.6584 2.8874 +# Latin America & Caribbean 40 68.3486 4.9199 53.4918 82.1902 -0.9947 4.1617 +# Middle East & North Africa 21 66.2508 5.922 52.5371 76.7395 -0.3181 3.0331 +# North America 3 76.2867 1.3589 74.8065 78.4175 0.1467 1.6356 +# South Asia 8 57.5585 5.6158 49.1972 69.3429 0.6643 3.1288 +# Sub-Saharan Africa 48 51.581 5.657 40.9663 71.5749 1.1333 4.974 +# +# , , Within, LIFEEX: Life expectancy at birth, total (years) +# +# N/T Mean SD Min Max Skew Kurt +# East Asia & Pacific 56.4688 64.2963 6.6528 32.9068 83.9918 -0.3949 3.9528 +# Europe & Central Asia 55.3818 64.2963 3.6723 46.3045 78.6265 -0.0307 3.7576 +# Latin America & Caribbean 52.675 64.2963 5.4965 46.7831 79.5026 -0.3827 2.9936 +# Middle East & North Africa 58.381 64.2963 7.8467 41.6187 78.8872 -0.6216 2.808 +# North America 48 64.2963 3.3049 54.7766 69.4306 -0.4327 2.3027 +# South Asia 60 64.2963 9.8062 41.4342 83.0122 -0.0946 2.1035 +# Sub-Saharan Africa 59.5833 64.2963 6.5933 41.5678 84.4198 0.0811 2.7821 +# +# , , Overall, GINI: Gini index (World Bank estimate) +# +# N/T Mean SD Min Max Skew Kurt +# East Asia & Pacific 154 37.7571 5.0318 27.8 49.1 0.3631 2.3047 +# Europe & Central Asia 798 31.9114 4.5809 20.7 48.4 0.2989 2.5254 +# Latin America & Caribbean 413 49.9557 5.4821 34.4 63.3 -0.0386 2.3631 +# Middle East & North Africa 91 36.0143 5.2073 26 47.4 0.0241 1.9209 +# North America 49 37.4816 3.6972 31 41.5 -0.4282 1.4577 +# South Asia 46 33.8804 3.9898 25.9 43.8 0.4205 2.7748 +# Sub-Saharan Africa 193 44.6606 8.2003 29.8 65.8 0.6598 2.8451 +# +# , , Between, GINI: Gini index (World Bank estimate) +# +# N/T Mean SD Min Max Skew Kurt +# East Asia & Pacific 23 37.7571 4.3005 30.8 45.8857 0.4912 2.213 +# Europe & Central Asia 49 31.9114 4.0611 24.8667 40.935 0.3323 2.291 +# Latin America & Caribbean 25 49.9557 4.0492 41.1 57.9 0.03 2.2573 +# Middle East & North Africa 15 36.0143 4.7002 29.05 42.7 -0.2035 1.6815 +# North America 2 37.4816 3.3563 33.1222 40.0129 -0.5503 1.3029 +# South Asia 7 33.8804 3.0052 30.3556 38.8 0.2786 1.4817 +# Sub-Saharan Africa 46 44.6606 6.8844 34.52 61.7143 0.9464 3.2302 +# +# , , Within, GINI: Gini index (World Bank estimate) +# +# N/T Mean SD Min Max Skew Kurt +# East Asia & Pacific 6.6957 38.5341 2.6125 31.0187 45.8901 -0.0585 3.0933 +# Europe & Central Asia 16.2857 38.5341 2.1195 31.2841 50.1387 0.6622 6.1763 +# Latin America & Caribbean 16.52 38.5341 3.6955 25.3917 48.8341 -0.0506 2.7603 +# Middle East & North Africa 6.0667 38.5341 2.2415 31.7675 45.777 0.0408 4.7415 +# North America 24.5 38.5341 1.5507 33.0212 42.7119 -1.3213 6.8321 +# South Asia 6.5714 38.5341 2.6244 32.8341 45.0675 -0.1055 2.6885 +# Sub-Saharan Africa 4.1957 38.5341 4.4553 27.9452 55.3591 0.6338 4.4174 +# +# , , Overall, ODA: Net official development assistance and official aid received (constant 2018 US$) +# +# N/T Mean SD Min Max +# East Asia & Pacific 1537 352'017964 622'847624 -997'679993 4.04487988e+09 +# Europe & Central Asia 787 402'455286 568'237036 -322'070007 4.34612988e+09 +# Latin America & Caribbean 1972 172'880081 260'781049 -444'040009 2.99568994e+09 +# Middle East & North Africa 1105 732'380009 1.52108993e+09 -141'789993 2.56715605e+10 +# North America 39 468717.916 10'653560.8 -15'869999.9 61'509998.3 +# South Asia 466 1.27049955e+09 1.61492889e+09 -247'369995 8.75425977e+09 +# Sub-Saharan Africa 2702 486'371750 656'336230 -18'409999.8 1.18790801e+10 +# Skew Kurt +# East Asia & Pacific 2.722 11.5221 +# Europe & Central Asia 3.1305 15.2525 +# Latin America & Caribbean 3.3259 22.4569 +# Middle East & North Africa 6.6304 79.2238 +# North America 4.8602 29.3092 +# South Asia 1.7923 6.501 +# Sub-Saharan Africa 4.5456 48.8447 +# +# , , Between, ODA: Net official development assistance and official aid received (constant 2018 US$) +# +# N/T Mean SD Min Max +# East Asia & Pacific 31 352'017964 457'183279 1'654615.38 1.63585532e+09 +# Europe & Central Asia 32 402'455286 438'074771 12'516000.1 2.05456932e+09 +# Latin America & Caribbean 37 172'880081 167'160838 2'225483.88 538'386665 +# Middle East & North Africa 21 732'380009 775'418887 3'112820.5 2.86174883e+09 +# North America 1 468717.916 0 468717.916 468717.916 +# South Asia 8 1.27049955e+09 1.18347893e+09 27'152499.9 3.62337432e+09 +# Sub-Saharan Africa 48 486'371750 397'995105 28'801206.9 1.55049113e+09 +# Skew Kurt +# East Asia & Pacific 1.7771 5.1361 +# Europe & Central Asia 2.0449 7.2489 +# Latin America & Caribbean 0.8981 2.4954 +# Middle East & North Africa 1.1363 3.6377 +# North America - - +# South Asia 0.7229 2.4072 +# Sub-Saharan Africa 0.9871 3.1513 +# +# , , Within, ODA: Net official development assistance and official aid received (constant 2018 US$) +# +# N/T Mean SD Min Max +# East Asia & Pacific 49.5806 454'720131 422'992450 -2.04042108e+09 3.59673152e+09 +# Europe & Central Asia 24.5938 454'720131 361'916875 -1.08796786e+09 3.30549004e+09 +# Latin America & Caribbean 53.2973 454'720131 200'159960 -527'706542 3.28976141e+09 +# Middle East & North Africa 52.619 454'720131 1.30860235e+09 -2.34610870e+09 2.45610972e+10 +# North America 39 454'720131 10'653560.8 438'381413 515'761411 +# South Asia 58.25 454'720131 1.09880524e+09 -2.44379420e+09 5.58560558e+09 +# Sub-Saharan Africa 56.2917 454'720131 521'897637 -952'168698 1.12814455e+10 +# Skew Kurt +# East Asia & Pacific 0.2908 14.4428 +# Europe & Central Asia 2.3283 18.6937 +# Latin America & Caribbean 3.7015 41.7506 +# Middle East & North Africa 7.8663 117.987 +# North America 4.8602 29.3092 +# South Asia 1.8418 9.4588 +# Sub-Saharan Africa 5.2349 86.1042 ``` Notice that the output here is a 4D array of summary statistics, which we could also subset (`[`) or permute (`aperm`) to view these statistics in any convenient way. If we don't like the array, we can also output as a nested list of statistics matrices: -```{r, eval=NCRAN} -l <- qsu(wlddev, by = ~ region, pid = ~ iso3c, cols = 9:12, vlabels = TRUE, + +```r +l <- qsu(wlddev, by = ~ region, pid = ~ iso3c, cols = 9:12, vlabels = TRUE, higher = TRUE, array = FALSE) str(l, give.attr = FALSE) +# List of 4 +# $ PCGDP: GDP per capita (constant 2010 US$) :List of 3 +# ..$ Overall: 'qsu' num [1:7, 1:7] 1467 2243 1976 842 180 ... +# ..$ Between: 'qsu' num [1:7, 1:7] 34 56 38 20 3 ... +# ..$ Within : 'qsu' num [1:7, 1:7] 43.1 40.1 52 42.1 60 ... +# $ LIFEEX: Life expectancy at birth, total (years) :List of 3 +# ..$ Overall: 'qsu' num [1:7, 1:7] 1807 3046 2107 1226 144 ... +# ..$ Between: 'qsu' num [1:7, 1:7] 32 55 40 21 3 ... +# ..$ Within : 'qsu' num [1:7, 1:7] 56.5 55.4 52.7 58.4 48 ... +# $ GINI: Gini index (World Bank estimate) :List of 3 +# ..$ Overall: 'qsu' num [1:7, 1:7] 154 798 413 91 49 ... +# ..$ Between: 'qsu' num [1:7, 1:7] 23 49 25 15 2 ... +# ..$ Within : 'qsu' num [1:7, 1:7] 6.7 16.29 16.52 6.07 24.5 ... +# $ ODA: Net official development assistance and official aid received (constant 2018 US$):List of 3 +# ..$ Overall: 'qsu' num [1:7, 1:7] 1537 787 1972 1105 39 ... +# ..$ Between: 'qsu' num [1:7, 1:7] 31 32 37 21 1 ... +# ..$ Within : 'qsu' num [1:7, 1:7] 49.6 24.6 53.3 52.6 39 ... ``` Such a list of statistics matrices could, for example, be converted into a tidy data frame using `unlist2d` (more about this in the section on list-processing): -```{r, eval=NCRAN} + +```r head(unlist2d(l, idcols = c("Variable", "Trans"), row.names = "Region")) +# Variable Trans Region N Mean +# 1 PCGDP: GDP per capita (constant 2010 US$) Overall East Asia & Pacific 1467 10513.244 +# 2 PCGDP: GDP per capita (constant 2010 US$) Overall Europe & Central Asia 2243 25992.962 +# 3 PCGDP: GDP per capita (constant 2010 US$) Overall Latin America & Caribbean 1976 7628.448 +# 4 PCGDP: GDP per capita (constant 2010 US$) Overall Middle East & North Africa 842 13878.421 +# 5 PCGDP: GDP per capita (constant 2010 US$) Overall North America 180 48699.760 +# 6 PCGDP: GDP per capita (constant 2010 US$) Overall South Asia 382 1235.926 +# SD Min Max Skew Kurt +# 1 14383.551 132.0776 71992.152 1.6392248 4.741856 +# 2 26435.132 366.9354 196061.417 2.2022472 10.197685 +# 3 8818.505 1005.4085 88391.333 4.1701769 29.373869 +# 4 18419.791 578.5996 116232.753 2.4177586 9.766883 +# 5 24196.285 16405.9053 113236.091 0.9380056 2.968769 +# 6 1611.223 265.9625 8476.564 2.7873830 10.340176 ``` -This is not yet end of `qsu`'s functionality, as we can also do all of the above on panel-surveys utilizing weights (`w` argument). +This is not yet end of `qsu`'s functionality, as we can also do all of the above on panel-surveys utilizing weights (`w` argument). Finally, we can look at (weighted) pairwise correlations in this data: -```{r, eval=NCRAN} + +```r pwcor(wlddev[9:12], N = TRUE, P = TRUE) +# PCGDP LIFEEX GINI ODA +# PCGDP 1 (9470) .57* (9022) -.44* (1735) -.16* (7128) +# LIFEEX .57* (9022) 1 (11670) -.35* (1742) -.02 (8142) +# GINI -.44* (1735) -.35* (1742) 1 (1744) -.20* (1109) +# ODA -.16* (7128) -.02 (8142) -.20* (1109) 1 (8608) ``` which can of course also be computed on averaged and within-transformed data: -```{r, eval=NCRAN} + +```r print(pwcor(fmean(wlddev[9:12], wlddev$iso3c), N = TRUE, P = TRUE), show = "lower.tri") +# PCGDP LIFEEX GINI ODA +# PCGDP 1 (206) +# LIFEEX .60* (199) 1 (207) +# GINI -.42* (165) -.40* (165) 1 (167) +# ODA -.25* (172) -.21* (172) -.19* (145) 1 (178) # N is same as overall N shown above... print(pwcor(fwithin(wlddev[9:12], wlddev$iso3c), P = TRUE), show = "lower.tri") - +# PCGDP LIFEEX GINI ODA +# PCGDP 1 +# LIFEEX .31* 1 +# GINI -.01 -.16* 1 +# ODA -.01 .17* -.08* 1 ``` A useful function called by `pwcor` is `pwnobs`, which is very handy to explore the joint observation structure when selecting variables to include in a statistical model: -```{r, eval=NCRAN} -pwnobs(wlddev) -``` -Note that both `pwcor/pwcov` and `pwnobs` are faster on matrices. +```r +pwnobs(wlddev) +# country iso3c date year decade region income OECD PCGDP LIFEEX GINI ODA POP +# country 13176 13176 13176 13176 13176 13176 13176 13176 9470 11670 1744 8608 12919 +# iso3c 13176 13176 13176 13176 13176 13176 13176 13176 9470 11670 1744 8608 12919 +# date 13176 13176 13176 13176 13176 13176 13176 13176 9470 11670 1744 8608 12919 +# year 13176 13176 13176 13176 13176 13176 13176 13176 9470 11670 1744 8608 12919 +# decade 13176 13176 13176 13176 13176 13176 13176 13176 9470 11670 1744 8608 12919 +# region 13176 13176 13176 13176 13176 13176 13176 13176 9470 11670 1744 8608 12919 +# income 13176 13176 13176 13176 13176 13176 13176 13176 9470 11670 1744 8608 12919 +# OECD 13176 13176 13176 13176 13176 13176 13176 13176 9470 11670 1744 8608 12919 +# PCGDP 9470 9470 9470 9470 9470 9470 9470 9470 9470 9022 1735 7128 9470 +# LIFEEX 11670 11670 11670 11670 11670 11670 11670 11670 9022 11670 1742 8142 11659 +# GINI 1744 1744 1744 1744 1744 1744 1744 1744 1735 1742 1744 1109 1744 +# ODA 8608 8608 8608 8608 8608 8608 8608 8608 7128 8142 1109 8608 8597 +# POP 12919 12919 12919 12919 12919 12919 12919 12919 9470 11659 1744 8597 12919 +``` + +Note that both `pwcor/pwcov` and `pwnobs` are faster on matrices. @@ -213,40 +755,177 @@ Note that both `pwcor/pwcov` and `pwnobs` are faster on matrices. ### 1.2 `GGDC10S` - GGDC 10-Sector Database The Groningen Growth and Development Centre 10-Sector Database provides long-run data on sectoral productivity performance in Africa, Asia, and Latin America. Variables covered in the data set are annual series of value added (VA, in local currency), and persons employed (EMP) for 10 broad sectors. -```{r, eval=NCRAN} + +```r head(GGDC10S) +# Country Regioncode Region Variable Year AGR MIN MAN PU +# 1 BWA SSA Sub-saharan Africa VA 1960 NA NA NA NA +# 2 BWA SSA Sub-saharan Africa VA 1961 NA NA NA NA +# 3 BWA SSA Sub-saharan Africa VA 1962 NA NA NA NA +# 4 BWA SSA Sub-saharan Africa VA 1963 NA NA NA NA +# 5 BWA SSA Sub-saharan Africa VA 1964 16.30154 3.494075 0.7365696 0.1043936 +# 6 BWA SSA Sub-saharan Africa VA 1965 15.72700 2.495768 1.0181992 0.1350976 +# CON WRT TRA FIRE GOV OTH SUM +# 1 NA NA NA NA NA NA NA +# 2 NA NA NA NA NA NA NA +# 3 NA NA NA NA NA NA NA +# 4 NA NA NA NA NA NA NA +# 5 0.6600454 6.243732 1.658928 1.119194 4.822485 2.341328 37.48229 +# 6 1.3462312 7.064825 1.939007 1.246789 5.695848 2.678338 39.34710 namlab(GGDC10S, class = TRUE) +# Variable Class Label +# 1 Country character Country +# 2 Regioncode character Region code +# 3 Region character Region +# 4 Variable character Variable +# 5 Year numeric Year +# 6 AGR numeric Agriculture +# 7 MIN numeric Mining +# 8 MAN numeric Manufacturing +# 9 PU numeric Utilities +# 10 CON numeric Construction +# 11 WRT numeric Trade, restaurants and hotels +# 12 TRA numeric Transport, storage and communication +# 13 FIRE numeric Finance, insurance, real estate and business services +# 14 GOV numeric Government services +# 15 OTH numeric Community, social and personal services +# 16 SUM numeric Summation of sector GDP fnobs(GGDC10S) +# Country Regioncode Region Variable Year AGR MIN MAN PU +# 5027 5027 5027 5027 5027 4364 4355 4355 4354 +# CON WRT TRA FIRE GOV OTH SUM +# 4355 4355 4355 4355 3482 4248 4364 fndistinct(GGDC10S) +# Country Regioncode Region Variable Year AGR MIN MAN PU +# 43 6 6 2 67 4353 4224 4353 4237 +# CON WRT TRA FIRE GOV OTH SUM +# 4339 4344 4334 4349 3470 4238 4364 # The countries included: cat(funique(GGDC10S$Country, sort = TRUE)) - +# ARG BOL BRA BWA CHL CHN COL CRI DEW DNK EGY ESP ETH FRA GBR GHA HKG IDN IND ITA JPN KEN KOR MEX MOR MUS MWI MYS NGA NGA(alt) NLD PER PHL SEN SGP SWE THA TWN TZA USA VEN ZAF ZMB ``` -The first problem in summarizing this data is that value added (VA) is in local currency, the second that it contains 2 different Variables (VA and EMP) stacked in the same column. One way of solving the first problem could be converting the data to percentages through dividing by the overall VA and EMP contained in the last column. A different solution involving grouped-scaling is introduced in section 6.4. The second problem is again nicely handled by `qsu`, which can also compute panel-statistics by groups. -```{r, eval=NCRAN} +The first problem in summarizing this data is that value added (VA) is in local currency, the second that it contains 2 different Variables (VA and EMP) stacked in the same column. One way of solving the first problem could be converting the data to percentages through dividing by the overall VA and EMP contained in the last column. A different solution involving grouped-scaling is introduced in section 6.4. The second problem is again nicely handled by `qsu`, which can also compute panel-statistics by groups. + +```r # Converting data to percentages of overall VA / EMP, dapply keeps the attributes, see section 6.1 -pGGDC10S <- ftransformv(GGDC10S, 6:15, `*`, 100 / SUM) +pGGDC10S <- ftransformv(GGDC10S, 6:15, `*`, 100 / SUM) # Summarizing the sectoral data by variable, overall, between and within countries -su <- qsu(pGGDC10S, by = ~ Variable, pid = ~ Variable + Country, - cols = 6:16, higher = TRUE) +su <- qsu(pGGDC10S, by = ~ Variable, pid = ~ Variable + Country, + cols = 6:16, higher = TRUE) # This gives a 4D array of summary statistics str(su) +# 'qsu' num [1:2, 1:7, 1:3, 1:11] 2225 2139 35.1 17.3 26.7 ... +# - attr(*, "dimnames")=List of 4 +# ..$ : chr [1:2] "EMP" "VA" +# ..$ : chr [1:7] "N/T" "Mean" "SD" "Min" ... +# ..$ : chr [1:3] "Overall" "Between" "Within" +# ..$ : chr [1:11] "AGR" "MIN" "MAN" "PU" ... # Permuting this array to a more readible format aperm(su, c(4L, 2L, 3L, 1L)) -``` -The statistics show that the dataset is very consistent: Employment data cover 42 countries and 53 time-periods in almost all sectors. Agriculture is the largest sector in terms of employment, amounting to a 35% share of employment across countries and time, with a standard deviation (SD) of around 27%. The between-country SD in agricultural employment share is 24% and the within SD is 12%, indicating that processes of structural change are very gradual and most of the variation in structure is between countries. The next largest sectors after agriculture are manufacturing, wholesale and retail trade and government, each claiming an approx. 15% share of the economy. In these sectors the between-country SD is also about twice as large as the within-country SD. - -In terms of value added, the data covers 43 countries in 50 time-periods. Agriculture, manufacturing, wholesale and retail trade and government are also the largest sectors in terms of VA, but with a diminished agricultural share (around 17%) and a greater share for manufacturing (around 20%). The variation between countries is again greater than the variation within countries, but it seems that at least in terms of agricultural VA share there is also a considerable within-country SD of 8%. This is also true for the finance and real estate sector with a within SD of 9%, suggesting (using a bit of common sense) that a diminishing VA share in agriculture and increased VA share in finance and real estate was a pattern characterizing most of the countries in this sample. +# , , Overall, EMP +# +# N/T Mean SD Min Max Skew Kurt +# AGR 2225 35.0949 26.7235 0.156 100 0.4856 2.0951 +# MIN 2216 1.0349 1.4247 0.0043 9.4097 3.1281 15.0429 +# MAN 2216 14.9768 8.0392 0.5822 45.2974 0.4272 2.8455 +# PU 2215 0.5782 0.3601 0.0154 2.4786 1.2588 5.5822 +# CON 2216 5.6583 2.9252 0.1417 15.9887 -0.0631 2.2725 +# WRT 2216 14.9155 6.5573 0.809 32.8046 -0.1814 2.3226 +# TRA 2216 4.8193 2.652 0.1506 15.0454 0.9477 4.4695 +# FIRE 2216 4.6501 4.3518 0.0799 21.7717 1.2345 4.0831 +# GOV 1780 13.1263 8.0844 0 34.8897 0.6301 2.5338 +# OTH 2109 8.3977 6.6409 0.421 34.8942 1.4028 4.3191 +# SUM 2225 36846.8741 96318.6544 173.8829 764200 5.0229 30.9814 +# +# , , Between, EMP +# +# N/T Mean SD Min Max Skew Kurt +# AGR 42 35.0949 24.1204 0.9997 88.3263 0.5202 2.2437 +# MIN 42 1.0349 1.2304 0.0296 6.8532 2.7313 12.331 +# MAN 42 14.9768 7.0375 1.718 32.3439 -0.0164 2.4321 +# PU 42 0.5782 0.3041 0.0671 1.3226 0.5459 2.6905 +# CON 42 5.6583 2.4748 0.5037 10.3691 -0.4442 2.3251 +# WRT 42 14.9155 5.264 4.0003 26.7699 -0.5478 2.7294 +# TRA 42 4.8193 2.4712 0.374 12.3887 0.9782 4.7857 +# FIRE 42 4.6501 3.4468 0.1505 12.4402 0.6052 2.5883 +# GOV 34 13.1263 7.2832 2.0086 29.1577 0.3858 2.1068 +# OTH 40 8.3977 6.266 1.3508 26.4036 1.4349 4.3185 +# SUM 42 36846.8741 89205.503 369.2353 485820.474 4.0761 19.3159 +# +# , , Within, EMP +# +# N/T Mean SD Min Max Skew Kurt +# AGR 52.9762 26.3768 11.5044 -5.3234 107.4891 1.6002 11.9683 +# MIN 52.7619 3.4006 0.7182 -1.4068 7.509 -0.1988 15.0343 +# MAN 52.7619 17.476 3.8861 -1.1061 40.3964 -0.082 7.3994 +# PU 52.7381 1.3896 0.1929 0.6346 2.5461 0.5731 7.8523 +# CON 52.7619 5.7633 1.5596 0.8964 12.9663 0.3077 4.1248 +# WRT 52.7619 15.7581 3.91 3.7356 29.7615 0.3339 3.3386 +# TRA 52.7619 6.3486 0.9623 2.3501 11.1064 0.2671 5.7162 +# FIRE 52.7619 5.8228 2.6567 -2.9836 15.9974 0.5486 4.0288 +# GOV 52.3529 13.263 3.5088 -2.1983 23.611 -0.5647 4.7286 +# OTH 52.725 7.3941 2.1999 -2.3286 17.4413 0.2929 6.4631 +# SUM 52.9762 21'566436.8 36327.1443 21'287906.3 21'844816.3 0.6649 34.2495 +# +# , , Overall, VA +# +# N/T Mean SD Min Max Skew Kurt +# AGR 2139 17.3082 15.5066 0.0318 95.222 1.3274 4.8827 +# MIN 2139 5.8514 9.0975 0 59.0602 2.7193 10.9184 +# MAN 2139 20.0651 8.0033 0.979 41.6281 -0.0348 2.6831 +# PU 2139 2.2298 1.1088 0 9.1888 0.8899 6.2385 +# CON 2139 5.8721 2.5113 0.5951 25.8575 1.5002 8.9578 +# WRT 2139 16.631 5.1374 4.5187 39.7594 0.3455 3.2655 +# TRA 2139 7.9329 3.1057 0.7957 25.9625 1.0122 5.7137 +# FIRE 2139 7.0377 12.7077 -151.065 39.1705 -6.2254 59.8739 +# GOV 1702 13.406 6.3521 0.7607 32.5107 0.4888 2.9043 +# OTH 2139 6.4046 5.8416 0.2327 31.4474 1.4978 4.2051 +# SUM 2139 43'961639.1 358'350627 0 8.06794210e+09 15.7682 289.4632 +# +# , , Between, VA +# +# N/T Mean SD Min Max Skew Kurt +# AGR 43 17.3082 13.1901 0.6058 63.8364 1.1328 4.7111 +# MIN 43 5.8514 7.5705 0.0475 27.9214 1.7113 4.807 +# MAN 43 20.0651 6.6423 4.1869 32.1138 -0.3591 2.619 +# PU 43 2.2298 0.7457 0.4462 4.307 0.6196 3.8724 +# CON 43 5.8721 1.8455 2.9405 12.9279 1.3285 6.505 +# WRT 43 16.631 4.3779 8.4188 26.3876 0.292 2.4553 +# TRA 43 7.9329 2.7222 2.037 14.8892 0.6362 3.6686 +# FIRE 43 7.0377 9.0284 -35.6144 23.8658 -2.674 15.0975 +# GOV 35 13.406 5.875 1.9757 27.7714 0.5198 3.0416 +# OTH 43 6.4046 5.6137 1.1184 19.5299 1.3274 3.2043 +# SUM 43 43'961639.1 185'785836 5077.7231 1.23317892e+09 5.8098 36.9778 +# +# , , Within, VA +# +# N/T Mean SD Min Max Skew Kurt +# AGR 49.7442 26.3768 8.1532 5.245 94.3499 1.234 9.5269 +# MIN 49.7442 3.4006 5.0451 -20.051 35.7053 0.341 13.102 +# MAN 49.7442 17.476 4.4647 1.1188 36.3501 -0.1928 3.9339 +# PU 49.7442 1.3896 0.8206 -1.0904 6.2714 0.5258 5.3462 +# CON 49.7442 5.7633 1.7031 -0.3464 18.6929 0.7493 6.3751 +# WRT 49.7442 15.7581 2.6884 4.6513 32.6691 0.2338 4.4953 +# TRA 49.7442 6.3486 1.4951 0.9187 18.5977 0.6995 10.1129 +# FIRE 49.7442 5.8228 8.9428 -109.6278 54.1241 -2.7728 54.5971 +# GOV 48.6286 13.263 2.4153 5.1249 22.8497 0.1663 3.3083 +# OTH 49.7442 7.3941 1.6159 -0.9151 19.3116 0.7301 9.6613 +# SUM 49.7442 21'566436.8 306'429102 -1.21124805e+09 6.85632962e+09 12.6639 253.1145 +``` +The statistics show that the dataset is very consistent: Employment data cover 42 countries and 53 time-periods in almost all sectors. Agriculture is the largest sector in terms of employment, amounting to a 35% share of employment across countries and time, with a standard deviation (SD) of around 27%. The between-country SD in agricultural employment share is 24% and the within SD is 12%, indicating that processes of structural change are very gradual and most of the variation in structure is between countries. The next largest sectors after agriculture are manufacturing, wholesale and retail trade and government, each claiming an approx. 15% share of the economy. In these sectors the between-country SD is also about twice as large as the within-country SD. + +In terms of value added, the data covers 43 countries in 50 time-periods. Agriculture, manufacturing, wholesale and retail trade and government are also the largest sectors in terms of VA, but with a diminished agricultural share (around 17%) and a greater share for manufacturing (around 20%). The variation between countries is again greater than the variation within countries, but it seems that at least in terms of agricultural VA share there is also a considerable within-country SD of 8%. This is also true for the finance and real estate sector with a within SD of 9%, suggesting (using a bit of common sense) that a diminishing VA share in agriculture and increased VA share in finance and real estate was a pattern characterizing most of the countries in this sample. As a final step we consider a plot function which can be used to plot the structural transformation of any supported country. Below for Botswana: -```{r, eval=NCRAN} + +```r library(data.table) library(ggplot2) library(magrittr) @@ -255,16 +934,16 @@ plotGGDC <- function(ctry) { # Select and subset fsubset(GGDC10S, Country == ctry, Variable, Year, AGR:SUM) %>% # Convert to shares and replace negative values with NA - ftransform(fselect(., AGR:OTH) %>% - lapply(`*`, 1 / SUM) %>% + ftransform(fselect(., AGR:OTH) %>% + lapply(`*`, 1 / SUM) %>% replace_outliers(0, NA, "min")) %>% # Remove totals column and make proper variable labels - ftransform(Variable = recode_char(Variable, + ftransform(Variable = recode_char(Variable, VA = "Value Added Share", EMP = "Employment Share"), - SUM = NULL) %>% + SUM = NULL) %>% # Fast conversion to data.table - qDT %>% + qDT %>% # data.table's melt function melt(1:2, variable.name = "Sector", na.rm = TRUE) %>% # ggplot with some scales provided by the 'scales' package @@ -282,15 +961,19 @@ plotGGDC <- function(ctry) { # Plotting the structural transformation of Botswana plotGGDC("BWA") - ``` +
+plot of chunk scplot_BWA +

plot of chunk scplot_BWA

+
+ ## 2. Fast Data Manipulation A lot of R code is not concerned with statistical computations but with preliminary data wrangling. - -For various reasons R development has focused on data frames as the main medium to contain data, although matrices / arrays provide significantly faster methods for common manipulations. + +For various reasons R development has focused on data frames as the main medium to contain data, although matrices / arrays provide significantly faster methods for common manipulations. -A first essential step towards optimizing R code is thus to speed up very frequent manipulations on data frames. *collapse* introduces a set of highly optimized functions to efficiently manipulate (mostly) data frames. Most manipulations can be conducted in non-standard evaluation or standard evaluation (utilizing different functions), and all functions preserve the data structure (i.e. they can be used with data.table, tbl_df, grouped_df, pdata.frame etc.). +A first essential step towards optimizing R code is thus to speed up very frequent manipulations on data frames. *collapse* introduces a set of highly optimized functions to efficiently manipulate (mostly) data frames. Most manipulations can be conducted in non-standard evaluation or standard evaluation (utilizing different functions), and all functions preserve the data structure (i.e. they can be used with data.table, tbl_df, grouped_df, pdata.frame etc.). @@ -298,39 +981,70 @@ A first essential step towards optimizing R code is thus to speed up very freque `fselect` is an analogue to `dplyr::select`, but executes about 100x faster. It can be used to select variables using expressions involving variable names: -```{r, eval=NCRAN} + +```r library(magrittr) # Pipe operators fselect(wlddev, country, year, PCGDP:ODA) %>% head(2) +# country year PCGDP LIFEEX GINI ODA +# 1 Afghanistan 1960 NA 32.446 NA 116769997 +# 2 Afghanistan 1961 NA 32.962 NA 232080002 fselect(wlddev, -country, -year, -(PCGDP:ODA)) %>% head(2) +# iso3c date decade region income OECD POP +# 1 AFG 1961-01-01 1960 South Asia Low income FALSE 8996973 +# 2 AFG 1962-01-01 1960 South Asia Low income FALSE 9169410 library(microbenchmark) microbenchmark(fselect = collapse::fselect(wlddev, country, year, PCGDP:ODA), select = dplyr::select(wlddev, country, year, PCGDP:ODA)) +# Unit: microseconds +# expr min lq mean median uq max neval +# fselect 2.911 3.4645 4.76297 4.3665 5.3710 20.459 100 +# select 382.284 393.0055 442.70734 410.3075 441.4265 2951.262 100 ``` in contrast to `dplyr::select`, `fselect` has a replacement method -```{r, eval=NCRAN} + +```r # Computing the log of columns fselect(wlddev, PCGDP:POP) <- lapply(fselect(wlddev, PCGDP:POP), log) head(wlddev, 2) +# country iso3c date year decade region income OECD PCGDP LIFEEX GINI ODA +# 1 Afghanistan AFG 1961-01-01 1960 1960 South Asia Low income FALSE NA 3.479577 NA 18.57572 +# 2 Afghanistan AFG 1962-01-01 1961 1960 South Asia Low income FALSE NA 3.495355 NA 19.26259 +# POP +# 1 16.01240 +# 2 16.03138 # Efficient deleting fselect(wlddev, country, year, PCGDP:POP) <- NULL head(wlddev, 2) +# iso3c date decade region income OECD +# 1 AFG 1961-01-01 1960 South Asia Low income FALSE +# 2 AFG 1962-01-01 1960 South Asia Low income FALSE rm(wlddev) ``` and it can also return information about the selected columns other than the data itself. -```{r, eval=NCRAN} + +```r fselect(wlddev, PCGDP:POP, return = "names") +# [1] "PCGDP" "LIFEEX" "GINI" "ODA" "POP" fselect(wlddev, PCGDP:POP, return = "indices") +# [1] 9 10 11 12 13 fselect(wlddev, PCGDP:POP, return = "named_indices") +# PCGDP LIFEEX GINI ODA POP +# 9 10 11 12 13 fselect(wlddev, PCGDP:POP, return = "logical") +# [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE fselect(wlddev, PCGDP:POP, return = "named_logical") +# country iso3c date year decade region income OECD PCGDP LIFEEX GINI ODA +# FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE +# POP +# TRUE ``` -While `fselect` is faster than `dplyr::select`, it is also simpler and does not offer special methods for grouped tibbles (e.g. where grouping columns are always selected) and some other *dplyr*-specific features of `select`. We will see that this is not a problem at all when working with statistical functions in *collapse* that have a grouped_df method, but users should be careful replacing `dplyr::select` with `fselect` in *dplyr* scripts. From *collapse* 1.6.0, `fselect` has explicit support for *sf* data frames. +While `fselect` is faster than `dplyr::select`, it is also simpler and does not offer special methods for grouped tibbles (e.g. where grouping columns are always selected) and some other *dplyr*-specific features of `select`. We will see that this is not a problem at all when working with statistical functions in *collapse* that have a grouped_df method, but users should be careful replacing `dplyr::select` with `fselect` in *dplyr* scripts. From *collapse* 1.6.0, `fselect` has explicit support for *sf* data frames. @@ -342,26 +1056,45 @@ While `fselect` is faster than `dplyr::select`, it is also simpler and does not The standard-evaluation analogue to `fselect` is the function `get_vars`. `get_vars` can be used to select variables using names, indices, logical vectors, functions or regular expressions evaluated against column names: -```{r, eval=NCRAN} + +```r get_vars(wlddev, 9:13) %>% head(1) +# PCGDP LIFEEX GINI ODA POP +# 1 NA 32.446 NA 116769997 8996973 get_vars(wlddev, c("PCGDP","LIFEEX","GINI","ODA","POP")) %>% head(1) +# PCGDP LIFEEX GINI ODA POP +# 1 NA 32.446 NA 116769997 8996973 get_vars(wlddev, "[[:upper:]]", regex = TRUE) %>% head(1) +# OECD PCGDP LIFEEX GINI ODA POP +# 1 FALSE NA 32.446 NA 116769997 8996973 get_vars(wlddev, "PC|LI|GI|OD|PO", regex = TRUE) %>% head(1) +# PCGDP LIFEEX GINI ODA POP +# 1 NA 32.446 NA 116769997 8996973 # Same as above, vectors of regular expressions are sequentially passed to grep get_vars(wlddev, c("PC","LI","GI","OD","PO"), regex = TRUE) %>% head(1) +# PCGDP LIFEEX GINI ODA POP +# 1 NA 32.446 NA 116769997 8996973 get_vars(wlddev, is.numeric) %>% head(1) +# year decade PCGDP LIFEEX GINI ODA POP +# 1 1960 1960 NA 32.446 NA 116769997 8996973 # Returning other information get_vars(wlddev, is.numeric, return = "names") +# [1] "year" "decade" "PCGDP" "LIFEEX" "GINI" "ODA" "POP" get_vars(wlddev, "[[:upper:]]", regex = TRUE, return = "named_indices") - +# OECD PCGDP LIFEEX GINI ODA POP +# 8 9 10 11 12 13 ``` Replacing operations are conducted analogous: -```{r, eval=NCRAN} + +```r get_vars(wlddev, 9:13) <- lapply(get_vars(wlddev, 9:13), log) get_vars(wlddev, 9:13) <- NULL head(wlddev, 2) +# country iso3c date year decade region income OECD +# 1 Afghanistan AFG 1961-01-01 1960 1960 South Asia Low income FALSE +# 2 Afghanistan AFG 1962-01-01 1961 1960 South Asia Low income FALSE rm(wlddev) ``` @@ -374,89 +1107,161 @@ rm(wlddev) -In addition to `get_vars`, *collapse* offers a set of functions to efficiently select and replace data by data type: `num_vars`, `cat_vars` (for categorical = non-numeric columns), `char_vars`, `fact_vars`, `logi_vars` and `date_vars` (for date and date-time columns). +In addition to `get_vars`, *collapse* offers a set of functions to efficiently select and replace data by data type: `num_vars`, `cat_vars` (for categorical = non-numeric columns), `char_vars`, `fact_vars`, `logi_vars` and `date_vars` (for date and date-time columns). -```{r, eval=NCRAN} + +```r head(num_vars(wlddev), 2) +# year decade PCGDP LIFEEX GINI ODA POP +# 1 1960 1960 NA 32.446 NA 116769997 8996973 +# 2 1961 1960 NA 32.962 NA 232080002 9169410 head(cat_vars(wlddev), 2) +# country iso3c date region income OECD +# 1 Afghanistan AFG 1961-01-01 South Asia Low income FALSE +# 2 Afghanistan AFG 1962-01-01 South Asia Low income FALSE head(fact_vars(wlddev), 2) +# iso3c region income +# 1 AFG South Asia Low income +# 2 AFG South Asia Low income # Replacing fact_vars(wlddev) <- fact_vars(wlddev) ``` ### 2.2 Subsetting -`fsubset` is an enhanced version of `base::subset` using C functions from the *data.table* package for fast and subsetting operations. In contrast to `base::subset`, `fsubset` allows multiple comma-separated select arguments after the subset argument, and it also preserves all attributes of subsetted columns: +`fsubset` is an enhanced version of `base::subset` using C functions from the *data.table* package for fast and subsetting operations. In contrast to `base::subset`, `fsubset` allows multiple comma-separated select arguments after the subset argument, and it also preserves all attributes of subsetted columns: + -```{r, eval=NCRAN} +```r # Returning only value-added data after 1990 fsubset(GGDC10S, Variable == "VA" & Year > 1990, Country, Year, AGR:GOV) %>% head(2) +# Country Year AGR MIN MAN PU CON WRT TRA FIRE GOV +# 1 BWA 1991 303.1157 2646.950 472.6488 160.6079 580.0876 806.7509 232.7884 432.6965 1073.263 +# 2 BWA 1992 333.4364 2690.939 537.4274 178.4532 678.7320 725.2577 285.1403 517.2141 1234.012 # Same thing fsubset(GGDC10S, Variable == "VA" & Year > 1990, -(Regioncode:Variable), -(OTH:SUM)) %>% head(2) +# Country Year AGR MIN MAN PU CON WRT TRA FIRE GOV +# 1 BWA 1991 303.1157 2646.950 472.6488 160.6079 580.0876 806.7509 232.7884 432.6965 1073.263 +# 2 BWA 1992 333.4364 2690.939 537.4274 178.4532 678.7320 725.2577 285.1403 517.2141 1234.012 ``` It is also possible to use standard evaluation with `fsubset`, but for these purposes the function `ss` exists as a fast and more secure alternative to `[.data.frame`: -```{r, eval=NCRAN} + +```r ss(GGDC10S, 1:2, 6:16) # or fsubset(GGDC10S, 1:2, 6:16), but not recommended. +# AGR MIN MAN PU CON WRT TRA FIRE GOV OTH SUM +# 1 NA NA NA NA NA NA NA NA NA NA NA +# 2 NA NA NA NA NA NA NA NA NA NA NA ss(GGDC10S, -(1:2), c("AGR","MIN")) %>% head(2) +# AGR MIN +# 1 NA NA +# 2 NA NA ``` Thanks to the *data.table* C code and optimized R code, `fsubset` is very fast. -```{r, eval=NCRAN} -microbenchmark(base = subset(GGDC10S, Variable == "VA" & Year > 1990, AGR:SUM), + +```r +microbenchmark(base = subset(GGDC10S, Variable == "VA" & Year > 1990, AGR:SUM), collapse = fsubset(GGDC10S, Variable == "VA" & Year > 1990, AGR:SUM)) +# Unit: microseconds +# expr min lq mean median uq max neval +# base 150.839 156.5585 199.63105 160.3510 166.993 3778.191 100 +# collapse 45.715 49.0975 51.55545 50.9015 52.357 82.861 100 microbenchmark(GGDC10S[1:10, 1:10], ss(GGDC10S, 1:10, 1:10)) +# Unit: microseconds +# expr min lq mean median uq max neval +# GGDC10S[1:10, 1:10] 36.367 36.982 38.14599 37.515 38.294 76.219 100 +# ss(GGDC10S, 1:10, 1:10) 1.886 2.050 2.30666 2.214 2.419 8.405 100 ``` like `base::subset`, `fsubset` is S3 generic with methods for vectors, matrices and data frames. For certain classes such as factors, `fsubset.default` also improves upon `[`, but the largest improvements are with the data frame method. ### 2.3 Reordering Rows and Columns -`roworder` is a fast analogue to `dplyr::arrange`. The syntax is inspired by `data.table::setorder`, so that negative variable names indicate descending sort. +`roworder` is a fast analogue to `dplyr::arrange`. The syntax is inspired by `data.table::setorder`, so that negative variable names indicate descending sort. + -```{r, eval=NCRAN} +```r roworder(GGDC10S, -Variable, Country) %>% ss(1:2, 1:8) +# Country Regioncode Region Variable Year AGR MIN MAN +# 1 ARG LAM Latin America VA 1950 5.887857e-07 0 3.53443e-06 +# 2 ARG LAM Latin America VA 1951 9.165327e-07 0 4.77277e-06 -microbenchmark(collapse = collapse::roworder(GGDC10S, -Variable, Country), +microbenchmark(collapse = collapse::roworder(GGDC10S, -Variable, Country), dplyr = dplyr::arrange(GGDC10S, desc(Variable), Country)) +# Unit: microseconds +# expr min lq mean median uq max neval +# collapse 113.406 152.151 176.7567 165.722 183.0855 538.330 100 +# dplyr 1240.168 1299.372 1618.5869 1384.755 1507.8160 8350.552 100 ``` In contrast to `data.table::setorder`, `roworder` creates a copy of the data frame (unless data are already sorted). If this copy is not required, `data.table::setorder` is faster. The function `roworderv` is a standard evaluation analogue to `roworder`: -```{r, eval=NCRAN} + +```r # Same as above roworderv(GGDC10S, c("Variable", "Country"), decreasing = c(TRUE, FALSE)) %>% ss(1:2, 1:8) +# Country Regioncode Region Variable Year AGR MIN MAN +# 1 ARG LAM Latin America VA 1950 5.887857e-07 0 3.53443e-06 +# 2 ARG LAM Latin America VA 1951 9.165327e-07 0 4.77277e-06 ``` With `roworderv`, it is also possible to move or exchange rows in a data frame: -```{r, eval=NCRAN} + +```r # If length(neworder) < fnrow(data), the default (pos = "front") brings rows to the front roworderv(GGDC10S, neworder = which(GGDC10S$Country == "GHA")) %>% ss(1:2, 1:8) +# Country Regioncode Region Variable Year AGR MIN MAN +# 1 GHA SSA Sub-saharan Africa VA 1960 0.03576160 0.005103683 0.01744687 +# 2 GHA SSA Sub-saharan Africa VA 1961 0.03823049 0.005456030 0.01865136 # pos = "end" brings rows to the end roworderv(GGDC10S, neworder = which(GGDC10S$Country == "BWA"), pos = "end") %>% ss(1:2, 1:8) +# Country Regioncode Region Variable Year AGR MIN MAN +# 1 ETH SSA Sub-saharan Africa VA 1960 NA NA NA +# 2 ETH SSA Sub-saharan Africa VA 1961 4495.614 11.86979 109.616 # pos = "exchange" arranges selected rows in the order they are passed, without affecting other rows -roworderv(GGDC10S, neworder = with(GGDC10S, c(which(Country == "GHA"), +roworderv(GGDC10S, neworder = with(GGDC10S, c(which(Country == "GHA"), which(Country == "BWA"))), pos = "exchange") %>% ss(1:2, 1:8) +# Country Regioncode Region Variable Year AGR MIN MAN +# 1 GHA SSA Sub-saharan Africa VA 1960 0.03576160 0.005103683 0.01744687 +# 2 GHA SSA Sub-saharan Africa VA 1961 0.03823049 0.005456030 0.01865136 ``` -Similarly, the pair `colorder` / `colorderv` facilitates efficient reordering of columns in a data frame. These functions not require a deep copy of the data and are very fast. To reorder columns by reference, see also `data.table::setcolorder`. -```{r, eval=NCRAN} +Similarly, the pair `colorder` / `colorderv` facilitates efficient reordering of columns in a data frame. These functions not require a deep copy of the data and are very fast. To reorder columns by reference, see also `data.table::setcolorder`. + +```r # The default is again pos = "front" which brings selected columns to the front / left colorder(GGDC10S, Variable, Country, Year) %>% head(2) +# Variable Country Year Regioncode Region AGR MIN MAN PU CON WRT TRA FIRE GOV OTH SUM +# 1 VA BWA 1960 SSA Sub-saharan Africa NA NA NA NA NA NA NA NA NA NA NA +# 2 VA BWA 1961 SSA Sub-saharan Africa NA NA NA NA NA NA NA NA NA NA NA ``` ### 2.4 Transforming and Computing New Columns `ftransform` is an improved version of `base::transform` for data frames and lists. `ftransform` can be used to compute new columns or modify and delete existing columns, and always returns the entire data frame. -```{r, eval=NCRAN} + +```r ftransform(GGDC10S, AGR_perc = AGR / SUM * 100, # Computing Agricultural percentage Year = as.integer(Year), # Coercing Year to integer AGR = NULL) %>% tail(2) # Deleting column AGR +# Country Regioncode Region Variable Year MIN MAN PU +# 5026 EGY MENA Middle East and North Africa EMP 2011 27.56394 2373.814 317.9979 +# 5027 EGY MENA Middle East and North Africa EMP 2012 24.78083 2348.434 324.9332 +# CON WRT TRA FIRE GOV OTH SUM AGR_perc +# 5026 2795.264 3020.236 2048.335 814.7403 5635.522 NA 22219.39 23.33961 +# 5027 2931.196 3109.522 2065.004 832.4770 5735.623 NA 22532.56 22.90281 # Computing scalar results replicates them ftransform(GGDC10S, MIN_mean = fmean(MIN), Intercept = 1) %>% tail(2) +# Country Regioncode Region Variable Year AGR MIN MAN +# 5026 EGY MENA Middle East and North Africa EMP 2011 5185.919 27.56394 2373.814 +# 5027 EGY MENA Middle East and North Africa EMP 2012 5160.590 24.78083 2348.434 +# PU CON WRT TRA FIRE GOV OTH SUM MIN_mean Intercept +# 5026 317.9979 2795.264 3020.236 2048.335 814.7403 5635.522 NA 22219.39 1867909 1 +# 5027 324.9332 2931.196 3109.522 2065.004 832.4770 5735.623 NA 22532.56 1867909 1 ``` The modification `ftransformv` exists to transform specific columns using a function: @@ -466,36 +1271,75 @@ The modification `ftransformv` exists to transform specific columns using a func # GGDC10S %>% ftransformv(fselect(., AGR:SUM, return = "indices"), `*`, 100/SUM) %>% tail(2) --> -```{r, eval=NCRAN} + +```r # Apply the log to columns 6-16 GGDC10S %>% ftransformv(6:16, log) %>% tail(2) - -# Convert data to percentage terms +# Country Regioncode Region Variable Year AGR MIN MAN +# 5026 EGY MENA Middle East and North Africa EMP 2011 8.553702 3.316508 7.772253 +# 5027 EGY MENA Middle East and North Africa EMP 2012 8.548806 3.210070 7.761504 +# PU CON WRT TRA FIRE GOV OTH SUM +# 5026 5.762045 7.935682 8.013090 7.624782 6.702869 8.636845 NA 10.00872 +# 5027 5.783620 7.983166 8.042224 7.632888 6.724406 8.654452 NA 10.02272 + +# Convert data to percentage terms GGDC10S %>% ftransformv(6:16, `*`, 100/SUM) %>% tail(2) +# Country Regioncode Region Variable Year AGR MIN MAN +# 5026 EGY MENA Middle East and North Africa EMP 2011 23.33961 0.1240535 10.68352 +# 5027 EGY MENA Middle East and North Africa EMP 2012 22.90281 0.1099779 10.42240 +# PU CON WRT TRA FIRE GOV OTH SUM +# 5026 1.431173 12.58029 13.59279 9.218680 3.666798 25.36308 NA 100 +# 5027 1.442061 13.00871 13.80013 9.164534 3.694551 25.45482 NA 100 # Apply log to numeric columns GGDC10S %>% ftransformv(is.numeric, log) %>% tail(2) +# Country Regioncode Region Variable Year AGR MIN MAN +# 5026 EGY MENA Middle East and North Africa EMP 7.606387 8.553702 3.316508 7.772253 +# 5027 EGY MENA Middle East and North Africa EMP 7.606885 8.548806 3.210070 7.761504 +# PU CON WRT TRA FIRE GOV OTH SUM +# 5026 5.762045 7.935682 8.013090 7.624782 6.702869 8.636845 NA 10.00872 +# 5027 5.783620 7.983166 8.042224 7.632888 6.724406 8.654452 NA 10.02272 ``` Instead of passing comma-separated `column = value` expressions, it is also possible to bulk-process data with `fransform` by passing a single list of expressions (such as a data frame). This is useful for more complex transformations involving multiple steps: -```{r, eval=NCRAN} + +```r # Same as above, but also replacing any generated infinite values with NA GGDC10S %>% ftransform(num_vars(.) %>% lapply(log) %>% replace_Inf) %>% tail(2) -``` -This mode of usage toggles automatic column matching and replacement. Non-matching columns are added to the data frame. Apart from to `ftransform`, the function `settransform(v)` can be used to change the input data frame by reference: +# Country Regioncode Region Variable Year AGR MIN MAN +# 5026 EGY MENA Middle East and North Africa EMP 7.606387 8.553702 3.316508 7.772253 +# 5027 EGY MENA Middle East and North Africa EMP 7.606885 8.548806 3.210070 7.761504 +# PU CON WRT TRA FIRE GOV OTH SUM +# 5026 5.762045 7.935682 8.013090 7.624782 6.702869 8.636845 NA 10.00872 +# 5027 5.783620 7.983166 8.042224 7.632888 6.724406 8.654452 NA 10.02272 +``` +This mode of usage toggles automatic column matching and replacement. Non-matching columns are added to the data frame. Apart from to `ftransform`, the function `settransform(v)` can be used to change the input data frame by reference: -```{r, eval=NCRAN} + +```r # Computing a new column and deleting some others by reference settransform(GGDC10S, FIRE_MAN = FIRE / MAN, Regioncode = NULL, Region = NULL) tail(GGDC10S, 2) +# Country Variable Year AGR MIN MAN PU CON WRT TRA FIRE +# 5026 EGY EMP 2011 5185.919 27.56394 2373.814 317.9979 2795.264 3020.236 2048.335 814.7403 +# 5027 EGY EMP 2012 5160.590 24.78083 2348.434 324.9332 2931.196 3109.522 2065.004 832.4770 +# GOV OTH SUM FIRE_MAN +# 5026 5635.522 NA 22219.39 0.3432200 +# 5027 5735.623 NA 22532.56 0.3544817 rm(GGDC10S) # Bulk-processing the data into percentage terms settransformv(GGDC10S, 6:16, `*`, 100/SUM) tail(GGDC10S, 2) - -# Same thing via replacement +# Country Regioncode Region Variable Year AGR MIN MAN +# 5026 EGY MENA Middle East and North Africa EMP 2011 23.33961 0.1240535 10.68352 +# 5027 EGY MENA Middle East and North Africa EMP 2012 22.90281 0.1099779 10.42240 +# PU CON WRT TRA FIRE GOV OTH SUM +# 5026 1.431173 12.58029 13.59279 9.218680 3.666798 25.36308 NA 100 +# 5027 1.442061 13.00871 13.80013 9.164534 3.694551 25.45482 NA 100 + +# Same thing via replacement ftransform(GGDC10S) <- fselect(GGDC10S, AGR:SUM) %>% lapply(`*`, 100/.$SUM) # Or using double pipes GGDC10S %<>% ftransformv(6:16, `*`, 100/SUM) @@ -503,125 +1347,244 @@ rm(GGDC10S) ``` Another convenient addition is provided by the function `fcompute`, which can be used to compute new columns in a data frame environment and returns the computed columns in a new data frame: -```{r, eval=NCRAN} + +```r fcompute(GGDC10S, AGR_perc = AGR / SUM * 100, FIRE_MAN = FIRE / MAN) %>% tail(2) +# AGR_perc FIRE_MAN +# 5026 23.33961 0.3432200 +# 5027 22.90281 0.3544817 ``` -For more complex tasks see `?ftransform`. +For more complex tasks see `?ftransform`. ### 2.5 Adding and Binding Columns For cases where multiple columns are computed and need to be added to a data frame (regardless of whether names are duplicated or not), *collapse* introduces the predicate `add_vars`. Together with `add_vars`, the function `add_stub` is useful to add a prefix (default) or postfix to computed variables keeping the variable names unique: -```{r, eval=NCRAN} + +```r # Efficient adding logged versions of some variables add_vars(wlddev) <- get_vars(wlddev, 9:13) %>% lapply(log10) %>% add_stub("log10.") head(wlddev, 2) +# country iso3c date year decade region income OECD PCGDP LIFEEX GINI ODA +# 1 Afghanistan AFG 1961-01-01 1960 1960 South Asia Low income FALSE NA 32.446 NA 116769997 +# 2 Afghanistan AFG 1962-01-01 1961 1960 South Asia Low income FALSE NA 32.962 NA 232080002 +# POP log10.PCGDP log10.LIFEEX log10.GINI log10.ODA log10.POP +# 1 8996973 NA 1.511161 NA 8.067331 6.954096 +# 2 9169410 NA 1.518014 NA 8.365638 6.962341 rm(wlddev) ``` By default `add_vars` appends a data frame towards the (right) end, but it can also replace columns in front or at other positions in the data frame: -```{r, eval=NCRAN} + +```r add_vars(wlddev, "front") <- get_vars(wlddev, 9:13) %>% lapply(log10) %>% add_stub("log10.") head(wlddev, 2) +# log10.PCGDP log10.LIFEEX log10.GINI log10.ODA log10.POP country iso3c date year decade +# 1 NA 1.511161 NA 8.067331 6.954096 Afghanistan AFG 1961-01-01 1960 1960 +# 2 NA 1.518014 NA 8.365638 6.962341 Afghanistan AFG 1962-01-01 1961 1960 +# region income OECD PCGDP LIFEEX GINI ODA POP +# 1 South Asia Low income FALSE NA 32.446 NA 116769997 8996973 +# 2 South Asia Low income FALSE NA 32.962 NA 232080002 9169410 rm(wlddev) add_vars(wlddev, c(10L,12L,14L,16L,18L)) <- get_vars(wlddev, 9:13) %>% lapply(log10) %>% add_stub("log10.") head(wlddev, 2) +# country iso3c date year decade region income OECD PCGDP log10.PCGDP LIFEEX +# 1 Afghanistan AFG 1961-01-01 1960 1960 South Asia Low income FALSE NA NA 32.446 +# 2 Afghanistan AFG 1962-01-01 1961 1960 South Asia Low income FALSE NA NA 32.962 +# log10.LIFEEX GINI log10.GINI ODA log10.ODA POP log10.POP +# 1 1.511161 NA NA 116769997 8.067331 8996973 6.954096 +# 2 1.518014 NA NA 232080002 8.365638 9169410 6.962341 rm(wlddev) ``` `add_vars` can also be used without replacement, where it serves as a more efficient version of `cbind.data.frame`, with the difference that the data structure and attributes of the first argument are preserved: -```{r, eval=NCRAN} + +```r add_vars(wlddev, get_vars(wlddev, 9:13) %>% lapply(log) %>% add_stub("log."), get_vars(wlddev, 9:13) %>% lapply(log10) %>% add_stub("log10.")) %>% head(2) - -add_vars(wlddev, get_vars(wlddev, 9:13) %>% lapply(log) %>% add_stub("log."), +# country iso3c date year decade region income OECD PCGDP LIFEEX GINI ODA +# 1 Afghanistan AFG 1961-01-01 1960 1960 South Asia Low income FALSE NA 32.446 NA 116769997 +# 2 Afghanistan AFG 1962-01-01 1961 1960 South Asia Low income FALSE NA 32.962 NA 232080002 +# POP log.PCGDP log.LIFEEX log.GINI log.ODA log.POP log10.PCGDP log10.LIFEEX log10.GINI +# 1 8996973 NA 3.479577 NA 18.57572 16.01240 NA 1.511161 NA +# 2 9169410 NA 3.495355 NA 19.26259 16.03138 NA 1.518014 NA +# log10.ODA log10.POP +# 1 8.067331 6.954096 +# 2 8.365638 6.962341 + +add_vars(wlddev, get_vars(wlddev, 9:13) %>% lapply(log) %>% add_stub("log."), get_vars(wlddev, 9:13) %>% lapply(log10) %>% add_stub("log10."), pos = c(10L,13L,16L,19L,22L,11L,14L,17L,20L,23L)) %>% head(2) +# country iso3c date year decade region income OECD PCGDP log.PCGDP log10.PCGDP +# 1 Afghanistan AFG 1961-01-01 1960 1960 South Asia Low income FALSE NA NA NA +# 2 Afghanistan AFG 1962-01-01 1961 1960 South Asia Low income FALSE NA NA NA +# LIFEEX log.LIFEEX log10.LIFEEX GINI log.GINI log10.GINI ODA log.ODA log10.ODA POP +# 1 32.446 3.479577 1.511161 NA NA NA 116769997 18.57572 8.067331 8996973 +# 2 32.962 3.495355 1.518014 NA NA NA 232080002 19.26259 8.365638 9169410 +# log.POP log10.POP +# 1 16.01240 6.954096 +# 2 16.03138 6.962341 identical(cbind(wlddev, wlddev), add_vars(wlddev, wlddev)) +# [1] TRUE microbenchmark(cbind(wlddev, wlddev), add_vars(wlddev, wlddev)) +# Unit: microseconds +# expr min lq mean median uq max neval +# cbind(wlddev, wlddev) 13.694 14.1040 15.72760 14.391 14.7600 57.072 100 +# add_vars(wlddev, wlddev) 3.280 3.6285 4.13567 3.813 4.0385 19.352 100 ``` ### 2.6 Renaming Columns `frename` is a fast substitute for `dplyr::rename`: -```{r, eval=NCRAN} + +```r frename(GGDC10S, AGR = Agriculture, MIN = Mining) %>% head(2) +# Country Regioncode Region Variable Year Agriculture Mining MAN PU CON WRT TRA FIRE +# 1 BWA SSA Sub-saharan Africa VA 1960 NA NA NA NA NA NA NA NA +# 2 BWA SSA Sub-saharan Africa VA 1961 NA NA NA NA NA NA NA NA +# GOV OTH SUM +# 1 NA NA NA +# 2 NA NA NA frename(GGDC10S, tolower) %>% head(2) +# country regioncode region variable year agr min man pu con wrt tra fire gov oth sum +# 1 BWA SSA Sub-saharan Africa VA 1960 NA NA NA NA NA NA NA NA NA NA NA +# 2 BWA SSA Sub-saharan Africa VA 1961 NA NA NA NA NA NA NA NA NA NA NA frename(GGDC10S, tolower, cols = .c(AGR, MIN)) %>% head(2) +# Country Regioncode Region Variable Year agr min MAN PU CON WRT TRA FIRE GOV OTH SUM +# 1 BWA SSA Sub-saharan Africa VA 1960 NA NA NA NA NA NA NA NA NA NA NA +# 2 BWA SSA Sub-saharan Africa VA 1961 NA NA NA NA NA NA NA NA NA NA NA ``` The function `setrename` does this by reference: -```{r, eval=NCRAN} + +```r setrename(GGDC10S, AGR = Agriculture, MIN = Mining) head(GGDC10S, 2) +# Country Regioncode Region Variable Year Agriculture Mining MAN PU CON WRT TRA FIRE +# 1 BWA SSA Sub-saharan Africa VA 1960 NA NA NA NA NA NA NA NA +# 2 BWA SSA Sub-saharan Africa VA 1961 NA NA NA NA NA NA NA NA +# GOV OTH SUM +# 1 NA NA NA +# 2 NA NA NA setrename(GGDC10S, Agriculture = AGR, Mining = MIN) rm(GGDC10S) ``` -Both functions are not limited to data frames but can be applied to any R object with a 'names' attribute. +Both functions are not limited to data frames but can be applied to any R object with a 'names' attribute. ### 2.7 Using Shortcuts The most frequently required among the functions introduced above can be abbreviated as follows: `fselect -> slt`, `fsubset -> sbt`, `ftransform(v) -> tfm(v)`, `settransform(v) -> settfm(v)`, `get_vars -> gv`, `num_vars -> nv`, `add_vars -> av`. This was done to make it possible to write faster and more parsimonious code, but is recommended only for personally kept scripts. A lazy person may also decide to code everything using shortcuts and then do ctrl+F replacement with the long names on the finished script. ### 2.8 Missing Values / Rows -The function `na_omit` is a much faster alternative to `stats::na.omit` for vectors, matrices and data frames. By default the 'na.action' attribute containing the removed cases is omitted, but it can be added with the option `na.attr = TRUE`. Like `fsubset`, `na_omit` preserves all column attributes as well as attributes of the data frame itself. +The function `na_omit` is a much faster alternative to `stats::na.omit` for vectors, matrices and data frames. By default the 'na.action' attribute containing the removed cases is omitted, but it can be added with the option `na.attr = TRUE`. Like `fsubset`, `na_omit` preserves all column attributes as well as attributes of the data frame itself. -```{r, eval=NCRAN} + +```r microbenchmark(na_omit(wlddev, na.attr = TRUE), na.omit(wlddev)) +# Unit: microseconds +# expr min lq mean median uq max neval +# na_omit(wlddev, na.attr = TRUE) 60.393 69.208 84.8126 79.9910 88.683 419.881 100 +# na.omit(wlddev) 745.790 856.449 1721.5457 940.6015 1005.177 56344.414 100 ``` Another added feature is the removal of cases missing on certain columns only: -```{r, eval=NCRAN} + +```r na_omit(wlddev, cols = .c(PCGDP, LIFEEX)) %>% head(2) -# only removing missing data from numeric columns -> same and slightly faster than na_omit(wlddev) +# country iso3c date year decade region income OECD PCGDP LIFEEX GINI +# 1 Afghanistan AFG 2003-01-01 2002 2000 South Asia Low income FALSE 330.3036 56.784 NA +# 2 Afghanistan AFG 2004-01-01 2003 2000 South Asia Low income FALSE 343.0809 57.271 NA +# ODA POP +# 1 1790479980 22600770 +# 2 1972890015 23680871 +# only removing missing data from numeric columns -> same and slightly faster than na_omit(wlddev) na_omit(wlddev, cols = is.numeric) %>% head(2) +# country iso3c date year decade region income OECD PCGDP +# 1 Albania ALB 1997-01-01 1996 1990 Europe & Central Asia Upper middle income FALSE 1869.866 +# 2 Albania ALB 2003-01-01 2002 2000 Europe & Central Asia Upper middle income FALSE 2572.721 +# LIFEEX GINI ODA POP +# 1 72.495 27.0 294089996 3168033 +# 2 74.579 31.7 453309998 3051010 ``` -For atomic vectors the function `na_rm` also exists which is 2x faster than `x[!is.na(x)]`. Both `na_omit` and `na_rm` return their argument if no missing cases were found. +For atomic vectors the function `na_rm` also exists which is 2x faster than `x[!is.na(x)]`. Both `na_omit` and `na_rm` return their argument if no missing cases were found. + +The existence of missing cases can be checked using `missing_cases`, which is also considerably faster than `complete.cases` for data frames. -The existence of missing cases can be checked using `missing_cases`, which is also considerably faster than `complete.cases` for data frames. - - There is also a function `na_insert` to randomly insert missing values into vectors, matrices and data frames. The default is `na_insert(X, prop = 0.1)` so that 10% of values are randomly set to missing. - -Finally, a function `allNA` provides the much needed opposite of `anyNA` for atomic vectors. + There is also a function `na_insert` to randomly insert missing values into vectors, matrices and data frames. The default is `na_insert(X, prop = 0.1)` so that 10% of values are randomly set to missing. + +Finally, a function `allNA` provides the much needed opposite of `anyNA` for atomic vectors. ### 2.9 Unique Values / Rows Similar to `na_omit`, the function `funique` is a much faster alternative to `base::unique` for atomic vectors and data frames. Like most *collapse* functions it also seeks to preserve attributes. -```{r, eval=NCRAN} + +```r funique(GGDC10S$Variable) # Unique values in order of appearance +# [1] "VA" "EMP" +# attr(,"label") +# [1] "Variable" +# attr(,"format.stata") +# [1] "%9s" funique(GGDC10S$Variable, sort = TRUE) # Sorted unique values +# [1] "EMP" "VA" +# attr(,"label") +# [1] "Variable" +# attr(,"format.stata") +# [1] "%9s" # If all values/rows are unique, the original data is returned (no copy) identical(funique(GGDC10S), GGDC10S) +# [1] TRUE # Can remove duplicate rows by a subset of columns funique(GGDC10S, cols = .c(Country, Variable)) %>% ss(1:2, 1:8) +# Country Regioncode Region Variable Year AGR MIN MAN +# 1 BWA SSA Sub-saharan Africa VA 1960 NA NA NA +# 2 BWA SSA Sub-saharan Africa EMP 1960 NA NA NA funique(GGDC10S, cols = .c(Country, Variable), sort = TRUE) %>% ss(1:2, 1:8) +# Country Regioncode Region Variable Year AGR MIN MAN +# 1 ARG LAM Latin America EMP 1950 1.799565e+03 32.71936 1.603249e+03 +# 2 ARG LAM Latin America VA 1950 5.887857e-07 0.00000 3.534430e-06 ``` ### 2.10 Recoding and Replacing Values -With `recode_num`, `recode_char`, `replace_NA`, `replace_Inf` and `replace_outliers`, *collapse* also introduces a set of functions to efficiently recode and replace numeric and character values in matrix-like objects (vectors, matrices, arrays, data frames, lists of atomic objects). When called on a data frame, `recode_num`, `replace_Inf` and `replace_outliers` will skip non-numeric columns, and `recode_char` skips non-character columns, whereas `replace_NA` replaces missing values in all columns. +With `recode_num`, `recode_char`, `replace_NA`, `replace_Inf` and `replace_outliers`, *collapse* also introduces a set of functions to efficiently recode and replace numeric and character values in matrix-like objects (vectors, matrices, arrays, data frames, lists of atomic objects). When called on a data frame, `recode_num`, `replace_Inf` and `replace_outliers` will skip non-numeric columns, and `recode_char` skips non-character columns, whereas `replace_NA` replaces missing values in all columns. + -```{r, eval=NCRAN} +```r # Efficient replacing missing values with 0 microbenchmark(replace_NA(GGDC10S, 0)) +# Unit: microseconds +# expr min lq mean median uq max neval +# replace_NA(GGDC10S, 0) 109.757 141.163 203.4982 151.0235 163.0775 4579.085 100 # Adding log-transformed sectoral data: Some NaN and Inf values generated -add_vars(GGDC10S, 6:16*2-5) <- fselect(GGDC10S, AGR:SUM) %>% - lapply(log) %>% replace_Inf %>% add_stub("log.") +add_vars(GGDC10S, 6:16*2-5) <- fselect(GGDC10S, AGR:SUM) %>% + lapply(log) %>% replace_Inf %>% add_stub("log.") head(GGDC10S, 2) +# Country Regioncode Region Variable Year AGR log.AGR MIN log.MIN MAN log.MAN PU log.PU +# 1 BWA SSA Sub-saharan Africa VA 1960 NA NA NA NA NA NA NA NA +# 2 BWA SSA Sub-saharan Africa VA 1961 NA NA NA NA NA NA NA NA +# CON log.CON WRT log.WRT TRA log.TRA FIRE log.FIRE GOV log.GOV OTH log.OTH SUM log.SUM +# 1 NA NA NA NA NA NA NA NA NA NA NA NA NA NA +# 2 NA NA NA NA NA NA NA NA NA NA NA NA NA NA rm(GGDC10S) ``` @@ -629,93 +1592,176 @@ rm(GGDC10S) -```{r, eval=NCRAN} + +```r month.name +# [1] "January" "February" "March" "April" "May" "June" "July" "August" +# [9] "September" "October" "November" "December" recode_char(month.name, ber = "C", "^J" = "A", default = "B", regex = TRUE) +# [1] "A" "B" "B" "B" "B" "A" "A" "B" "B" "B" "B" "B" ``` -The perhaps most interesting function in this ensemble is `replace_outliers`, which replaces values falling outside a 1- or 2-sided numeric threshold or outside a certain number of column- standard deviations with a value (default is `NA`). +The perhaps most interesting function in this ensemble is `replace_outliers`, which replaces values falling outside a 1- or 2-sided numeric threshold or outside a certain number of column- standard deviations with a value (default is `NA`). + -```{r, eval=NCRAN} +```r # replace all values below 2 and above 100 with NA -replace_outliers(mtcars, c(2, 100)) %>% head(3) +replace_outliers(mtcars, c(2, 100)) %>% head(3) +# mpg cyl disp hp drat wt qsec vs am gear carb +# Mazda RX4 21.0 6 NA NA 3.90 2.620 16.46 NA NA 4 4 +# Mazda RX4 Wag 21.0 6 NA NA 3.90 2.875 17.02 NA NA 4 4 +# Datsun 710 22.8 4 NA 93 3.85 2.320 18.61 NA NA 4 NA # replace all value smaller than 2 with NA replace_outliers(mtcars, 2, single.limit = "min") %>% head(3) +# mpg cyl disp hp drat wt qsec vs am gear carb +# Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 NA NA 4 4 +# Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 NA NA 4 4 +# Datsun 710 22.8 4 108 93 3.85 2.320 18.61 NA NA 4 NA # replace all value larger than 100 with NA replace_outliers(mtcars, 100, single.limit = "max") %>% head(3) +# mpg cyl disp hp drat wt qsec vs am gear carb +# Mazda RX4 21.0 6 NA NA 3.90 2.620 16.46 0 1 4 4 +# Mazda RX4 Wag 21.0 6 NA NA 3.90 2.875 17.02 0 1 4 4 +# Datsun 710 22.8 4 NA 93 3.85 2.320 18.61 1 1 4 1 # replace all values above or below 3 column-standard-deviations from the column-mean with NA -replace_outliers(mtcars, 3) %>% tail(3) - +replace_outliers(mtcars, 3) %>% tail(3) +# mpg cyl disp hp drat wt qsec vs am gear carb +# Ferrari Dino 19.7 6 145 175 3.62 2.77 15.5 0 1 5 6 +# Maserati Bora 15.0 8 301 335 3.54 3.57 14.6 0 1 5 NA +# Volvo 142E 21.4 4 121 109 4.11 2.78 18.6 1 1 4 2 ``` ## 3. Quick Data Object Conversions Apart from code employed for manipulation of data and the actual statistical computations performed, frequently used data object conversions with base functions like `as.data.frame`, `as.matrix` or `as.factor` have a significant share in slowing down R code. Optimally code would be written without such conversions, but sometimes they are necessary and thus *collapse* provides a set of functions (`qDF`, `qDT`, `qTBL`, `qM`, `qF`, `mrtl` and `mctl`) to speed these conversions up quite a bit. These functions are fast because they are non-generic and dispatch different objects internally, perform critical steps in C++, and, when passed lists of objects, they only check the length of the first column. -`qDF`, `qDT` and `qTBL` efficiently convert vectors, matrices, higher-dimensional arrays and suitable lists to data.frame, *data.table* and *tibble* respectively. +`qDF`, `qDT` and `qTBL` efficiently convert vectors, matrices, higher-dimensional arrays and suitable lists to data.frame, *data.table* and *tibble* respectively. + -```{r, eval=NCRAN} +```r str(EuStockMarkets) +# Time-Series [1:1860, 1:4] from 1991 to 1999: 1629 1614 1607 1621 1618 ... +# - attr(*, "dimnames")=List of 2 +# ..$ : NULL +# ..$ : chr [1:4] "DAX" "SMI" "CAC" "FTSE" # Efficient Conversion of data frames and matrices to data.table microbenchmark(qDT(wlddev), qDT(EuStockMarkets), as.data.table(wlddev), as.data.frame(EuStockMarkets)) +# Unit: microseconds +# expr min lq mean median uq max neval +# qDT(wlddev) 3.075 3.608 4.21439 3.8950 4.2640 12.546 100 +# qDT(EuStockMarkets) 6.765 8.733 12.09254 12.5050 14.1040 30.217 100 +# as.data.table(wlddev) 64.206 122.180 253.75023 143.2745 173.1635 3653.346 100 +# as.data.frame(EuStockMarkets) 64.247 70.971 82.25174 79.6835 84.8700 339.849 100 # Converting a time series to data.frame head(qDF(AirPassengers)) +# AirPassengers +# 1 112 +# 2 118 +# 3 132 +# 4 129 +# 5 121 +# 6 135 ``` -By default these functions drop all unnecessary attributes from matrices or lists / data frames in the conversion, but this can be changed using the `keep.attr = TRUE` argument. +By default these functions drop all unnecessary attributes from matrices or lists / data frames in the conversion, but this can be changed using the `keep.attr = TRUE` argument. A useful additional feature of `qDF` and `qDT` is the `row.names.col` argument, enabling the saving of names / row-names in a column when converting from vector, matrix, array or data frame: -```{r, eval=NCRAN} + +```r # This saves the row-names in a column named 'car' head(qDT(mtcars, "car")) +# car mpg cyl disp hp drat wt qsec vs am gear carb +# +# 1: Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 +# 2: Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 +# 3: Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 +# 4: Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 +# 5: Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 +# 6: Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 N_distinct <- fndistinct(GGDC10S) N_distinct +# Country Regioncode Region Variable Year AGR MIN MAN PU +# 43 6 6 2 67 4353 4224 4353 4237 +# CON WRT TRA FIRE GOV OTH SUM +# 4339 4344 4334 4349 3470 4238 4364 # Converting a vector to data.frame, saving names head(qDF(N_distinct, "variable")) +# variable N_distinct +# 1 Country 43 +# 2 Regioncode 6 +# 3 Region 6 +# 4 Variable 2 +# 5 Year 67 +# 6 AGR 4353 ``` -For the conversion of matrices to list there are also the programmers functions `mrtl` and `mctl`, which row- or column- wise convert a matrix into a plain list, data.frame or *data.table*. +For the conversion of matrices to list there are also the programmers functions `mrtl` and `mctl`, which row- or column- wise convert a matrix into a plain list, data.frame or *data.table*. + -```{r, eval=NCRAN} +```r # This converts the matrix to a list of 1860 row-vectors of length 4. microbenchmark(mrtl(EuStockMarkets)) +# Unit: microseconds +# expr min lq mean median uq max neval +# mrtl(EuStockMarkets) 139.728 151.4335 168.5522 155.841 164.6355 399.791 100 ``` -For the reverse operation, `qM` converts vectors, higher-dimensional arrays, data frames and suitable lists to matrix. +For the reverse operation, `qM` converts vectors, higher-dimensional arrays, data frames and suitable lists to matrix. -```{r, eval=NCRAN} + +```r # Note: kit::psum is the most efficient way to do this microbenchmark(rowSums(qM(mtcars)), rowSums(mtcars), kit::psum(mtcars)) +# Unit: nanoseconds +# expr min lq mean median uq max neval +# rowSums(qM(mtcars)) 5699 7933.5 12702.62 9122.5 11131.5 316315 100 +# rowSums(mtcars) 38868 41697.0 48003.21 44157.0 51496.0 95981 100 +# kit::psum(mtcars) 574 820.0 510905.51 943.0 1107.0 50967797 100 ``` At last, `qF` converts vectors to factor and is quite a bit faster than `as.factor`: -```{r, eval=NCRAN} + +```r # Converting from character str(wlddev$country) +# chr [1:13176] "Afghanistan" "Afghanistan" "Afghanistan" "Afghanistan" "Afghanistan" ... +# - attr(*, "label")= chr "Country Name" fndistinct(wlddev$country) +# [1] 216 microbenchmark(qF(wlddev$country), as.factor(wlddev$country)) +# Unit: microseconds +# expr min lq mean median uq max neval +# qF(wlddev$country) 70.192 71.1965 73.77376 72.160 74.784 107.256 100 +# as.factor(wlddev$country) 263.794 275.7660 282.21530 278.841 283.761 360.431 100 # Converting from numeric str(wlddev$PCGDP) +# num [1:13176] NA NA NA NA NA NA NA NA NA NA ... +# - attr(*, "label")= chr "GDP per capita (constant 2010 US$)" fndistinct(wlddev$PCGDP) +# [1] 9470 microbenchmark(qF(wlddev$PCGDP), as.factor(wlddev$PCGDP)) - +# Unit: microseconds +# expr min lq mean median uq max neval +# qF(wlddev$PCGDP) 445.096 474.944 531.221 488.146 509.0765 3930.342 100 +# as.factor(wlddev$PCGDP) 9374.240 9546.132 9823.477 9633.196 9727.5165 13732.499 100 ``` ## 4. Advanced Statistical Programming -Having introduced some of the more basic *collapse* data manipulation infrastructure in the preceding chapters, this chapter introduces some of the packages core functionality for programming with data. +Having introduced some of the more basic *collapse* data manipulation infrastructure in the preceding chapters, this chapter introduces some of the packages core functionality for programming with data. ### 4.1 Fast (Grouped, Weighted) Statistical Functions A key feature of *collapse* is it's broad set of *Fast Statistical Functions* (`fsum, fprod, fmean, fmedian, fmode, fvar, fsd, fmin, fmax, fnth, ffirst, flast, fnobs, fndistinct`), which are able to tangibly speed-up column-wise, grouped and weighted statistical computations on vectors, matrices or data frames. The basic syntax common to all of these functions is: -```{r eval=FALSE} + +```r FUN(x, g = NULL, [w = NULL,] TRA = NULL, [na.rm = TRUE,] use.g.names = TRUE, drop = TRUE) ``` @@ -724,96 +1770,230 @@ where `x` is a vector, matrix or data frame, `g` takes groups supplied as vector With that in mind, let's start with some simple examples. To calculate simple column-wise means, it is sufficient to type: -```{r, eval=NCRAN} + +```r fmean(mtcars$mpg) # Vector +# [1] 20.09062 fmean(mtcars) +# mpg cyl disp hp drat wt qsec vs am +# 20.090625 6.187500 230.721875 146.687500 3.596563 3.217250 17.848750 0.437500 0.406250 +# gear carb +# 3.687500 2.812500 fmean(mtcars, drop = FALSE) # This returns a 1-row data-frame +# mpg cyl disp hp drat wt qsec vs am gear carb +# 1 20.09062 6.1875 230.7219 146.6875 3.596563 3.21725 17.84875 0.4375 0.40625 3.6875 2.8125 m <- qM(mtcars) # Generate matrix fmean(m) +# mpg cyl disp hp drat wt qsec vs am +# 20.090625 6.187500 230.721875 146.687500 3.596563 3.217250 17.848750 0.437500 0.406250 +# gear carb +# 3.687500 2.812500 fmean(m, drop = FALSE) # This returns a 1-row matrix +# mpg cyl disp hp drat wt qsec vs am gear carb +# [1,] 20.09062 6.1875 230.7219 146.6875 3.596563 3.21725 17.84875 0.4375 0.40625 3.6875 2.8125 ``` Note that separate methods for vectors, matrices and data frames are written in C++, thus no conversions are needed and computations on matrices and data frames are equally efficient. If we had a weight vector, weighted statistics are easily computed: -```{r, eval=NCRAN} + +```r weights <- abs(rnorm(fnrow(mtcars))) # fnrow is a bit faster for data frames fmean(mtcars, w = weights) # Weighted mean +# mpg cyl disp hp drat wt qsec vs +# 20.8090714 5.8876772 214.9587303 142.8931066 3.7558442 3.0941361 17.8201120 0.5025300 +# am gear carb +# 0.4918237 3.8375831 2.7771280 fmedian(mtcars, w = weights) # Weighted median +# mpg cyl disp hp drat wt qsec vs am gear carb +# 21.00 6.00 160.00 113.00 3.77 3.17 18.00 1.00 0.00 4.00 2.00 fsd(mtcars, w = weights) # Frequency-weighted standard deviation +# mpg cyl disp hp drat wt qsec vs +# 5.8799568 1.8416865 122.4274353 74.9459089 0.5413624 0.9689836 1.8516418 0.5089768 +# am gear carb +# 0.5089152 0.7557877 1.6744062 fmode(mtcars, w = weights) # Weighted statistical mode (i.e. the value with the largest sum of weights) +# mpg cyl disp hp drat wt qsec vs am gear carb +# 21.40 4.00 121.00 109.00 3.92 2.78 18.60 1.00 0.00 4.00 2.00 ``` Fast grouped statistics can be calculated by simply passing grouping vectors or lists of grouping vectors to the fast functions: -```{r, eval=NCRAN} + +```r fmean(mtcars, mtcars$cyl) +# mpg cyl disp hp drat wt qsec vs am gear carb +# 4 26.66364 4 105.1364 82.63636 4.070909 2.285727 19.13727 0.9090909 0.7272727 4.090909 1.545455 +# 6 19.74286 6 183.3143 122.28571 3.585714 3.117143 17.97714 0.5714286 0.4285714 3.857143 3.428571 +# 8 15.10000 8 353.1000 209.21429 3.229286 3.999214 16.77214 0.0000000 0.1428571 3.285714 3.500000 fmean(mtcars, fselect(mtcars, cyl, vs, am)) - -# Getting column indices +# mpg cyl disp hp drat wt qsec vs am gear carb +# 4.0.1 26.00000 4 120.3000 91.00000 4.430000 2.140000 16.70000 0 1 5.000000 2.000000 +# 4.1.0 22.90000 4 135.8667 84.66667 3.770000 2.935000 20.97000 1 0 3.666667 1.666667 +# 4.1.1 28.37143 4 89.8000 80.57143 4.148571 2.028286 18.70000 1 1 4.142857 1.428571 +# 6.0.1 20.56667 6 155.0000 131.66667 3.806667 2.755000 16.32667 0 1 4.333333 4.666667 +# 6.1.0 19.12500 6 204.5500 115.25000 3.420000 3.388750 19.21500 1 0 3.500000 2.500000 +# 8.0.0 15.05000 8 357.6167 194.16667 3.120833 4.104083 17.14250 0 0 3.000000 3.083333 +# 8.0.1 15.40000 8 326.0000 299.50000 3.880000 3.370000 14.55000 0 1 5.000000 6.000000 + +# Getting column indices ind <- fselect(mtcars, cyl, vs, am, return = "indices") -fmean(get_vars(mtcars, -ind), get_vars(mtcars, ind)) +fmean(get_vars(mtcars, -ind), get_vars(mtcars, ind)) +# mpg disp hp drat wt qsec gear carb +# 4.0.1 26.00000 120.3000 91.00000 4.430000 2.140000 16.70000 5.000000 2.000000 +# 4.1.0 22.90000 135.8667 84.66667 3.770000 2.935000 20.97000 3.666667 1.666667 +# 4.1.1 28.37143 89.8000 80.57143 4.148571 2.028286 18.70000 4.142857 1.428571 +# 6.0.1 20.56667 155.0000 131.66667 3.806667 2.755000 16.32667 4.333333 4.666667 +# 6.1.0 19.12500 204.5500 115.25000 3.420000 3.388750 19.21500 3.500000 2.500000 +# 8.0.0 15.05000 357.6167 194.16667 3.120833 4.104083 17.14250 3.000000 3.083333 +# 8.0.1 15.40000 326.0000 299.50000 3.880000 3.370000 14.55000 5.000000 6.000000 ``` ### 4.2 Factors, Grouping Objects and Grouped Data Frames -This programming can becomes more efficient when passing *factors* or *grouping objects* to the `g` argument, as otherwise vectors and lists of vectors are grouped internally. +This programming can becomes more efficient when passing *factors* or *grouping objects* to the `g` argument, as otherwise vectors and lists of vectors are grouped internally. -```{r, eval=NCRAN} + +```r # This creates a factor, na.exclude = FALSE attaches a class 'na.included' f <- qF(mtcars$cyl, na.exclude = FALSE) # The 'na.included' attribute skips a missing value check on this factor attributes(f) +# $levels +# [1] "4" "6" "8" +# +# $class +# [1] "factor" "na.included" # Saving data without grouping columns dat <- get_vars(mtcars, -ind) # Grouped standard-deviation fsd(dat, f) +# mpg disp hp drat wt qsec gear carb +# 4 4.509828 26.87159 20.93453 0.3654711 0.5695637 1.682445 0.5393599 0.522233 +# 6 1.453567 41.56246 24.26049 0.4760552 0.3563455 1.706866 0.6900656 1.812654 +# 8 2.560048 67.77132 50.97689 0.3723618 0.7594047 1.196014 0.7262730 1.556624 # Without option na.exclude = FALSE, anyNA needs to be called on the factor (noticeable on larger data). f2 <- qF(mtcars$cyl) microbenchmark(fsd(dat, f), fsd(dat, f2)) +# Unit: microseconds +# expr min lq mean median uq max neval +# fsd(dat, f) 6.027 6.232 6.51613 6.4165 6.601 11.152 100 +# fsd(dat, f2) 6.150 6.396 6.77771 6.5190 6.683 25.830 100 ``` For programming purposes *GRP* objects are preferable over factors because they never require further checks and they provide additional information about the grouping (such as group sizes and the original unique values in each group). The `GRP` function creates grouping objects (of class *GRP*) from vectors or lists of columns. Grouping is done very efficiently via radix ordering in C (using the `radixorder` function): -```{r, eval=NCRAN} -# This creates a 'GRP' object. + +```r +# This creates a 'GRP' object. g <- GRP(mtcars, ~ cyl + vs + am) # Using the formula interface, could also use c("cyl","vs","am") or c(2,8:9) str(g) +# Class 'GRP' hidden list of 9 +# $ N.groups : int 7 +# $ group.id : int [1:32] 4 4 3 5 6 5 6 2 2 5 ... +# $ group.sizes : int [1:7] 1 3 7 3 4 12 2 +# $ groups :'data.frame': 7 obs. of 3 variables: +# ..$ cyl: num [1:7] 4 4 4 6 6 8 8 +# ..$ vs : num [1:7] 0 1 1 0 1 0 0 +# ..$ am : num [1:7] 1 0 1 1 0 0 1 +# $ group.vars : chr [1:3] "cyl" "vs" "am" +# $ ordered : Named logi [1:2] TRUE FALSE +# ..- attr(*, "names")= chr [1:2] "ordered" "sorted" +# $ order : int [1:32] 27 8 9 21 3 18 19 20 26 28 ... +# ..- attr(*, "starts")= int [1:7] 1 2 5 12 15 19 31 +# ..- attr(*, "maxgrpn")= int 12 +# ..- attr(*, "sorted")= logi FALSE +# $ group.starts: int [1:7] 27 8 3 1 4 5 29 +# $ call : language GRP.default(X = mtcars, by = ~cyl + vs + am) ``` The first three elements of this object provide information about the number of groups, the group to which each row belongs, and the size of each group. A print and a plot method provide further information about the grouping: -```{r, eval=NCRAN} + +```r print(g) +# collapse grouping object of length 32 with 7 ordered groups +# +# Call: GRP.default(X = mtcars, by = ~cyl + vs + am), X is unsorted +# +# Distribution of group sizes: +# Min. 1st Qu. Median Mean 3rd Qu. Max. +# 1.000 2.500 3.000 4.571 5.500 12.000 +# +# Groups with sizes: +# 4.0.1 4.1.0 4.1.1 6.0.1 6.1.0 8.0.0 8.0.1 +# 1 3 7 3 4 12 2 plot(g) ``` +
+plot of chunk GRPplot +

plot of chunk GRPplot

+
+ The important elements of the *GRP* object are directly handed down to the compiled C++ code of the statistical functions, making repeated computations over the same groups very efficient. -```{r, eval=NCRAN} + +```r fsd(dat, g) +# mpg disp hp drat wt qsec gear carb +# 4.0.1 NA NA NA NA NA NA NA NA +# 4.1.0 1.4525839 13.969371 19.65536 0.1300000 0.4075230 1.67143651 0.5773503 0.5773503 +# 4.1.1 4.7577005 18.802128 24.14441 0.3783926 0.4400840 0.94546285 0.3779645 0.5345225 +# 6.0.1 0.7505553 8.660254 37.52777 0.1616581 0.1281601 0.76872188 0.5773503 1.1547005 +# 6.1.0 1.6317169 44.742634 9.17878 0.5919459 0.1162164 0.81590441 0.5773503 1.7320508 +# 8.0.0 2.7743959 71.823494 33.35984 0.2302749 0.7683069 0.80164745 0.0000000 0.9003366 +# 8.0.1 0.5656854 35.355339 50.20458 0.4808326 0.2828427 0.07071068 0.0000000 2.8284271 # Grouped computation with and without prior grouping microbenchmark(fsd(dat, g), fsd(dat, get_vars(mtcars, ind))) +# Unit: microseconds +# expr min lq mean median uq max neval +# fsd(dat, g) 19.065 21.1765 23.68447 22.9600 24.9690 38.909 100 +# fsd(dat, get_vars(mtcars, ind)) 31.611 35.2600 44.56823 37.3715 41.1845 327.877 100 ``` Yet another possibility is creating a grouped data frame (class *grouped_df*). This can either be done using `dplyr::group_by`, which creates a grouped tibble and requires a conversion of the grouping object using `GRP.grouped_df`, or using the more efficient `fgroup_by` provided in *collapse*: -```{r, eval=NCRAN} + +```r gmtcars <- fgroup_by(mtcars, cyl, vs, am) # fgroup_by() can also be abbreviated as gby() fmedian(gmtcars) +# cyl vs am mpg disp hp drat wt qsec gear carb +# 1 4 0 1 26.00 120.3 91.0 4.430 2.140 16.70 5.0 2.0 +# 2 4 1 0 22.80 140.8 95.0 3.700 3.150 20.01 4.0 2.0 +# 3 4 1 1 30.40 79.0 66.0 4.080 1.935 18.61 4.0 1.0 +# 4 6 0 1 21.00 160.0 110.0 3.900 2.770 16.46 4.0 4.0 +# 5 6 1 0 18.65 196.3 116.5 3.500 3.440 19.17 3.5 2.5 +# 6 8 0 0 15.20 355.0 180.0 3.075 3.810 17.35 3.0 3.0 +# 7 8 0 1 15.40 326.0 299.5 3.880 3.370 14.55 5.0 6.0 head(fgroup_vars(gmtcars)) +# cyl vs am +# Mazda RX4 6 0 1 +# Mazda RX4 Wag 6 0 1 +# Datsun 710 4 1 1 +# Hornet 4 Drive 6 1 0 +# Hornet Sportabout 8 0 0 +# Valiant 6 1 0 fmedian(gmtcars, keep.group_vars = FALSE) +# mpg disp hp drat wt qsec gear carb +# 1 26.00 120.3 91.0 4.430 2.140 16.70 5.0 2.0 +# 2 22.80 140.8 95.0 3.700 3.150 20.01 4.0 2.0 +# 3 30.40 79.0 66.0 4.080 1.935 18.61 4.0 1.0 +# 4 21.00 160.0 110.0 3.900 2.770 16.46 4.0 4.0 +# 5 18.65 196.3 116.5 3.500 3.440 19.17 3.5 2.5 +# 6 15.20 355.0 180.0 3.075 3.810 17.35 3.0 3.0 +# 7 15.40 326.0 299.5 3.880 3.370 14.55 5.0 6.0 ``` @@ -823,7 +2003,8 @@ fmedian(gmtcars, keep.group_vars = FALSE) Now suppose we wanted to create a new dataset which contains the *mean*, *sd*, *min* and *max* of the variables *mpg* and *disp* grouped by *cyl*, *vs* and *am*: -```{r, eval=NCRAN} + +```r # Standard evaluation dat <- get_vars(mtcars, c("mpg", "disp")) add_vars(g[["groups"]], @@ -831,6 +2012,14 @@ add_vars(g[["groups"]], add_stub(fsd(dat, g, use.g.names = FALSE), "sd_"), add_stub(fmin(dat, g, use.g.names = FALSE), "min_"), add_stub(fmax(dat, g, use.g.names = FALSE), "max_")) +# cyl vs am mean_mpg mean_disp sd_mpg sd_disp min_mpg min_disp max_mpg max_disp +# 1 4 0 1 26.00000 120.3000 NA NA 26.0 120.3 26.0 120.3 +# 2 4 1 0 22.90000 135.8667 1.4525839 13.969371 21.5 120.1 24.4 146.7 +# 3 4 1 1 28.37143 89.8000 4.7577005 18.802128 21.4 71.1 33.9 121.0 +# 4 6 0 1 20.56667 155.0000 0.7505553 8.660254 19.7 145.0 21.0 160.0 +# 5 6 1 0 19.12500 204.5500 1.6317169 44.742634 17.8 167.6 21.4 258.0 +# 6 8 0 0 15.05000 357.6167 2.7743959 71.823494 10.4 275.8 19.2 472.0 +# 7 8 0 1 15.40000 326.0000 0.5656854 35.355339 15.0 301.0 15.8 351.0 # Non-Standard evaluation fgroup_by(mtcars, cyl, vs, am) %>% fselect(mpg, disp) %>% { @@ -840,6 +2029,14 @@ fgroup_by(mtcars, cyl, vs, am) %>% fselect(mpg, disp) %>% { fmin(., keep.group_vars = FALSE) %>% add_stub("min_"), fmax(., keep.group_vars = FALSE) %>% add_stub("max_")) } +# cyl vs am mean_mpg mean_disp sd_mpg sd_disp min_mpg min_disp max_mpg max_disp +# 1 4 0 1 26.00000 120.3000 NA NA 26.0 120.3 26.0 120.3 +# 2 4 1 0 22.90000 135.8667 1.4525839 13.969371 21.5 120.1 24.4 146.7 +# 3 4 1 1 28.37143 89.8000 4.7577005 18.802128 21.4 71.1 33.9 121.0 +# 4 6 0 1 20.56667 155.0000 0.7505553 8.660254 19.7 145.0 21.0 160.0 +# 5 6 1 0 19.12500 204.5500 1.6317169 44.742634 17.8 167.6 21.4 258.0 +# 6 8 0 0 15.05000 357.6167 2.7743959 71.823494 10.4 275.8 19.2 472.0 +# 7 8 0 1 15.40000 326.0000 0.5656854 35.355339 15.0 301.0 15.8 351.0 ``` ### 4.3 Grouped and Weighted Computations @@ -850,13 +2047,22 @@ We could also calculate groupwise-frequency weighted means and standard-deviatio -```{r, eval=NCRAN} + +```r # Grouped and weighted mean and sd and grouped min and max add_vars(g[["groups"]], add_stub(fmean(dat, g, weights, use.g.names = FALSE), "w_mean_"), add_stub(fsd(dat, g, weights, use.g.names = FALSE), "w_sd_"), add_stub(fmin(dat, g, use.g.names = FALSE), "min_"), add_stub(fmax(dat, g, use.g.names = FALSE), "max_")) +# cyl vs am w_mean_mpg w_mean_disp w_sd_mpg w_sd_disp min_mpg min_disp max_mpg max_disp +# 1 4 0 1 26.00000 120.30000 0.0000000 0.00000 26.0 120.3 26.0 120.3 +# 2 4 1 0 23.08757 136.62639 1.5306081 14.19412 21.5 120.1 24.4 146.7 +# 3 4 1 1 27.34688 92.65353 4.8723476 21.44005 21.4 71.1 33.9 121.0 +# 4 6 0 1 20.22046 151.00525 0.9349875 10.78832 19.7 145.0 21.0 160.0 +# 5 6 1 0 19.52725 204.86661 1.7612203 50.80083 17.8 167.6 21.4 258.0 +# 6 8 0 0 15.12267 359.56902 2.2886672 70.60949 10.4 275.8 19.2 472.0 +# 7 8 0 1 15.51023 332.88960 0.4758366 29.73979 15.0 301.0 15.8 351.0 # Binding and reordering columns in a single step: Add columns in specific positions add_vars(g[["groups"]], @@ -865,31 +2071,58 @@ add_vars(g[["groups"]], add_stub(fmin(dat, g, use.g.names = FALSE), "min_"), add_stub(fmax(dat, g, use.g.names = FALSE), "max_"), pos = c(4,8,5,9,6,10,7,11)) - +# cyl vs am w_mean_mpg w_sd_mpg min_mpg max_mpg w_mean_disp w_sd_disp min_disp max_disp +# 1 4 0 1 26.00000 0.0000000 26.0 26.0 120.30000 0.00000 120.3 120.3 +# 2 4 1 0 23.08757 1.5306081 21.5 24.4 136.62639 14.19412 120.1 146.7 +# 3 4 1 1 27.34688 4.8723476 21.4 33.9 92.65353 21.44005 71.1 121.0 +# 4 6 0 1 20.22046 0.9349875 19.7 21.0 151.00525 10.78832 145.0 160.0 +# 5 6 1 0 19.52725 1.7612203 17.8 21.4 204.86661 50.80083 167.6 258.0 +# 6 8 0 0 15.12267 2.2886672 10.4 19.2 359.56902 70.60949 275.8 472.0 +# 7 8 0 1 15.51023 0.4758366 15.0 15.8 332.88960 29.73979 301.0 351.0 ``` The R overhead of this kind of programming in standard-evaluation is very low: -```{r, eval=NCRAN} + +```r microbenchmark(call = add_vars(g[["groups"]], add_stub(fmean(dat, g, weights, use.g.names = FALSE), "w_mean_"), add_stub(fsd(dat, g, weights, use.g.names = FALSE), "w_sd_"), add_stub(fmin(dat, g, use.g.names = FALSE), "min_"), add_stub(fmax(dat, g, use.g.names = FALSE), "max_"))) +# Unit: microseconds +# expr min lq mean median uq max neval +# call 27.388 28.1875 29.56428 28.823 29.356 97.58 100 ``` ### 4.4 Transformations Using the `TRA` Argument As a final layer of added complexity, we could utilize the `TRA` argument to generate groupwise-weighted demeaned, and scaled data, with additional columns giving the group-minimum and maximum values: -```{r, eval=NCRAN} + +```r head(add_vars(get_vars(mtcars, ind), add_stub(fmean(dat, g, weights, "-"), "w_demean_"), # This calculates weighted group means and uses them to demean the data add_stub(fsd(dat, g, weights, "/"), "w_scale_"), # This calculates weighted group sd's and uses them to scale the data add_stub(fmin(dat, g, "replace"), "min_"), # This replaces all observations by their group-minimum add_stub(fmax(dat, g, "replace"), "max_"))) # This replaces all observations by their group-maximum +# cyl vs am w_demean_mpg w_demean_disp w_scale_mpg w_scale_disp min_mpg min_disp +# Mazda RX4 6 0 1 0.7795446 8.9947455 22.460194 14.830858 19.7 145.0 +# Mazda RX4 Wag 6 0 1 0.7795446 8.9947455 22.460194 14.830858 19.7 145.0 +# Datsun 710 4 1 1 -4.5468786 15.3464694 4.679469 5.037303 21.4 71.1 +# Hornet 4 Drive 6 1 0 1.8727485 53.1333901 12.150666 5.078657 17.8 167.6 +# Hornet Sportabout 8 0 0 3.5773335 0.4309751 8.170694 5.098465 10.4 275.8 +# Valiant 6 1 0 -1.4272515 20.1333901 10.276966 4.429062 17.8 167.6 +# max_mpg max_disp +# Mazda RX4 21.0 160 +# Mazda RX4 Wag 21.0 160 +# Datsun 710 33.9 121 +# Hornet 4 Drive 21.4 258 +# Hornet Sportabout 19.2 472 +# Valiant 21.4 258 ``` It is also possible to `add_vars<-` to `mtcars` itself. The default option would add these columns at the end, but we could also specify positions: -```{r, eval=NCRAN} + +```r # This defines the positions where we want to add these columns pos <- as.integer(c(2,8,3,9,4,10,5,11)) @@ -898,11 +2131,26 @@ add_vars(mtcars, pos) <- c(add_stub(fmean(dat, g, weights, "-"), "w_demean_"), add_stub(fmin(dat, g, "replace"), "min_"), add_stub(fmax(dat, g, "replace"), "max_")) head(mtcars) +# mpg w_demean_mpg w_scale_mpg min_mpg max_mpg cyl disp w_demean_disp w_scale_disp +# Mazda RX4 21.0 0.7795446 22.460194 19.7 21.0 6 160 8.9947455 14.830858 +# Mazda RX4 Wag 21.0 0.7795446 22.460194 19.7 21.0 6 160 8.9947455 14.830858 +# Datsun 710 22.8 -4.5468786 4.679469 21.4 33.9 4 108 15.3464694 5.037303 +# Hornet 4 Drive 21.4 1.8727485 12.150666 17.8 21.4 6 258 53.1333901 5.078657 +# Hornet Sportabout 18.7 3.5773335 8.170694 10.4 19.2 8 360 0.4309751 5.098465 +# Valiant 18.1 -1.4272515 10.276966 17.8 21.4 6 225 20.1333901 4.429062 +# min_disp max_disp hp drat wt qsec vs am gear carb +# Mazda RX4 145.0 160 110 3.90 2.620 16.46 0 1 4 4 +# Mazda RX4 Wag 145.0 160 110 3.90 2.875 17.02 0 1 4 4 +# Datsun 710 71.1 121 93 3.85 2.320 18.61 1 1 4 1 +# Hornet 4 Drive 167.6 258 110 3.08 3.215 19.44 1 0 3 1 +# Hornet Sportabout 275.8 472 175 3.15 3.440 17.02 0 0 3 2 +# Valiant 167.6 258 105 2.76 3.460 20.22 1 0 3 1 rm(mtcars) ``` Together with `ftransform`, things can become arbitrarily more complex: -```{r, eval=NCRAN} + +```r # 2 different grouped and weighted computations (mutate operations) performed in one call settransform(mtcars, carb_dwmed_cyl = fmedian(carb, cyl, weights, "-"), carb_wsd_vs_am = fsd(carb, list(vs, am), weights, "replace")) @@ -912,10 +2160,24 @@ settransform(mtcars, c(fmedian(list(carb_dwmed_cyl = carb, mpg_dwmed_cyl = mpg), fsd(list(carb_wsd_vs_am = carb, mpg_wsd_vs_am = mpg), list(vs, am), weights, "replace"))) # Nested (Computing the weighted 3rd quartile of mpg, grouped by cyl and carb being greater than it's weighted median, grouped by vs) -settransform(mtcars, +settransform(mtcars, mpg_gwQ3_cyl = fnth(mpg, 0.75, list(cyl, carb > fmedian(carb, vs, weights, 1L)), weights, 1L)) head(mtcars) +# mpg cyl disp hp drat wt qsec vs am gear carb carb_dwmed_cyl carb_wsd_vs_am +# Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 0 2.1897386 +# Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 0 2.1897386 +# Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 -1 0.5286617 +# Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 -3 1.3161442 +# Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 -2 0.9674070 +# Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 -3 1.3161442 +# mpg_dwmed_cyl mpg_wsd_vs_am mpg_gwQ3_cyl +# Mazda RX4 1.3 4.567045 21.40000 +# Mazda RX4 Wag 1.3 4.567045 21.40000 +# Datsun 710 -3.2 4.872348 27.95146 +# Hornet 4 Drive 1.7 2.444036 21.40000 +# Hornet Sportabout 3.5 2.288667 16.21512 +# Valiant -1.6 2.444036 21.40000 rm(mtcars) ``` @@ -935,66 +2197,167 @@ To perform the above aggregation with `collap`, one would simply need to type: -```{r, eval=NCRAN} -collap(mtcars, mpg + disp ~ cyl + vs + am, list(fmean, fsd, fmin, fmax), + +```r +collap(mtcars, mpg + disp ~ cyl + vs + am, list(fmean, fsd, fmin, fmax), w = weights, keep.col.order = FALSE) +# cyl vs am weights fmean.mpg fmean.disp fsd.mpg fsd.disp fmin.mpg fmin.disp fmax.mpg fmax.disp +# 1 4 0 1 1.416054 26.00000 120.30000 0.0000000 0.00000 26.0 120.3 26.0 120.3 +# 2 4 1 0 3.232217 23.08757 136.62639 1.5306081 14.19412 21.5 120.1 24.4 146.7 +# 3 4 1 1 7.893395 27.34688 92.65353 4.8723476 21.44005 21.4 71.1 33.9 121.0 +# 4 6 0 1 1.866025 20.22046 151.00525 0.9349875 10.78832 19.7 145.0 21.0 160.0 +# 5 6 1 0 3.237565 19.52725 204.86661 1.7612203 50.80083 17.8 167.6 21.4 258.0 +# 6 8 0 0 8.054777 15.12267 359.56902 2.2886672 70.60949 10.4 275.8 19.2 472.0 +# 7 8 0 1 2.881698 15.51023 332.88960 0.4758366 29.73979 15.0 301.0 15.8 351.0 ``` `collap` here also saves the sum of the weights in a column. The original idea behind `collap` is however better demonstrated with a different dataset. Consider the *World Development Dataset* `wlddev` introduced in section 1: -```{r, eval=NCRAN} + +```r head(wlddev) +# country iso3c date year decade region income OECD PCGDP LIFEEX GINI ODA +# 1 Afghanistan AFG 1961-01-01 1960 1960 South Asia Low income FALSE NA 32.446 NA 116769997 +# 2 Afghanistan AFG 1962-01-01 1961 1960 South Asia Low income FALSE NA 32.962 NA 232080002 +# 3 Afghanistan AFG 1963-01-01 1962 1960 South Asia Low income FALSE NA 33.471 NA 112839996 +# 4 Afghanistan AFG 1964-01-01 1963 1960 South Asia Low income FALSE NA 33.971 NA 237720001 +# 5 Afghanistan AFG 1965-01-01 1964 1960 South Asia Low income FALSE NA 34.463 NA 295920013 +# 6 Afghanistan AFG 1966-01-01 1965 1960 South Asia Low income FALSE NA 34.948 NA 341839996 +# POP +# 1 8996973 +# 2 9169410 +# 3 9351441 +# 4 9543205 +# 5 9744781 +# 6 9956320 ``` Suppose we would like to aggregate this data by country and decade, but keep all that categorical information. With `collap` this is extremely simple: -```{r, eval=NCRAN} + +```r collap(wlddev, ~ iso3c + decade) %>% head +# country iso3c date year decade region income OECD PCGDP +# 1 Aruba ABW 1961-01-01 1964.5 1960 Latin America & Caribbean High income FALSE NA +# 2 Aruba ABW 1971-01-01 1974.5 1970 Latin America & Caribbean High income FALSE NA +# 3 Aruba ABW 1981-01-01 1984.5 1980 Latin America & Caribbean High income FALSE 20267.30 +# 4 Aruba ABW 1991-01-01 1994.5 1990 Latin America & Caribbean High income FALSE 26611.44 +# 5 Aruba ABW 2001-01-01 2004.5 2000 Latin America & Caribbean High income FALSE 26664.99 +# 6 Aruba ABW 2011-01-01 2014.5 2010 Latin America & Caribbean High income FALSE 24926.17 +# LIFEEX GINI ODA POP +# 1 67.2592 NA NA 56984.3 +# 2 70.6372 NA NA 60080.6 +# 3 73.0153 NA 49745999 61665.9 +# 4 73.6069 NA 29971000 76946.7 +# 5 74.2660 NA 23292000 97939.7 +# 6 75.6546 NA NA 103994.6 ``` Note that the columns of the data are in the original order and also retain all their attributes. To understand this result let us briefly examine the syntax of `collap`: -```{r eval=FALSE} + +```r collap(X, by, FUN = fmean, catFUN = fmode, cols = NULL, w = NULL, wFUN = fsum, - custom = NULL, keep.by = TRUE, keep.w = TRUE, keep.col.order = TRUE, + custom = NULL, keep.by = TRUE, keep.w = TRUE, keep.col.order = TRUE, sort.row = TRUE, parallel = FALSE, mc.cores = 1L, return = c("wide","list","long","long_dupl"), give.names = "auto") # , ... ``` It is clear that `X` is the data and `by` supplies the grouping information, which can be a one- or two-sided formula or alternatively grouping vectors, factors, lists and `GRP` objects (like the *Fast Statistical Functions*). Then `FUN` provides the function(s) applied only to numeric variables in `X` and defaults to `fmean`, while `catFUN` provides the function(s) applied only to categorical variables in `X` and defaults to `fmode`^[I.e. the most frequent value. By default a first-mode is computed.]. `keep.col.order = TRUE` specifies that the data is to be returned with the original column-order. Thus in the above example it was sufficient to supply `X` and `by` and `collap` did the rest for us. -Suppose we only want to aggregate 4 series in this dataset. -```{r, eval=NCRAN} +Suppose we only want to aggregate 4 series in this dataset. + +```r # Same as collap(wlddev, ~ iso3c + decade, cols = 9:12) collap(wlddev, PCGDP + LIFEEX + GINI + ODA ~ iso3c + decade) %>% head +# iso3c decade PCGDP LIFEEX GINI ODA +# 1 ABW 1960 NA 67.2592 NA NA +# 2 ABW 1970 NA 70.6372 NA NA +# 3 ABW 1980 20267.30 73.0153 NA 49745999 +# 4 ABW 1990 26611.44 73.6069 NA 29971000 +# 5 ABW 2000 26664.99 74.2660 NA 23292000 +# 6 ABW 2010 24926.17 75.6546 NA NA ``` As before we could use multiple functions by putting them in a named or unnamed list^[If the list is unnamed, `collap` uses `all.vars(substitute(list(FUN1, FUN2, ...)))` to get the function names. Alternatively it is also possible to pass a character vector of function names.]: -```{r, eval=NCRAN} + +```r collap(wlddev, ~ iso3c + decade, list(fmean, fmedian, fsd), cols = 9:12) %>% head +# iso3c decade fmean.PCGDP fmedian.PCGDP fsd.PCGDP fmean.LIFEEX fmedian.LIFEEX fsd.LIFEEX +# 1 ABW 1960 NA NA NA 67.2592 67.2740 1.03046880 +# 2 ABW 1970 NA NA NA 70.6372 70.6760 0.96813702 +# 3 ABW 1980 20267.30 20280.81 4037.2695 73.0153 73.1260 0.38203753 +# 4 ABW 1990 26611.44 26684.19 592.7919 73.6069 73.6100 0.08549392 +# 5 ABW 2000 26664.99 26992.71 1164.6741 74.2660 74.2215 0.37614448 +# 6 ABW 2010 24926.17 24599.50 1159.7344 75.6546 75.6540 0.42974339 +# fmean.GINI fmedian.GINI fsd.GINI fmean.ODA fmedian.ODA fsd.ODA +# 1 NA NA NA NA NA NA +# 2 NA NA NA NA NA NA +# 3 NA NA NA 49745999 39259998 23573651 +# 4 NA NA NA 29971000 35155001 17270808 +# 5 NA NA NA 23292000 16219999 42969712 +# 6 NA NA NA NA NA NA ``` With multiple functions, we could also request `collap` to return a long-format of the data: -```{r, eval=NCRAN} + +```r collap(wlddev, ~ iso3c + decade, list(fmean, fmedian, fsd), cols = 9:12, return = "long") %>% head +# Function iso3c decade PCGDP LIFEEX GINI ODA +# 1 fmean ABW 1960 NA 67.2592 NA NA +# 2 fmean ABW 1970 NA 70.6372 NA NA +# 3 fmean ABW 1980 20267.30 73.0153 NA 49745999 +# 4 fmean ABW 1990 26611.44 73.6069 NA 29971000 +# 5 fmean ABW 2000 26664.99 74.2660 NA 23292000 +# 6 fmean ABW 2010 24926.17 75.6546 NA NA ``` A very important feature of `collap` to highlight at this point is the `custom` argument, which allows the user to circumvent the broad distinction into numeric and categorical data (and the associated `FUN` and `catFUN` arguments) and specify exactly which columns to aggregate using which functions: -```{r, eval=NCRAN} + +```r collap(wlddev, ~ iso3c + decade, custom = list(fmean = 9:10, fmedian = 11:12, ffirst = c("country","region","income"), flast = c("year","date"), fmode = "OECD")) %>% head +# country iso3c date year decade region income OECD PCGDP LIFEEX +# 1 Aruba ABW 1970-01-01 1969 1960 Latin America & Caribbean High income FALSE NA 67.2592 +# 2 Aruba ABW 1980-01-01 1979 1970 Latin America & Caribbean High income FALSE NA 70.6372 +# 3 Aruba ABW 1990-01-01 1989 1980 Latin America & Caribbean High income FALSE 20267.30 73.0153 +# 4 Aruba ABW 2000-01-01 1999 1990 Latin America & Caribbean High income FALSE 26611.44 73.6069 +# 5 Aruba ABW 2010-01-01 2009 2000 Latin America & Caribbean High income FALSE 26664.99 74.2660 +# 6 Aruba ABW 2020-01-01 2019 2010 Latin America & Caribbean High income FALSE 24926.17 75.6546 +# GINI ODA +# 1 NA NA +# 2 NA NA +# 3 NA 39259998 +# 4 NA 35155001 +# 5 NA 16219999 +# 6 NA NA ``` Since *collapse* 1.5.0, it is also possible to perform weighted aggregations and append functions with `_uw` to yield an unweighted computation: -```{r, eval=NCRAN} + +```r # This aggregates using weighted mean and mode, and unweighted median, first and last value collap(wlddev, ~ region + year, w = ~ POP, custom = list(fmean = 9:10, fmedian_uw = 11:12, ffirst_uw = c("country","region","income"), flast_uw = c("year","date"), fmode = "OECD"), keep.w = FALSE) %>% head +# country date year year region region income +# 1 American Samoa 1961-01-01 1960 1960 East Asia & Pacific East Asia & Pacific Upper middle income +# 2 American Samoa 1962-01-01 1961 1961 East Asia & Pacific East Asia & Pacific Upper middle income +# 3 American Samoa 1963-01-01 1962 1962 East Asia & Pacific East Asia & Pacific Upper middle income +# 4 American Samoa 1964-01-01 1963 1963 East Asia & Pacific East Asia & Pacific Upper middle income +# 5 American Samoa 1965-01-01 1964 1964 East Asia & Pacific East Asia & Pacific Upper middle income +# 6 American Samoa 1966-01-01 1965 1965 East Asia & Pacific East Asia & Pacific Upper middle income +# OECD PCGDP LIFEEX GINI ODA +# 1 FALSE 1313.760 48.20996 NA 37295000 +# 2 FALSE 1395.228 48.73451 NA 26630001 +# 3 FALSE 1463.441 49.39960 NA 100040001 +# 4 FALSE 1540.621 50.37529 NA 40389999 +# 5 FALSE 1665.385 51.57330 NA 70059998 +# 6 FALSE 1733.757 52.94426 NA 91545002 ``` Next to `collap`, the functions `collapv` provides a programmers alternative allowing grouping and weighting columns to be passed using column names or indices, and the function `collapg` operates on grouped data frames. @@ -1008,62 +2371,137 @@ While `ftransform` and the `TRA` argument to the *Fast Statistical Functions* in ### 6.1 Row and Column Arithmetic -When dealing with matrices or matrix-like datasets, we often have to perform operations applying a vector to the rows or columns of the data object in question. The mathematical operations of base R (`+`, `-`, `*`, `/`, `%%`, ...) operate column-wise and are quite inefficient when used with data frames. Even in matrix code it is challenging to efficiently apply a vector `v` to the rows of a matrix `X`. +When dealing with matrices or matrix-like datasets, we often have to perform operations applying a vector to the rows or columns of the data object in question. The mathematical operations of base R (`+`, `-`, `*`, `/`, `%%`, ...) operate column-wise and are quite inefficient when used with data frames. Even in matrix code it is challenging to efficiently apply a vector `v` to the rows of a matrix `X`. + +For this reason *collapse* introduces a set of efficient row- and column-wise arithmetic operators for matrix-like objects: `%rr%`, `%r+%`, `%r-%`, `%r*%`, `%r/%`, `%cr%`, `%c+%`, `%c-%`, `%c*%`, `%c/%`. -For this reason *collapse* introduces a set of efficient row- and column-wise arithmetic operators for matrix-like objects: `%rr%`, `%r+%`, `%r-%`, `%r*%`, `%r/%`, `%cr%`, `%c+%`, `%c-%`, `%c*%`, `%c/%`. -```{r, eval=NCRAN} +```r X <- qM(fselect(GGDC10S, AGR:SUM)) v <- fsum(X) v +# AGR MIN MAN PU CON WRT TRA FIRE +# 11026503529 8134743462 24120129864 1461548426 7845957666 14776120961 6416089614 7216735147 +# GOV OTH SUM +# 5962229565 7155872037 94115930269 # This divides the rows of X by v all_obj_equal(t(t(X) / v), X / outer(rep(1, nrow(X)), v), X %r/% v) +# [1] TRUE # Base R vs. efficient base R vs. collapse -microbenchmark(t(t(X) / v), X / outer(rep(1, nrow(X)), v), X %r/% v) +microbenchmark(t(t(X) / v), X / outer(rep(1, nrow(X)), v), X %r/% v) +# Unit: microseconds +# expr min lq mean median uq max neval +# t(t(X)/v) 194.873 234.3560 358.13500 284.6425 298.0905 3244.043 100 +# X/outer(rep(1, nrow(X)), v) 55.555 83.5580 101.45696 108.5885 113.5495 137.637 100 +# X %r/% v 11.685 37.2075 83.87657 63.2630 72.7135 2744.663 100 # Data frame row operations dat <- fselect(GGDC10S, AGR:SUM) -microbenchmark(dat %r/% v, # Same thing using mapply and collapse::copyAttrib +microbenchmark(dat %r/% v, # Same thing using mapply and collapse::copyAttrib copyAttrib(mapply(`/`, dat, v, SIMPLIFY = FALSE), dat)) +# Unit: microseconds +# expr min lq mean median uq +# dat %r/% v 15.129 37.187 143.03998 40.139 46.5555 +# copyAttrib(mapply(`/`, dat, v, SIMPLIFY = FALSE), dat) 59.204 64.124 71.98944 66.379 76.7315 +# max neval +# 5089.289 100 +# 110.003 100 # Data frame column arithmetic is very slow -microbenchmark(dat / dat$SUM, dat / 5, dat / dat, - dat %c/% dat$SUM, dat %c/% 5, dat %c/% dat) - +microbenchmark(dat / dat$SUM, dat / 5, dat / dat, + dat %c/% dat$SUM, dat %c/% 5, dat %c/% dat) +# Unit: microseconds +# expr min lq mean median uq max neval +# dat/dat$SUM 1275.264 1385.2260 1636.95411 1434.2825 1551.1940 5150.092 100 +# dat/5 276.012 295.4870 1181.83361 306.2905 327.4260 83176.208 100 +# dat/dat 295.323 320.1075 417.10858 330.5010 361.7020 3807.711 100 +# dat %c/% dat$SUM 20.295 45.4075 120.01479 48.5235 55.1245 3520.096 100 +# dat %c/% 5 17.179 44.5260 87.22996 48.7285 64.1035 3489.223 100 +# dat %c/% dat 20.459 46.2685 93.95601 51.0040 67.5065 3795.903 100 ``` ### 6.1 Row and Column Data Apply `dapply` is an efficient apply command for matrices and data frames. It can be used to apply functions to rows or (by default) columns of matrices or data frames and by default returns objects of the same type and with the same attributes unless the result of each computation is a scalar. -```{r, eval=NCRAN} + +```r dapply(mtcars, median) +# mpg cyl disp hp drat wt qsec vs am gear carb +# 19.200 6.000 196.300 123.000 3.695 3.325 17.710 0.000 0.000 4.000 2.000 dapply(mtcars, median, MARGIN = 1) +# Mazda RX4 Mazda RX4 Wag Datsun 710 Hornet 4 Drive Hornet Sportabout +# 4.000 4.000 4.000 3.215 3.440 +# Valiant Duster 360 Merc 240D Merc 230 Merc 280 +# 3.460 4.000 4.000 4.000 4.000 +# Merc 280C Merc 450SE Merc 450SL Merc 450SLC Cadillac Fleetwood +# 4.000 4.070 3.730 3.780 5.250 +# Lincoln Continental Chrysler Imperial Fiat 128 Honda Civic Toyota Corolla +# 5.424 5.345 4.000 4.000 4.000 +# Toyota Corona Dodge Challenger AMC Javelin Camaro Z28 Pontiac Firebird +# 3.700 3.520 3.435 4.000 3.845 +# Fiat X1-9 Porsche 914-2 Lotus Europa Ford Pantera L Ferrari Dino +# 4.000 4.430 4.000 5.000 6.000 +# Maserati Bora Volvo 142E +# 8.000 4.000 dapply(mtcars, quantile) +# mpg cyl disp hp drat wt qsec vs am gear carb +# 0% 10.400 4 71.100 52.0 2.760 1.51300 14.5000 0 0 3 1 +# 25% 15.425 4 120.825 96.5 3.080 2.58125 16.8925 0 0 3 2 +# 50% 19.200 6 196.300 123.0 3.695 3.32500 17.7100 0 0 4 2 +# 75% 22.800 8 326.000 180.0 3.920 3.61000 18.9000 1 1 4 4 +# 100% 33.900 8 472.000 335.0 4.930 5.42400 22.9000 1 1 5 8 dapply(mtcars, quantile, MARGIN = 1) %>% head +# 0% 25% 50% 75% 100% +# Mazda RX4 0 3.2600 4.000 18.730 160 +# Mazda RX4 Wag 0 3.3875 4.000 19.010 160 +# Datsun 710 1 1.6600 4.000 20.705 108 +# Hornet 4 Drive 0 2.0000 3.215 20.420 258 +# Hornet Sportabout 0 2.5000 3.440 17.860 360 +# Valiant 0 1.8800 3.460 19.160 225 # This is considerably more efficient than log(mtcars): -dapply(mtcars, log) %>% head +dapply(mtcars, log) %>% head +# mpg cyl disp hp drat wt qsec vs am +# Mazda RX4 3.044522 1.791759 5.075174 4.700480 1.360977 0.9631743 2.800933 -Inf 0 +# Mazda RX4 Wag 3.044522 1.791759 5.075174 4.700480 1.360977 1.0560527 2.834389 -Inf 0 +# Datsun 710 3.126761 1.386294 4.682131 4.532599 1.348073 0.8415672 2.923699 0 0 +# Hornet 4 Drive 3.063391 1.791759 5.552960 4.700480 1.124930 1.1678274 2.967333 0 -Inf +# Hornet Sportabout 2.928524 2.079442 5.886104 5.164786 1.147402 1.2354715 2.834389 -Inf -Inf +# Valiant 2.895912 1.791759 5.416100 4.653960 1.015231 1.2412686 3.006672 0 -Inf +# gear carb +# Mazda RX4 1.386294 1.3862944 +# Mazda RX4 Wag 1.386294 1.3862944 +# Datsun 710 1.386294 0.0000000 +# Hornet 4 Drive 1.098612 0.0000000 +# Hornet Sportabout 1.098612 0.6931472 +# Valiant 1.098612 0.0000000 ``` `dapply` preserves the data structure: -```{r, eval=NCRAN} + +```r is.data.frame(dapply(mtcars, log)) +# [1] TRUE is.matrix(dapply(m, log)) +# [1] TRUE ``` It also delivers seamless conversions, i.e. you can apply functions to data frame rows or columns and return a matrix and vice-versa: -```{r, eval=NCRAN} + +```r identical(log(m), dapply(mtcars, log, return = "matrix")) +# [1] TRUE identical(dapply(mtcars, log), dapply(m, log, return = "data.frame")) +# [1] TRUE ``` -On data frames, the performance is comparable to `lapply`, and `dapply` is about 2x faster than `apply` for row- or column-wise operations on matrices. The most important feature is that it does not change the structure of the data at all: all attributes are preserved unless the result is a scalar and `drop = TRUE` (the default). +On data frames, the performance is comparable to `lapply`, and `dapply` is about 2x faster than `apply` for row- or column-wise operations on matrices. The most important feature is that it does not change the structure of the data at all: all attributes are preserved unless the result is a scalar and `drop = TRUE` (the default). @@ -1074,33 +2512,78 @@ On data frames, the performance is comparable to `lapply`, and `dapply` is about -```{r, eval=NCRAN} + +```r v <- iris$Sepal.Length # A numeric vector f <- iris$Species # A factor ## default vector method BY(v, f, sum) # Sum by species, about 2x faster than tapply(v, f, sum) +# setosa versicolor virginica +# 250.3 296.8 329.4 BY(v, f, quantile) # Species quantiles: by default stacked +# setosa.0% setosa.25% setosa.50% setosa.75% setosa.100% versicolor.0% +# 4.300 4.800 5.000 5.200 5.800 4.900 +# versicolor.25% versicolor.50% versicolor.75% versicolor.100% virginica.0% virginica.25% +# 5.600 5.900 6.300 7.000 4.900 6.225 +# virginica.50% virginica.75% virginica.100% +# 6.500 6.900 7.900 BY(v, f, quantile, expand.wide = TRUE) # Wide format +# 0% 25% 50% 75% 100% +# setosa 4.3 4.800 5.0 5.2 5.8 +# versicolor 4.9 5.600 5.9 6.3 7.0 +# virginica 4.9 6.225 6.5 6.9 7.9 ## matrix method miris <- qM(num_vars(iris)) BY(miris, f, sum) # Also returns as matrix +# Sepal.Length Sepal.Width Petal.Length Petal.Width +# setosa 250.3 171.4 73.1 12.3 +# versicolor 296.8 138.5 213.0 66.3 +# virginica 329.4 148.7 277.6 101.3 BY(miris, f, quantile) %>% head +# Sepal.Length Sepal.Width Petal.Length Petal.Width +# setosa.0% 4.3 2.300 1.000 0.1 +# setosa.25% 4.8 3.200 1.400 0.2 +# setosa.50% 5.0 3.400 1.500 0.2 +# setosa.75% 5.2 3.675 1.575 0.3 +# setosa.100% 5.8 4.400 1.900 0.6 +# versicolor.0% 4.9 2.000 3.000 1.0 BY(miris, f, quantile, expand.wide = TRUE)[, 1:5] +# Sepal.Length.0% Sepal.Length.25% Sepal.Length.50% Sepal.Length.75% Sepal.Length.100% +# setosa 4.3 4.800 5.0 5.2 5.8 +# versicolor 4.9 5.600 5.9 6.3 7.0 +# virginica 4.9 6.225 6.5 6.9 7.9 BY(miris, f, quantile, expand.wide = TRUE, return = "list")[1:2] # list of matrices +# $Sepal.Length +# 0% 25% 50% 75% 100% +# setosa 4.3 4.800 5.0 5.2 5.8 +# versicolor 4.9 5.600 5.9 6.3 7.0 +# virginica 4.9 6.225 6.5 6.9 7.9 +# +# $Sepal.Width +# 0% 25% 50% 75% 100% +# setosa 2.3 3.200 3.4 3.675 4.4 +# versicolor 2.0 2.525 2.8 3.000 3.4 +# virginica 2.2 2.800 3.0 3.175 3.8 ## data.frame method BY(num_vars(iris), f, sum) # Also returns a data.frame etc... +# Sepal.Length Sepal.Width Petal.Length Petal.Width +# setosa 250.3 171.4 73.1 12.3 +# versicolor 296.8 138.5 213.0 66.3 +# virginica 329.4 148.7 277.6 101.3 ## Conversions identical(BY(num_vars(iris), f, sum), BY(miris, f, sum, return = "data.frame")) +# [1] TRUE identical(BY(miris, f, sum), BY(num_vars(iris), f, sum, return = "matrix")) +# [1] TRUE ``` ### 6.3 Fast (Grouped) Replacing and Sweeping-out Statistics @@ -1128,10 +2611,11 @@ identical(BY(miris, f, sum), BY(num_vars(iris), f, sum, return = "matrix")) `TRA` is also incorporated as an argument to all *Fast Statistical Functions*. Therefore it is only really necessary and advisable to use the `TRA` function if both aggregate statistics and transformed data are required, or to sweep out statistics otherwise obtained (e.g. regression or correlation coefficients etc.). The code below computes the column means of the iris-matrix obtained above, and uses them to demean that matrix. -```{r, eval=NCRAN} + +```r # Note: All examples below generalize to vectors or data frames stats <- fmean(miris) # Saving stats @@ -1142,110 +2626,262 @@ microbenchmark(sweep(miris, 2, stats, "-"), # base R miris %r-% fmean(miris), # The operator is actually a wrapper around TRA fmean(miris, TRA = "-"), # better for any operation if the stats are not needed fwithin(miris)) # fastest, fwithin is discussed in section 6.5 +# Unit: microseconds +# expr min lq mean median uq max neval +# sweep(miris, 2, stats, "-") 15.457 16.2975 17.57711 17.0355 17.6915 53.505 100 +# miris - outer(rep(1, nrow(iris)), stats) 4.715 5.6375 6.36812 6.0270 6.6010 21.402 100 +# TRA(miris, fmean(miris), "-") 3.075 3.3210 3.98930 3.6080 4.4895 14.678 100 +# miris %r-% fmean(miris) 3.362 3.8130 4.68425 4.0590 4.5305 42.066 100 +# fmean(miris, TRA = "-") 2.583 2.8085 3.79496 2.9930 4.2640 29.848 100 +# fwithin(miris) 3.321 3.6080 5.26768 3.8130 4.9815 78.474 100 # Simple replacing [same as fmean(miris, TRA = "replace") or fbetween(miris)] TRA(miris, fmean(miris), "replace") %>% head(3) +# Sepal.Length Sepal.Width Petal.Length Petal.Width +# [1,] 5.843333 3.057333 3.758 1.199333 +# [2,] 5.843333 3.057333 3.758 1.199333 +# [3,] 5.843333 3.057333 3.758 1.199333 # Simple scaling [same as fsd(miris, TRA = "/")] TRA(miris, fsd(miris), "/") %>% head(3) +# Sepal.Length Sepal.Width Petal.Length Petal.Width +# [1,] 6.158928 8.029986 0.7930671 0.2623854 +# [2,] 5.917402 6.882845 0.7930671 0.2623854 +# [3,] 5.675875 7.341701 0.7364195 0.2623854 ``` All of the above is functionality also offered by `base::sweep`, but `TRA` is significantly faster. The big advantage of `TRA` is that it also supports grouped operations: -```{r, eval=NCRAN} + +```r # Grouped centering [same as fmean(miris, f, TRA = "-") or fwithin(m, f)] TRA(miris, fmean(miris, f), "-", f) %>% head(3) +# Sepal.Length Sepal.Width Petal.Length Petal.Width +# [1,] 0.094 0.072 -0.062 -0.046 +# [2,] -0.106 -0.428 -0.062 -0.046 +# [3,] -0.306 -0.228 -0.162 -0.046 # Grouped replacing [same as fmean(m, f, TRA = "replace") or fbetween(m, f)] TRA(miris, fmean(miris, f), "replace", f) %>% head(3) +# Sepal.Length Sepal.Width Petal.Length Petal.Width +# [1,] 5.006 3.428 1.462 0.246 +# [2,] 5.006 3.428 1.462 0.246 +# [3,] 5.006 3.428 1.462 0.246 # Groupwise percentages [same as fsum(m, f, TRA = "%")] TRA(miris, fsum(miris, f), "%", f) %>% head(3) +# Sepal.Length Sepal.Width Petal.Length Petal.Width +# [1,] 2.037555 2.042007 1.915185 1.626016 +# [2,] 1.957651 1.750292 1.915185 1.626016 +# [3,] 1.877747 1.866978 1.778386 1.626016 ``` -As mentioned, calling the `TRA()` function does not make much sense if the same task can be performed using the *Fast Statistical Functions* or the arithmetic operators. It is however a very useful function to call for complex transformations involving grouped sweeping operations with precomputed quantities. +As mentioned, calling the `TRA()` function does not make much sense if the same task can be performed using the *Fast Statistical Functions* or the arithmetic operators. It is however a very useful function to call for complex transformations involving grouped sweeping operations with precomputed quantities. ### 6.4 Fast Standardizing The function `fscale` can be used to efficiently standardize (i.e. scale and center) data using a numerically stable online algorithm. It's structure is the same as the *Fast Statistical Functions*. The standardization-operator `STD` also exists as a wrapper around `fscale`. The difference is that by default `STD` adds a prefix to standardized variables and also provides an enhanced method for data frames (more about operators in the next section). -```{r, eval=NCRAN} + +```r # fscale doesn't rename columns fscale(mtcars) %>% head(2) +# mpg cyl disp hp drat wt qsec vs +# Mazda RX4 0.1508848 -0.1049878 -0.5706198 -0.5350928 0.5675137 -0.6103996 -0.7771651 -0.8680278 +# Mazda RX4 Wag 0.1508848 -0.1049878 -0.5706198 -0.5350928 0.5675137 -0.3497853 -0.4637808 -0.8680278 +# am gear carb +# Mazda RX4 1.189901 0.4235542 0.7352031 +# Mazda RX4 Wag 1.189901 0.4235542 0.7352031 # By default adds a prefix STD(mtcars) %>% head(2) +# STD.mpg STD.cyl STD.disp STD.hp STD.drat STD.wt STD.qsec STD.vs +# Mazda RX4 0.1508848 -0.1049878 -0.5706198 -0.5350928 0.5675137 -0.6103996 -0.7771651 -0.8680278 +# Mazda RX4 Wag 0.1508848 -0.1049878 -0.5706198 -0.5350928 0.5675137 -0.3497853 -0.4637808 -0.8680278 +# STD.am STD.gear STD.carb +# Mazda RX4 1.189901 0.4235542 0.7352031 +# Mazda RX4 Wag 1.189901 0.4235542 0.7352031 # See that is works STD(mtcars) %>% qsu +# N Mean SD Min Max +# STD.mpg 32 0 1 -1.6079 2.2913 +# STD.cyl 32 0 1 -1.2249 1.0149 +# STD.disp 32 -0 1 -1.2879 1.9468 +# STD.hp 32 0 1 -1.381 2.7466 +# STD.drat 32 -0 1 -1.5646 2.4939 +# STD.wt 32 -0 1 -1.7418 2.2553 +# STD.qsec 32 -0 1 -1.874 2.8268 +# STD.vs 32 0 1 -0.868 1.116 +# STD.am 32 -0 1 -0.8141 1.1899 +# STD.gear 32 -0 1 -0.9318 1.7789 +# STD.carb 32 -0 1 -1.1222 3.2117 # We can also scale and center to a different mean and standard deviation: qsu(fscale(mtcars, mean = 5, sd = 3))[, .c(Mean, SD)] %>% t +# mpg cyl disp hp drat wt qsec vs am gear carb +# Mean 5 5 5 5 5 5 5 5 5 5 5 +# SD 3 3 3 3 3 3 3 3 3 3 3 # Or not center at all. In that case scaling is mean-preserving, in contrast to fsd(mtcars, TRA = "/") qsu(fscale(mtcars, mean = FALSE, sd = 3))[, .c(Mean, SD)] %>% t +# mpg cyl disp hp drat wt qsec vs am gear carb +# Mean 20.0906 6.1875 230.7219 146.6875 3.5966 3.2172 17.8487 0.4375 0.4062 3.6875 2.8125 +# SD 3 3 3 3 3 3 3 3 3 3 3 ``` Scaling with `fscale / STD` can also be done groupwise and / or weighted. For example the Groningen Growth and Development Center 10-Sector Database provides annual series of value added in local currency and persons employed for 10 broad sectors in several African, Asian, and Latin American countries. -```{r, eval=NCRAN} + +```r head(GGDC10S) +# Country Regioncode Region Variable Year AGR MIN MAN PU +# 1 BWA SSA Sub-saharan Africa VA 1960 NA NA NA NA +# 2 BWA SSA Sub-saharan Africa VA 1961 NA NA NA NA +# 3 BWA SSA Sub-saharan Africa VA 1962 NA NA NA NA +# 4 BWA SSA Sub-saharan Africa VA 1963 NA NA NA NA +# 5 BWA SSA Sub-saharan Africa VA 1964 16.30154 3.494075 0.7365696 0.1043936 +# 6 BWA SSA Sub-saharan Africa VA 1965 15.72700 2.495768 1.0181992 0.1350976 +# CON WRT TRA FIRE GOV OTH SUM +# 1 NA NA NA NA NA NA NA +# 2 NA NA NA NA NA NA NA +# 3 NA NA NA NA NA NA NA +# 4 NA NA NA NA NA NA NA +# 5 0.6600454 6.243732 1.658928 1.119194 4.822485 2.341328 37.48229 +# 6 1.3462312 7.064825 1.939007 1.246789 5.695848 2.678338 39.34710 ``` If we wanted to correlate this data across countries and sectors, it needs to be standardized: -```{r, eval=NCRAN} + +```r # Standardizing Sectors by Variable and Country STD_GGDC10S <- STD(GGDC10S, ~ Variable + Country, cols = 6:16) head(STD_GGDC10S) +# Variable Country STD.AGR STD.MIN STD.MAN STD.PU STD.CON STD.WRT STD.TRA +# 1 VA BWA NA NA NA NA NA NA NA +# 2 VA BWA NA NA NA NA NA NA NA +# 3 VA BWA NA NA NA NA NA NA NA +# 4 VA BWA NA NA NA NA NA NA NA +# 5 VA BWA -0.7382911 -0.7165772 -0.6682536 -0.8051315 -0.6922839 -0.6032762 -0.5889923 +# 6 VA BWA -0.7392424 -0.7167359 -0.6680535 -0.8050172 -0.6917529 -0.6030211 -0.5887320 +# STD.FIRE STD.GOV STD.OTH STD.SUM +# 1 NA NA NA NA +# 2 NA NA NA NA +# 3 NA NA NA NA +# 4 NA NA NA NA +# 5 -0.6349956 -0.6561054 -0.5959744 -0.6758663 +# 6 -0.6349359 -0.6558634 -0.5957137 -0.6757768 # Correlating Standardized Value-Added across countries fsubset(STD_GGDC10S, Variable == "VA", STD.AGR:STD.SUM) %>% pwcor +# STD.AGR STD.MIN STD.MAN STD.PU STD.CON STD.WRT STD.TRA STD.FIRE STD.GOV STD.OTH STD.SUM +# STD.AGR 1 .88 .93 .88 .89 .90 .90 .86 .93 .88 .90 +# STD.MIN .88 1 .86 .84 .85 .85 .84 .83 .88 .84 .86 +# STD.MAN .93 .86 1 .95 .96 .97 .98 .95 .98 .97 .98 +# STD.PU .88 .84 .95 1 .95 .96 .96 .95 .96 .96 .97 +# STD.CON .89 .85 .96 .95 1 .98 .98 .97 .98 .97 .98 +# STD.WRT .90 .85 .97 .96 .98 1 .99 .98 .99 .99 1.00 +# STD.TRA .90 .84 .98 .96 .98 .99 1 .98 .99 .99 .99 +# STD.FIRE .86 .83 .95 .95 .97 .98 .98 1 .98 .98 .98 +# STD.GOV .93 .88 .98 .96 .98 .99 .99 .98 1 .99 1.00 +# STD.OTH .88 .84 .97 .96 .97 .99 .99 .98 .99 1 .99 +# STD.SUM .90 .86 .98 .97 .98 1.00 .99 .98 1.00 .99 1 ``` ### 6.5 Fast Centering and Averaging As a slightly faster alternative to `fmean(x, g, w, TRA = "-"/"-+")` or `fmean(x, g, w, TRA = "replace"/"replace_fill")`, `fwithin` and `fbetween` can be used to perform common (grouped, weighted) centering and averaging tasks (also known as *between*- and *within*- transformations in the language of panel data econometrics). `fbetween` / `fwithin` are faster than `fmean(..., TRA = ...)` because they don't materialize the full set of computed averages. The operators `W` and `B` also exist. -```{r, eval=NCRAN} + +```r ## Simple centering and averaging fbetween(mtcars$mpg) %>% head +# [1] 20.09062 20.09062 20.09062 20.09062 20.09062 20.09062 fwithin(mtcars$mpg) %>% head +# [1] 0.909375 0.909375 2.709375 1.309375 -1.390625 -1.990625 all.equal(fbetween(mtcars) + fwithin(mtcars), mtcars) +# [1] TRUE ## Groupwise centering and averaging fbetween(mtcars$mpg, mtcars$cyl) %>% head +# [1] 19.74286 19.74286 26.66364 19.74286 15.10000 19.74286 fwithin(mtcars$mpg, mtcars$cyl) %>% head +# [1] 1.257143 1.257143 -3.863636 1.657143 3.600000 -1.642857 all.equal(fbetween(mtcars, mtcars$cyl) + fwithin(mtcars, mtcars$cyl), mtcars) +# [1] TRUE ``` To demonstrate more clearly the utility of the operators which exists for all fast transformation and time series functions, the code below implements the task of demeaning 4 series by country and saving the country-id using the within-operator `W` as opposed to `fwithin` which requires all input to be passed externally like the *Fast Statistical Functions*. -```{r, eval=NCRAN} + +```r # Center 4 series in this dataset by country -W(wlddev, ~ iso3c, cols = 9:12) %>% head +W(wlddev, ~ iso3c, cols = 9:12) %>% head +# iso3c W.PCGDP W.LIFEEX W.GINI W.ODA +# 1 AFG NA -16.75117 NA -1370778502 +# 2 AFG NA -16.23517 NA -1255468497 +# 3 AFG NA -15.72617 NA -1374708502 +# 4 AFG NA -15.22617 NA -1249828497 +# 5 AFG NA -14.73417 NA -1191628485 +# 6 AFG NA -14.24917 NA -1145708502 # Same thing done manually using fwithin... -add_vars(get_vars(wlddev, "iso3c"), - get_vars(wlddev, 9:12) %>% - fwithin(wlddev$iso3c) %>% +add_vars(get_vars(wlddev, "iso3c"), + get_vars(wlddev, 9:12) %>% + fwithin(wlddev$iso3c) %>% add_stub("W.")) %>% head +# iso3c W.PCGDP W.LIFEEX W.GINI W.ODA +# 1 AFG NA -16.75117 NA -1370778502 +# 2 AFG NA -16.23517 NA -1255468497 +# 3 AFG NA -15.72617 NA -1374708502 +# 4 AFG NA -15.22617 NA -1249828497 +# 5 AFG NA -14.73417 NA -1191628485 +# 6 AFG NA -14.24917 NA -1145708502 ``` It is also possible to drop the id's in `W` using the argument `keep.by = FALSE`. `fbetween / B` and `fwithin / W` each have one additional computational option: -```{r, fig.height=4, eval=NCRAN} + +```r # This replaces missing values with the group-mean: Same as fmean(x, g, TRA = "replace_fill") B(wlddev, ~ iso3c, cols = 9:12, fill = TRUE) %>% head +# iso3c B.PCGDP B.LIFEEX B.GINI B.ODA +# 1 AFG 483.8351 49.19717 NA 1487548499 +# 2 AFG 483.8351 49.19717 NA 1487548499 +# 3 AFG 483.8351 49.19717 NA 1487548499 +# 4 AFG 483.8351 49.19717 NA 1487548499 +# 5 AFG 483.8351 49.19717 NA 1487548499 +# 6 AFG 483.8351 49.19717 NA 1487548499 # This adds back the overall mean after subtracting out group means: Same as fmean(x, g, TRA = "-+") W(wlddev, ~ iso3c, cols = 9:12, mean = "overall.mean") %>% head +# iso3c W.PCGDP W.LIFEEX W.GINI W.ODA +# 1 AFG NA 47.54514 NA -916058371 +# 2 AFG NA 48.06114 NA -800748366 +# 3 AFG NA 48.57014 NA -919988371 +# 4 AFG NA 49.07014 NA -795108366 +# 5 AFG NA 49.56214 NA -736908354 +# 6 AFG NA 50.04714 NA -690988371 # Visual demonstration of centering on the overall mean vs. simple centering oldpar <- par(mfrow = c(1, 3)) @@ -1253,33 +2889,52 @@ plot(iris[1:2], col = iris$Species, main = "Raw Data") # R plot(W(iris, ~ Species)[2:3], col = iris$Species, main = "Simple Centering") # Simple centering plot(W(iris, ~ Species, mean = "overall.mean")[2:3], col = iris$Species, # Centering on overall mean: Preserves level of data main = "Added Overall Mean") +``` + +
+plot of chunk BWplot +

plot of chunk BWplot

+
+ +```r par(oldpar) ``` - Another great utility of operators is that they can be employed in regression formulas in a manor that is both very efficient and pleasing to the eyes. The code below demonstrates the use of `W` and `B` to efficiently run fixed-effects regressions with `lm`. -```{r, eval=NCRAN} + +```r # When using operators in formulas, we need to remove missing values beforehand to obtain the same results as a Fixed-Effects package data <- wlddev %>% fselect(iso3c, year, PCGDP, LIFEEX) %>% na_omit # classical lm() -> iso3c is a factor, creates a matrix of 200+ country dummies. coef(lm(PCGDP ~ LIFEEX + iso3c, data))[1:2] +# (Intercept) LIFEEX +# -2837.039 380.448 # Centering each variable individually coef(lm(W(PCGDP, iso3c) ~ W(LIFEEX, iso3c), data)) +# (Intercept) W(LIFEEX, iso3c) +# 5.596034e-13 3.804480e+02 # Centering the data coef(lm(W.PCGDP ~ W.LIFEEX, W(data, PCGDP + LIFEEX ~ iso3c))) +# (Intercept) W.LIFEEX +# 5.596034e-13 3.804480e+02 # Adding the overall mean back to the data only changes the intercept coef(lm(W.PCGDP ~ W.LIFEEX, W(data, PCGDP + LIFEEX ~ iso3c, mean = "overall.mean"))) +# (Intercept) W.LIFEEX +# -14020.142 380.448 # Procedure suggested by Mundlak (1978) - controlling for group averages instead of demeaning coef(lm(PCGDP ~ LIFEEX + B(LIFEEX, iso3c), data)) +# (Intercept) LIFEEX B(LIFEEX, iso3c) +# -52254.7421 380.4480 585.8386 ``` In general it is recommended calling the long names (i.e. `fwithin` or `fscale` etc.) for programming since they are a bit more efficient on the R-side of things and require all input in terms of data. For all other purposes the operators are more convenient. It is important to note that the operators can do everything the functions can do (i.e. you can also pass grouping vectors or *GRP* objects to them). They are just simple wrappers that in the data frame method add 4 additional features: @@ -1304,44 +2959,77 @@ In general it is recommended calling the long names (i.e. `fwithin` or `fscale` ### 6.6 HD Centering and Linear Prediction Sometimes simple centering is not enough, for example if a linear model with multiple levels of fixed-effects needs to be estimated, potentially involving interactions with continuous covariates. For these purposes `fhdwithin / HDW` and `fhdbetween / HDB` were created as efficient multi-purpose functions for linear prediction and partialling out. They operate by splitting complex regression problems in 2 parts: Factors and factor-interactions are projected out using `fixest::demean`, an efficient `C++` routine for centering vectors on multiple factors, whereas continuous variables are dealt with using a standard `chol` or `qr` decomposition in base R. The examples below show the use of the `HDW` operator in manually solving a regression problem with country and time fixed effects. -```{r, eval=NCRAN} + +```r data$year <- qF(data$year, na.exclude = FALSE) # the country code (iso3c) is already a factor # classical lm() -> creates a matrix of 196 country dummies and 56 year dummies coef(lm(PCGDP ~ LIFEEX + iso3c + year, data))[1:2] +# (Intercept) LIFEEX +# 37388.0493 -333.0115 # Centering each variable individually coef(lm(HDW(PCGDP, list(iso3c, year)) ~ HDW(LIFEEX, list(iso3c, year)), data)) +# (Intercept) HDW(LIFEEX, list(iso3c, year)) +# -2.450245e-13 -3.330115e+02 # Centering the entire data coef(lm(HDW.PCGDP ~ HDW.LIFEEX, HDW(data, PCGDP + LIFEEX ~ iso3c + year))) +# (Intercept) HDW.LIFEEX +# -2.450245e-13 -3.330115e+02 # Procedure suggested by Mundlak (1978) - controlling for averages instead of demeaning coef(lm(PCGDP ~ LIFEEX + HDB(LIFEEX, list(iso3c, year)), data)) +# (Intercept) LIFEEX HDB(LIFEEX, list(iso3c, year)) +# -48141.1094 -333.0115 1236.2681 ``` We may wish to test whether including time fixed-effects in the above regression actually impacts the fit. This can be done with the fast F-test: -```{r, eval=NCRAN} + +```r # The syntax is fFtest(y, exc, X, ...). 'exc' are exclusion restrictions. data %$% fFtest(PCGDP, year, list(LIFEEX, iso3c)) +# R-Sq. DF1 DF2 F-Stat. P-Value +# Full Model 0.894 258 8763 286.130 0.000 +# Restricted Model 0.873 199 8822 304.661 0.000 +# Exclusion Rest. 0.021 59 8763 29.280 0.000 ``` The test shows that the time fixed-effects (accounted for like year dummies) are jointly significant. -One can also use `fhdbetween / HDB` and `fhdwithin / HDW` to project out interactions and continuous covariates. +One can also use `fhdbetween / HDB` and `fhdwithin / HDW` to project out interactions and continuous covariates. -```{r, eval=NCRAN} + +```r wlddev$year <- as.numeric(wlddev$year) # classical lm() -> full country-year interaction, -> 200+ country dummies, 200+ trends, year and ODA coef(lm(PCGDP ~ LIFEEX + iso3c * year + ODA, wlddev))[1:2] +# (Intercept) LIFEEX +# -7.257955e+05 8.938626e+00 -# Same using HDW +# Same using HDW coef(lm(HDW.PCGDP ~ HDW.LIFEEX, HDW(wlddev, PCGDP + LIFEEX ~ iso3c * year + ODA))) +# (Intercept) HDW.LIFEEX +# 3.403288e-12 8.938626e+00 # example of a simple continuous problem HDW(iris[1:2], iris[3:4]) %>% head +# HDW.Sepal.Length HDW.Sepal.Width +# 1 0.21483967 0.2001352 +# 2 0.01483967 -0.2998648 +# 3 -0.13098262 -0.1255786 +# 4 -0.33933805 -0.1741510 +# 5 0.11483967 0.3001352 +# 6 0.41621663 0.6044681 # May include factors.. HDW(iris[1:2], iris[3:5]) %>% head +# HDW.Sepal.Length HDW.Sepal.Width +# 1 0.14989286 0.1102684 +# 2 -0.05010714 -0.3897316 +# 3 -0.15951256 -0.1742640 +# 4 -0.44070173 -0.3051992 +# 5 0.04989286 0.2102684 +# 6 0.17930818 0.3391766 ``` @@ -1351,170 +3039,499 @@ HDW(iris[1:2], iris[3:5]) %>% head ### 7.1 Panel Series to Array Conversions To facilitate the exploration and access of panel data, `psmat` was created as an S3 generic to efficiently obtain matrices or 3D-arrays from panel data. -```{r, eval=NCRAN} + +```r mts <- psmat(wlddev, PCGDP ~ iso3c, ~ year) str(mts) +# 'psmat' num [1:216, 1:61] NA NA NA NA NA ... +# - attr(*, "dimnames")=List of 2 +# ..$ : chr [1:216] "ABW" "AFG" "AGO" "ALB" ... +# ..$ : chr [1:61] "1960" "1961" "1962" "1963" ... +# - attr(*, "transpose")= logi FALSE plot(log10(mts), main = paste("Log10", vlabels(wlddev$PCGDP)), xlab = "Year") ``` +
+plot of chunk psmatplot +

plot of chunk psmatplot

+
+ Passing a data frame of panel series to `psmat` generates a 3D array: -```{r, eval=NCRAN} + +```r # Get panel series array psar <- psmat(wlddev, ~ iso3c, ~ year, cols = 9:12) str(psar) +# 'psmat' num [1:216, 1:61, 1:4] NA NA NA NA NA ... +# - attr(*, "dimnames")=List of 3 +# ..$ : chr [1:216] "ABW" "AFG" "AGO" "ALB" ... +# ..$ : chr [1:61] "1960" "1961" "1962" "1963" ... +# ..$ : chr [1:4] "PCGDP" "LIFEEX" "GINI" "ODA" +# - attr(*, "transpose")= logi FALSE plot(psar) ``` -```{r, fig.height=7, eval=NCRAN} + +
+plot of chunk psarplot +

plot of chunk psarplot

+
+ +```r # Plot array of Panel Series aggregated by region: -collap(wlddev, ~ region + year, cols = 9:12) %>% +collap(wlddev, ~ region + year, cols = 9:12) %>% psmat( ~ region, ~ year) %>% plot(legend = TRUE, labs = vlabels(wlddev)[9:12]) ``` + +
+plot of chunk psarplot2 +

plot of chunk psarplot2

+
`psmat` can also output a list of panel series matrices, which can be used among other things to reshape the data with `unlist2d` (discussed in more detail in List-Processing section). -```{r, eval=NCRAN} + +```r # This gives list of ps-matrices psml <- psmat(wlddev, ~ iso3c, ~ year, 9:12, array = FALSE) str(psml, give.attr = FALSE) +# List of 4 +# $ PCGDP : 'psmat' num [1:216, 1:61] NA NA NA NA NA ... +# $ LIFEEX: 'psmat' num [1:216, 1:61] 65.7 32.4 37.5 62.3 NA ... +# $ GINI : 'psmat' num [1:216, 1:61] NA NA NA NA NA NA NA NA NA NA ... +# $ ODA : 'psmat' num [1:216, 1:61] NA 116769997 -390000 NA NA ... # Using unlist2d, can generate a data.frame unlist2d(psml, idcols = "Variable", row.names = "Country") %>% gv(1:10) %>% head +# Variable Country 1960 1961 1962 1963 1964 1965 1966 1967 +# 1 PCGDP ABW NA NA NA NA NA NA NA NA +# 2 PCGDP AFG NA NA NA NA NA NA NA NA +# 3 PCGDP AGO NA NA NA NA NA NA NA NA +# 4 PCGDP ALB NA NA NA NA NA NA NA NA +# 5 PCGDP AND NA NA NA NA NA NA NA NA +# 6 PCGDP ARE NA NA NA NA NA NA NA NA ``` ### 7.2 Panel Series ACF, PACF and CCF The correlation structure of panel data can also be explored with `psacf`, `pspacf` and `psccf`. These functions are exact analogues to `stats::acf`, `stats::pacf` and `stats::ccf`. They use `fscale` to group-scale panel data by the panel-id provided, and then compute the covariance of a sequence of panel-lags (generated with `flag` discussed below) with the group-scaled level-series, dividing by the variance of the group-scaled level series. The Partial-ACF is generated from the ACF using a Yule-Walker decomposition (as in `stats::pacf`). -```{r, eval=NCRAN} + +```r # Panel-ACF of GDP per Capita psacf(wlddev, PCGDP ~ iso3c, ~year) +``` + +
+plot of chunk PSACF +

plot of chunk PSACF

+
+ +```r # Panel-Partial-ACF of GDP per Capia pspacf(wlddev, PCGDP ~ iso3c, ~year) +``` + +
+plot of chunk PSACF +

plot of chunk PSACF

+
+ +```r # Panel- Cross-Correlation function of GDP per Capia and Life-Expectancy wlddev %$% psccf(PCGDP, LIFEEX, iso3c, year) +``` + +
+plot of chunk PSACF +

plot of chunk PSACF

+
+ +```r # Multivariate Panel-auto and cross-correlation function of 3 variables: psacf(wlddev, PCGDP + LIFEEX + ODA ~ iso3c, ~year) ``` +
+plot of chunk PSACF +

plot of chunk PSACF

+
+ ### 7.3 Fast Lags and Leads `flag` and the corresponding lag- and lead- operators `L` and `F` are S3 generics to efficiently compute lags and leads on time series and panel data. The code below shows how to compute simple lags and leads on the classic Box & Jenkins airline data that comes with R. -```{r, eval=NCRAN} + +```r # 1 lag L(AirPassengers) +# Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +# 1949 NA 112 118 132 129 121 135 148 148 136 119 104 +# 1950 118 115 126 141 135 125 149 170 170 158 133 114 +# 1951 140 145 150 178 163 172 178 199 199 184 162 146 +# 1952 166 171 180 193 181 183 218 230 242 209 191 172 +# 1953 194 196 196 236 235 229 243 264 272 237 211 180 +# 1954 201 204 188 235 227 234 264 302 293 259 229 203 +# 1955 229 242 233 267 269 270 315 364 347 312 274 237 +# 1956 278 284 277 317 313 318 374 413 405 355 306 271 +# 1957 306 315 301 356 348 355 422 465 467 404 347 305 +# 1958 336 340 318 362 348 363 435 491 505 404 359 310 +# 1959 337 360 342 406 396 420 472 548 559 463 407 362 +# 1960 405 417 391 419 461 472 535 622 606 508 461 390 # 3 identical ways of computing 1 lag all_identical(flag(AirPassengers), L(AirPassengers), F(AirPassengers,-1)) +# [1] TRUE # 1 lead and 3 lags - output as matrix L(AirPassengers, -1:3) %>% head +# F1 -- L1 L2 L3 +# [1,] 118 112 NA NA NA +# [2,] 132 118 112 NA NA +# [3,] 129 132 118 112 NA +# [4,] 121 129 132 118 112 +# [5,] 135 121 129 132 118 +# [6,] 148 135 121 129 132 # ... this is still a time series object: attributes(L(AirPassengers, -1:3)) +# $tsp +# [1] 1949.000 1960.917 12.000 +# +# $class +# [1] "ts" "matrix" +# +# $dim +# [1] 144 5 +# +# $dimnames +# $dimnames[[1]] +# NULL +# +# $dimnames[[2]] +# [1] "F1" "--" "L1" "L2" "L3" ``` `flag / L / F` also work well on (time series) matrices. Below a regression with daily closing prices of major European stock indices is run: Germany DAX (Ibis), Switzerland SMI, France CAC, and UK FTSE. The data are sampled in business time, i.e. weekends and holidays are omitted. -```{r, eval=NCRAN} + +```r str(EuStockMarkets) +# Time-Series [1:1860, 1:4] from 1991 to 1999: 1629 1614 1607 1621 1618 ... +# - attr(*, "dimnames")=List of 2 +# ..$ : NULL +# ..$ : chr [1:4] "DAX" "SMI" "CAC" "FTSE" # Data is recorded on 260 days per year, 1991-1999 tsp(EuStockMarkets) +# [1] 1991.496 1998.646 260.000 freq <- frequency(EuStockMarkets) # There is some obvious seasonality stl(EuStockMarkets[, "DAX"], freq) %>% plot +``` + +
+plot of chunk mts +

plot of chunk mts

+
+ +```r # 1 annual lead and 1 annual lag L(EuStockMarkets, -1:1*freq) %>% head +# F260.DAX DAX L260.DAX F260.SMI SMI L260.SMI F260.CAC CAC L260.CAC F260.FTSE FTSE +# [1,] 1755.98 1628.75 NA 1846.6 1678.1 NA 1907.3 1772.8 NA 2515.8 2443.6 +# [2,] 1754.95 1613.63 NA 1854.8 1688.5 NA 1900.6 1750.5 NA 2521.2 2460.2 +# [3,] 1759.90 1606.51 NA 1845.3 1678.6 NA 1880.9 1718.0 NA 2493.9 2448.2 +# [4,] 1759.84 1621.04 NA 1854.5 1684.1 NA 1873.5 1708.1 NA 2476.1 2470.4 +# [5,] 1776.50 1618.16 NA 1870.5 1686.6 NA 1883.6 1723.1 NA 2497.1 2484.7 +# [6,] 1769.98 1610.61 NA 1862.6 1671.6 NA 1868.5 1714.3 NA 2469.0 2466.8 +# L260.FTSE +# [1,] NA +# [2,] NA +# [3,] NA +# [4,] NA +# [5,] NA +# [6,] NA # DAX regressed on it's own 2 annual lags and the lags of the other indicators lm(DAX ~., data = L(EuStockMarkets, 0:2*freq)) %>% summary +# +# Call: +# lm(formula = DAX ~ ., data = L(EuStockMarkets, 0:2 * freq)) +# +# Residuals: +# Min 1Q Median 3Q Max +# -240.46 -51.28 -12.01 45.19 358.02 +# +# Coefficients: +# Estimate Std. Error t value Pr(>|t|) +# (Intercept) -564.02041 93.94903 -6.003 2.49e-09 *** +# L260.DAX -0.12577 0.03002 -4.189 2.99e-05 *** +# L520.DAX -0.12528 0.04103 -3.053 0.00231 ** +# SMI 0.32601 0.01726 18.890 < 2e-16 *** +# L260.SMI 0.27499 0.02517 10.926 < 2e-16 *** +# L520.SMI 0.04602 0.02602 1.769 0.07721 . +# CAC 0.59637 0.02349 25.389 < 2e-16 *** +# L260.CAC -0.14283 0.02763 -5.169 2.72e-07 *** +# L520.CAC 0.05196 0.03657 1.421 0.15557 +# FTSE 0.01002 0.02403 0.417 0.67675 +# L260.FTSE 0.04509 0.02807 1.606 0.10843 +# L520.FTSE 0.10601 0.02717 3.902 0.00010 *** +# --- +# Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 +# +# Residual standard error: 83.06 on 1328 degrees of freedom +# (520 observations deleted due to missingness) +# Multiple R-squared: 0.9943, Adjusted R-squared: 0.9942 +# F-statistic: 2.092e+04 on 11 and 1328 DF, p-value: < 2.2e-16 ``` Since v1.5.0, irregular time series are supported: -```{r, eval=NCRAN} + +```r t <- seq_row(EuStockMarkets)[-4L] flag(EuStockMarkets[-4L, ], -1:1, t = t) %>% head +# F1.DAX DAX L1.DAX F1.SMI SMI L1.SMI F1.CAC CAC L1.CAC F1.FTSE FTSE L1.FTSE +# [1,] 1613.63 1628.75 NA 1688.5 1678.1 NA 1750.5 1772.8 NA 2460.2 2443.6 NA +# [2,] 1606.51 1613.63 1628.75 1678.6 1688.5 1678.1 1718.0 1750.5 1772.8 2448.2 2460.2 2443.6 +# [3,] NA 1606.51 1613.63 NA 1678.6 1688.5 NA 1718.0 1750.5 NA 2448.2 2460.2 +# [4,] 1610.61 1618.16 NA 1671.6 1686.6 NA 1714.3 1723.1 NA 2466.8 2484.7 NA +# [5,] 1630.75 1610.61 1618.16 1682.9 1671.6 1686.6 1734.5 1714.3 1723.1 2487.9 2466.8 2484.7 +# [6,] 1640.17 1630.75 1610.61 1703.6 1682.9 1671.6 1757.4 1734.5 1714.3 2508.4 2487.9 2466.8 ``` The main innovation of `flag / L / F` is the ability to very efficiently compute sequences of lags and leads on panel data, and that this panel data need not be ordered or balanced: -```{r, message=TRUE, eval=NCRAN} + +```r # This lags all 4 series L(wlddev, 1L, ~ iso3c, ~ year, cols = 9:12) %>% head +# iso3c year L1.PCGDP L1.LIFEEX L1.GINI L1.ODA +# 1 AFG 1960 NA NA NA NA +# 2 AFG 1961 NA 32.446 NA 116769997 +# 3 AFG 1962 NA 32.962 NA 232080002 +# 4 AFG 1963 NA 33.471 NA 112839996 +# 5 AFG 1964 NA 33.971 NA 237720001 +# 6 AFG 1965 NA 34.463 NA 295920013 # Without t: Works here because data is ordered, but gives a message L(wlddev, 1L, ~ iso3c, cols = 9:12) %>% head +# iso3c L1.PCGDP L1.LIFEEX L1.GINI L1.ODA +# 1 AFG NA NA NA NA +# 2 AFG NA 32.446 NA 116769997 +# 3 AFG NA 32.962 NA 232080002 +# 4 AFG NA 33.471 NA 112839996 +# 5 AFG NA 33.971 NA 237720001 +# 6 AFG NA 34.463 NA 295920013 # 1 lead and 2 lags of Life Expectancy # after removing the 4th row, thus creating an unbalanced panel -wlddev %>% ss(-4L) %>% +wlddev %>% ss(-4L) %>% L(-1:2, LIFEEX ~ iso3c, ~year) %>% head +# iso3c year F1.LIFEEX LIFEEX L1.LIFEEX L2.LIFEEX +# 1 AFG 1960 32.962 32.446 NA NA +# 2 AFG 1961 33.471 32.962 32.446 NA +# 3 AFG 1962 NA 33.471 32.962 32.446 +# 4 AFG 1964 34.948 34.463 NA 33.471 +# 5 AFG 1965 35.430 34.948 34.463 NA +# 6 AFG 1966 35.914 35.430 34.948 34.463 ``` -Optimal performance is obtained if the panel-id is a factor, and the time variable also a factor or an integer variable. In that case an ordering vector of the data is computed directly without any prior sorting or grouping, and the data is accessed through this vector. Thus the data need not be sorted to compute a fully-identified panel-lag, which is a key advantage to, say, the `shift` function in `data.table`. +Optimal performance is obtained if the panel-id is a factor, and the time variable also a factor or an integer variable. In that case an ordering vector of the data is computed directly without any prior sorting or grouping, and the data is accessed through this vector. Thus the data need not be sorted to compute a fully-identified panel-lag, which is a key advantage to, say, the `shift` function in `data.table`. One intended area of use, especially for the operators `L` and `F`, is to substantially facilitate the implementation of dynamic models in various contexts (independent of the estimation package). Below different ways `L` can be used to estimate a dynamic panel-model using `lm` are shown: -```{r, eval=NCRAN} + +```r # Different ways of regressing GDP on it's lags and life-Expectancy and it's lags # 1 - Precomputing lags lm(PCGDP ~ ., L(wlddev, 0:2, PCGDP + LIFEEX ~ iso3c, ~ year, keep.ids = FALSE)) %>% summary +# +# Call: +# lm(formula = PCGDP ~ ., data = L(wlddev, 0:2, PCGDP + LIFEEX ~ +# iso3c, ~year, keep.ids = FALSE)) +# +# Residuals: +# Min 1Q Median 3Q Max +# -16776.5 -102.2 -17.2 91.5 12277.1 +# +# Coefficients: +# Estimate Std. Error t value Pr(>|t|) +# (Intercept) -333.93994 61.04617 -5.470 4.62e-08 *** +# L1.PCGDP 1.31959 0.01021 129.270 < 2e-16 *** +# L2.PCGDP -0.31707 0.01029 -30.815 < 2e-16 *** +# LIFEEX -17.77368 35.47772 -0.501 0.616 +# L1.LIFEEX 45.76286 65.87124 0.695 0.487 +# L2.LIFEEX -21.43005 34.98964 -0.612 0.540 +# --- +# Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 +# +# Residual standard error: 787.3 on 8609 degrees of freedom +# (4561 observations deleted due to missingness) +# Multiple R-squared: 0.9976, Adjusted R-squared: 0.9976 +# F-statistic: 7.26e+05 on 5 and 8609 DF, p-value: < 2.2e-16 # 2 - Ad-hoc computation in lm formula lm(PCGDP ~ L(PCGDP, 1:2, iso3c, year) + L(LIFEEX, 0:2, iso3c, year), wlddev) %>% summary +# +# Call: +# lm(formula = PCGDP ~ L(PCGDP, 1:2, iso3c, year) + L(LIFEEX, 0:2, +# iso3c, year), data = wlddev) +# +# Residuals: +# Min 1Q Median 3Q Max +# -16776.5 -102.2 -17.2 91.5 12277.1 +# +# Coefficients: +# Estimate Std. Error t value Pr(>|t|) +# (Intercept) -333.93994 61.04617 -5.470 4.62e-08 *** +# L(PCGDP, 1:2, iso3c, year)L1 1.31959 0.01021 129.270 < 2e-16 *** +# L(PCGDP, 1:2, iso3c, year)L2 -0.31707 0.01029 -30.815 < 2e-16 *** +# L(LIFEEX, 0:2, iso3c, year)-- -17.77368 35.47772 -0.501 0.616 +# L(LIFEEX, 0:2, iso3c, year)L1 45.76286 65.87124 0.695 0.487 +# L(LIFEEX, 0:2, iso3c, year)L2 -21.43005 34.98964 -0.612 0.540 +# --- +# Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 +# +# Residual standard error: 787.3 on 8609 degrees of freedom +# (4561 observations deleted due to missingness) +# Multiple R-squared: 0.9976, Adjusted R-squared: 0.9976 +# F-statistic: 7.26e+05 on 5 and 8609 DF, p-value: < 2.2e-16 # 3 - Precomputing panel-identifiers g = qF(wlddev$iso3c, na.exclude = FALSE) t = qF(wlddev$year, na.exclude = FALSE) lm(PCGDP ~ L(PCGDP, 1:2, g, t) + L(LIFEEX, 0:2, g, t), wlddev) %>% summary +# +# Call: +# lm(formula = PCGDP ~ L(PCGDP, 1:2, g, t) + L(LIFEEX, 0:2, g, +# t), data = wlddev) +# +# Residuals: +# Min 1Q Median 3Q Max +# -16776.5 -102.2 -17.2 91.5 12277.1 +# +# Coefficients: +# Estimate Std. Error t value Pr(>|t|) +# (Intercept) -333.93994 61.04617 -5.470 4.62e-08 *** +# L(PCGDP, 1:2, g, t)L1 1.31959 0.01021 129.270 < 2e-16 *** +# L(PCGDP, 1:2, g, t)L2 -0.31707 0.01029 -30.815 < 2e-16 *** +# L(LIFEEX, 0:2, g, t)-- -17.77368 35.47772 -0.501 0.616 +# L(LIFEEX, 0:2, g, t)L1 45.76286 65.87124 0.695 0.487 +# L(LIFEEX, 0:2, g, t)L2 -21.43005 34.98964 -0.612 0.540 +# --- +# Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 +# +# Residual standard error: 787.3 on 8609 degrees of freedom +# (4561 observations deleted due to missingness) +# Multiple R-squared: 0.9976, Adjusted R-squared: 0.9976 +# F-statistic: 7.26e+05 on 5 and 8609 DF, p-value: < 2.2e-16 ``` ### 7.4 Fast Differences and Growth Rates Similarly to `flag / L / F`, `fdiff / D / Dlog` computes sequences of suitably lagged / leaded and iterated differences, quasi-differences or (quasi-)log-differences on time series and panel data, and `fgrowth / G` computes growth rates. Using again the `Airpassengers` data, the seasonal decomposition shows significant seasonality: -```{r, eval=NCRAN} + +```r stl(AirPassengers, "periodic") %>% plot ``` + +
+plot of chunk stl +

plot of chunk stl

+
We can test the statistical significance of this seasonality by jointly testing a set of monthly dummies regressed on the differenced series. Given that the seasonal fluctuations are increasing in magnitude, using growth rates for the test seems more appropriate: -```{r, eval=NCRAN} + +```r f <- qF(cycle(AirPassengers)) fFtest(fgrowth(AirPassengers), f) +# R-Sq. DF1 DF2 F-Stat. P-value +# 0.874 11 131 82.238 0.000 ``` The test shows significant seasonality, accounting for 87% of the variation in the growth rate of the series. We can plot the series together with the ordinary, seasonal (12-month) and deseasonalized monthly growth rate using: -```{r, eval=NCRAN} -G(AirPassengers, c(0, 1, 12)) %>% cbind(W.G1 = W(G(AirPassengers), f)) %>% + +```r +G(AirPassengers, c(0, 1, 12)) %>% cbind(W.G1 = W(G(AirPassengers), f)) %>% plot(main = "Growth Rate of Airpassengers") ``` + +
+plot of chunk Gplot +

plot of chunk Gplot

+
It is evident that taking the annualized growth rate also removes the periodic behavior. We can also compute second differences or growth rates of growth rates. Below a plot of the ordinary and annual first and second differences of the data: -```{r, eval=NCRAN} + +```r D(AirPassengers, c(1,12), 1:2) %>% plot ``` + +
+plot of chunk Dplot +

plot of chunk Dplot

+
In general, both `fdiff / D` and `fgrowth / G` can compute sequences of lagged / leaded and iterated differences / growth rates. -```{r, eval=NCRAN} + +```r # sequence of leaded/lagged and iterated differences y = 1:10 D(y, -2:2, 1:3) +# F2D1 F2D2 F2D3 FD1 FD2 FD3 -- D1 D2 D3 L2D1 L2D2 L2D3 +# [1,] -2 0 0 -1 0 0 1 NA NA NA NA NA NA +# [2,] -2 0 0 -1 0 0 2 1 NA NA NA NA NA +# [3,] -2 0 0 -1 0 0 3 1 0 NA 2 NA NA +# [4,] -2 0 0 -1 0 0 4 1 0 0 2 NA NA +# [5,] -2 0 NA -1 0 0 5 1 0 0 2 0 NA +# [6,] -2 0 NA -1 0 0 6 1 0 0 2 0 NA +# [7,] -2 NA NA -1 0 0 7 1 0 0 2 0 0 +# [8,] -2 NA NA -1 0 NA 8 1 0 0 2 0 0 +# [9,] NA NA NA -1 NA NA 9 1 0 0 2 0 0 +# [10,] NA NA NA NA NA NA 10 1 0 0 2 0 0 ``` All of this also works for panel data. The code below gives an example: -```{r, eval=NCRAN} + +```r g = rep(1:2, each = 5) t = rep(1:5, 2) D(y, -2:2, 1:2, g, t) +# F2D1 F2D2 FD1 FD2 -- D1 D2 L2D1 L2D2 +# [1,] -2 0 -1 0 1 NA NA NA NA +# [2,] -2 NA -1 0 2 1 NA NA NA +# [3,] -2 NA -1 0 3 1 0 2 NA +# [4,] NA NA -1 NA 4 1 0 2 NA +# [5,] NA NA NA NA 5 1 0 2 0 +# [6,] -2 0 -1 0 6 NA NA NA NA +# [7,] -2 NA -1 0 7 1 NA NA NA +# [8,] -2 NA -1 0 8 1 0 2 NA +# [9,] NA NA -1 NA 9 1 0 2 NA +# [10,] NA NA NA NA 10 1 0 2 0 ``` Calls to `flag / L / F`, `fdiff / D` and `fgrowth / G` can be nested. In the example below, `L.matrix` is called on the right-half ob the above sequence: -```{r, eval=NCRAN} + +```r L(D(y, 0:2, 1:2, g, t), 0:1, g, t) +# -- L1.-- D1 L1.D1 D2 L1.D2 L2D1 L1.L2D1 L2D2 L1.L2D2 +# [1,] 1 NA NA NA NA NA NA NA NA NA +# [2,] 2 1 1 NA NA NA NA NA NA NA +# [3,] 3 2 1 1 0 NA 2 NA NA NA +# [4,] 4 3 1 1 0 0 2 2 NA NA +# [5,] 5 4 1 1 0 0 2 2 0 NA +# [6,] 6 NA NA NA NA NA NA NA NA NA +# [7,] 7 6 1 NA NA NA NA NA NA NA +# [8,] 8 7 1 1 0 NA 2 NA NA NA +# [9,] 9 8 1 1 0 0 2 2 NA NA +# [10,] 10 9 1 1 0 0 2 2 0 NA ``` @@ -1523,8 +3540,16 @@ L(D(y, 0:2, 1:2, g, t), 0:1, g, t) `fdiff / D` and `fgrowth / G` also come with a data frame method, making the computation of growth-variables on datasets very easy: -```{r, eval=NCRAN} + +```r G(GGDC10S, 1L, 1L, ~ Variable + Country, ~ Year, cols = 6:10) %>% head +# Variable Country Year G1.AGR G1.MIN G1.MAN G1.PU G1.CON +# 1 VA BWA 1960 NA NA NA NA NA +# 2 VA BWA 1961 NA NA NA NA NA +# 3 VA BWA 1962 NA NA NA NA NA +# 4 VA BWA 1963 NA NA NA NA NA +# 5 VA BWA 1964 NA NA NA NA NA +# 6 VA BWA 1965 -3.524492 -28.57143 38.23529 29.41176 103.9604 ``` @@ -1535,15 +3560,60 @@ G(GGDC10S, 1L, 1L, ~ Variable + Country, ~ Year, cols = 6:10) %>% head The code below estimates a dynamic panel model regressing the 10-year growth rate of GDP per capita on it's 10-year lagged level and the 10-year growth rate of life-expectancy: -```{r, eval=NCRAN} + +```r summary(lm(G(PCGDP,10,1,iso3c,year) ~ L(PCGDP,10,iso3c,year) + G(LIFEEX,10,1,iso3c,year), data = wlddev)) +# +# Call: +# lm(formula = G(PCGDP, 10, 1, iso3c, year) ~ L(PCGDP, 10, iso3c, +# year) + G(LIFEEX, 10, 1, iso3c, year), data = wlddev) +# +# Residuals: +# Min 1Q Median 3Q Max +# -104.32 -21.97 -3.96 13.26 1714.58 +# +# Coefficients: +# Estimate Std. Error t value Pr(>|t|) +# (Intercept) 2.740e+01 1.089e+00 25.168 < 2e-16 *** +# L(PCGDP, 10, iso3c, year) -3.337e-04 4.756e-05 -7.016 2.49e-12 *** +# G(LIFEEX, 10, 1, iso3c, year) 4.617e-01 1.124e-01 4.107 4.05e-05 *** +# --- +# Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 +# +# Residual standard error: 58.43 on 7113 degrees of freedom +# (6060 observations deleted due to missingness) +# Multiple R-squared: 0.01132, Adjusted R-squared: 0.01104 +# F-statistic: 40.73 on 2 and 7113 DF, p-value: < 2.2e-16 ``` To go a step further, the code below regresses the 10-year growth rate of GDP on the 10-year lagged levels and 10-year growth rates of GDP and life expectancy, with country and time-fixed effects projected out using `HDW`. The standard errors are unreliable without bootstrapping, but this example nicely demonstrates the potential for complex estimations brought by *collapse*. -```{r, eval=NCRAN} + +```r moddat <- HDW(L(G(wlddev, c(0, 10), 1, ~iso3c, ~year, 9:10), c(0, 10), ~iso3c, ~year), ~iso3c + qF(year))[-c(1,5)] summary(lm(HDW.L10G1.PCGDP ~. , moddat)) +# +# Call: +# lm(formula = HDW.L10G1.PCGDP ~ ., data = moddat) +# +# Residuals: +# Min 1Q Median 3Q Max +# -807.68 -10.80 -0.64 10.23 779.99 +# +# Coefficients: +# Estimate Std. Error t value Pr(>|t|) +# (Intercept) 1.907e-15 4.930e-01 0.000 1.000000 +# HDW.L10.PCGDP -2.500e-03 1.292e-04 -19.347 < 2e-16 *** +# HDW.L10.L10G1.PCGDP -5.885e-01 1.082e-02 -54.412 < 2e-16 *** +# HDW.L10.LIFEEX 1.056e+00 2.885e-01 3.661 0.000254 *** +# HDW.L10G1.LIFEEX 6.927e-01 1.154e-01 6.002 2.08e-09 *** +# HDW.L10.L10G1.LIFEEX 8.749e-01 1.108e-01 7.899 3.39e-15 *** +# --- +# Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 +# +# Residual standard error: 35.69 on 5235 degrees of freedom +# Multiple R-squared: 0.4029, Adjusted R-squared: 0.4023 +# F-statistic: 706.4 on 5 and 5235 DF, p-value: < 2.2e-16 ``` @@ -1552,15 +3622,39 @@ summary(lm(HDW.L10G1.PCGDP ~. , moddat)) One of the inconveniences of the above computations is that it requires declaring the panel-identifiers `iso3c` and `year` again and again for each function. A great remedy here are the *plm* classes *pseries* and *pdata.frame* which *collapse* was built to support. This shows how one could run the same regression with plm: -```{r, eval=NCRAN} + +```r pwlddev <- plm::pdata.frame(wlddev, index = c("iso3c", "year")) moddat <- HDW(L(G(pwlddev, c(0, 10), 1, 9:10), c(0, 10)))[-c(1,5)] summary(lm(HDW.L10G1.PCGDP ~. , moddat)) +# +# Call: +# lm(formula = HDW.L10G1.PCGDP ~ ., data = moddat) +# +# Residuals: +# Min 1Q Median 3Q Max +# -677.61 -12.45 -1.02 10.86 913.22 +# +# Coefficients: +# Estimate Std. Error t value Pr(>|t|) +# (Intercept) 0.1456192 0.5187976 0.281 0.778962 +# HDW.L10.PCGDP -0.0022910 0.0001253 -18.291 < 2e-16 *** +# HDW.L10.L10G1.PCGDP -0.5859896 0.0113538 -51.612 < 2e-16 *** +# HDW.L10.LIFEEX 0.8701877 0.2456255 3.543 0.000399 *** +# HDW.L10G1.LIFEEX 0.6910533 0.1132028 6.105 1.11e-09 *** +# HDW.L10.L10G1.LIFEEX 0.8990853 0.1068241 8.417 < 2e-16 *** +# --- +# Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 +# +# Residual standard error: 37.51 on 5235 degrees of freedom +# (7935 observations deleted due to missingness) +# Multiple R-squared: 0.3784, Adjusted R-squared: 0.3778 +# F-statistic: 637.4 on 5 and 5235 DF, p-value: < 2.2e-16 ``` To learn more about the integration of *collapse* and *plm*, consult the corresponding vignette. ## 8. List Processing and a Panel-VAR Example -*collapse* also provides an ensemble of list-processing functions that grew out of a necessity of working with complex nested lists of data objects. The example provided in this section is also somewhat complex, but it demonstrates the utility of these functions while also providing a nice data-transformation task. +*collapse* also provides an ensemble of list-processing functions that grew out of a necessity of working with complex nested lists of data objects. The example provided in this section is also somewhat complex, but it demonstrates the utility of these functions while also providing a nice data-transformation task. When summarizing the `GGDC10S` data in section 1, it was evident that certain sectors have a high share of economic activity in almost all countries in the sample. This prompts the question of whether there exist common patterns in the interaction of these important sectors across countries. One way to empirically study this could be through a (Structural) Panel-Vector-Autoregression (PSVAR) in value added with the 6 most important sectors (excluding government): Agriculture, manufacturing, wholesale and retail trade, construction, transport and storage and finance and real estate. @@ -1592,37 +3686,56 @@ For this we will use the *vars* package^[I noticed there is a *panelvar* package -```{r, warning=FALSE, message=FALSE, eval=NCRAN} + +```r library(vars) # The 6 most important non-government sectors (see section 1) sec <- c("AGR", "MAN", "WRT", "CON", "TRA", "FIRE") # This creates a data.frame containing the value added of the 6 most important non-government sectors -data <- fsubset(GGDC10S, Variable == "VA", c("Country", "Year", sec)) %>% +data <- fsubset(GGDC10S, Variable == "VA", c("Country", "Year", sec)) %>% na_omit(cols = sec) # Let's look at the log VA in agriculture across countries: AGRmat <- psmat(data, AGR ~ Country, ~ Year, transpose = TRUE) %>% log # Converting to panel series matrix plot(AGRmat) ``` + +
+plot of chunk AGRmat +

plot of chunk AGRmat

+
The plot shows quite some heterogeneity both in the levels (VA is in local currency) and in trend growth rates. In the panel-VAR estimation we are only really interested in the sectoral relationships within countries. Thus we need to harmonize this sectoral data further. One way would be taking growth rates or log-differences of the data, but VAR's are usually estimated in levels unless the data are cointegrated (and value added series do not, in general, exhibit unit-root behavior). Thus to harmonize the data further we opt for subtracting a country-sector specific cubic trend from the data in logs: -```{r, eval=NCRAN} + +```r # Subtracting a country specific cubic growth trend AGRmat <- dapply(AGRmat, fhdwithin, poly(seq_row(AGRmat), 3), fill = TRUE) plot(AGRmat) ``` + +
+plot of chunk AGRmatplot +

plot of chunk AGRmatplot

+
This seems to have done a decent job in curbing most of the heterogeneity. Some series however have a high variance around that cubic trend. Therefore a final step is to standardize the data to bring the variances in line: -```{r, eval=NCRAN} + +```r # Standardizing the cubic log-detrended data AGRmat <- fscale(AGRmat) plot(AGRmat) ``` +
+plot of chunk AGRmatplot2 +

plot of chunk AGRmatplot2

+
+ Now this looks pretty good, and is about the most we can do in terms of harmonization without differencing the data. The code below applies these transformations to all sectors: -```{r, fig.height=7, eval=NCRAN} + +```r # Taking logs settransformv(data, 3:8, log) # Projecting out country FE and cubic trends from complete cases @@ -1634,14 +3747,34 @@ gv(data, 3:8) <- STD(data, ~ Country, cols = 3:8, keep.by = FALSE) psmat(data, ~ Country, ~ Year) %>% plot ``` +
+plot of chunk psmatplot2 +

plot of chunk psmatplot2

+
+ Since the data is annual, let us estimate the Panel-VAR with one lag: -```{r, eval=NCRAN} + +```r # This adds one lag of all series to the data add_vars(data) <- L(data, 1, ~ Country, ~ Year, keep.ids = FALSE) # This removes missing values from all but the first row and drops identifier columns (vars is made for time series without gaps) data <- rbind(ss(data, 1, -(1:2)), na_omit(ss(data, -1, -(1:2)))) head(data) +# STD.HDW.AGR STD.HDW.MAN STD.HDW.WRT STD.HDW.CON STD.HDW.TRA STD.HDW.FIRE L1.STD.HDW.AGR +# 1 0.65713943 2.2350584 1.946383 -0.03574399 1.0877811 1.0476507 NA +# 2 -0.14377115 1.8693570 1.905081 1.23225734 1.0542315 0.9105622 0.65713943 +# 3 -0.09209878 -0.8212004 1.997253 -0.01783824 0.6718465 0.6134260 -0.14377115 +# 4 -0.25213869 -1.7830320 -1.970855 -2.68332505 -1.8475551 0.4382902 -0.09209878 +# 5 -0.31623401 -4.2931567 -1.822211 -2.75551916 -0.7066491 -2.1982640 -0.25213869 +# 6 -0.72691916 -1.3219387 -2.079333 -0.12148295 -1.1398220 -2.2230474 -0.31623401 +# L1.STD.HDW.MAN L1.STD.HDW.WRT L1.STD.HDW.CON L1.STD.HDW.TRA L1.STD.HDW.FIRE +# 1 NA NA NA NA NA +# 2 2.2350584 1.946383 -0.03574399 1.0877811 1.0476507 +# 3 1.8693570 1.905081 1.23225734 1.0542315 0.9105622 +# 4 -0.8212004 1.997253 -0.01783824 0.6718465 0.6134260 +# 5 -1.7830320 -1.970855 -2.68332505 -1.8475551 0.4382902 +# 6 -4.2931567 -1.822211 -2.75551916 -0.7066491 -2.1982640 ``` @@ -1661,7 +3794,8 @@ Having prepared the data, the code below estimates the panel-VAR using `lm` and -```{r, eval=NCRAN} + +```r # saving the names of the 6 sectors nam <- names(data)[1:6] @@ -1681,10 +3815,16 @@ pVAR <- list(varresult = setNames(lapply(seq_len(6), function(i) # list of 6 class(pVAR) <- "varest" ``` The significant serial-correlation test below suggests that the panel-VAR with one lag is ill-identified, but the sample size is also quite large so the test is prone to reject, and the test is likely also still picking up remaining cross-sectional heterogeneity. For the purposes of this vignette this shall not bother us. -```{r, eval=NCRAN} + +```r serial.test(pVAR) +# +# Portmanteau Test (asymptotic) +# +# data: Residuals of VAR object pVAR +# Chi-squared = 1680.8, df = 540, p-value < 2.2e-16 ``` - By default the VAR is identified using a Choleski ordering of the direct impact matrix in which the first variable (here Agriculture) is assumed to not be directly impacted by any other sector in the current period, and this descends down to the last variable (Finance and Real Estate), which is assumed to be impacted by all other sectors in the current period. For structural identification it is usually necessary to impose restrictions on the direct impact matrix in line with economic theory. It is difficult to conceive theories on the average worldwide interaction of broad economic sectors, but to aid identification we will compute the correlation matrix in growth rates and restrict the lowest coefficients to be 0, which should be better than just imposing a random Choleski ordering. + By default the VAR is identified using a Choleski ordering of the direct impact matrix in which the first variable (here Agriculture) is assumed to not be directly impacted by any other sector in the current period, and this descends down to the last variable (Finance and Real Estate), which is assumed to be impacted by all other sectors in the current period. For structural identification it is usually necessary to impose restrictions on the direct impact matrix in line with economic theory. It is difficult to conceive theories on the average worldwide interaction of broad economic sectors, but to aid identification we will compute the correlation matrix in growth rates and restrict the lowest coefficients to be 0, which should be better than just imposing a random Choleski ordering. @@ -1714,7 +3854,8 @@ serial.test(pVAR) -```{r, eval=NCRAN} + +```r # This computes the pairwise correlations between standardized sectoral growth rates across countries corr <- fsubset(GGDC10S, Variable == "VA") %>% # Subset rows: Only VA fgroup_by(Country) %>% # Group by country @@ -1724,10 +3865,24 @@ corr <- fsubset(GGDC10S, Variable == "VA") %>% # Subset rows: Only VA pwcor # Compute Pairwise correlations corr +# AGR MAN WRT CON TRA FIRE +# AGR 1 .55 .59 .39 .52 .41 +# MAN .55 1 .67 .54 .65 .48 +# WRT .59 .67 1 .56 .66 .52 +# CON .39 .54 .56 1 .53 .46 +# TRA .52 .65 .66 .53 1 .51 +# FIRE .41 .48 .52 .46 .51 1 # We need to impose K*(K-1)/2 = 15 (with K = 6 variables) restrictions for identification corr[corr <= sort(corr)[15]] <- 0 corr +# AGR MAN WRT CON TRA FIRE +# AGR 1 .55 .59 .00 .00 .00 +# MAN .55 1 .67 .54 .65 .00 +# WRT .59 .67 1 .56 .66 .00 +# CON .00 .54 .56 1 .00 .00 +# TRA .00 .65 .66 .00 1 .00 +# FIRE .00 .00 .00 .00 .00 1 # The rest is unknown (i.e. will be estimated) corr[corr > 0 & corr < 1] <- NA @@ -1740,85 +3895,233 @@ diag(Bmat) <- NA # This estimates the Panel-SVAR using Maximum Likelihood: pSVAR <- SVAR(pVAR, Amat = unclass(corr), Bmat = Bmat, estmethod = "direct") pSVAR +# +# SVAR Estimation Results: +# ======================== +# +# +# Estimated A matrix: +# STD.HDW.AGR STD.HDW.MAN STD.HDW.WRT STD.HDW.CON STD.HDW.TRA STD.HDW.FIRE +# STD.HDW.AGR 1.0000 -0.59223 0.51301 0.0000 0.00000 0 +# STD.HDW.MAN -0.2547 1.00000 -0.07819 -0.1711 0.14207 0 +# STD.HDW.WRT -0.3924 -0.56875 1.00000 -0.0135 -0.01391 0 +# STD.HDW.CON 0.0000 0.02595 -0.18541 1.0000 0.00000 0 +# STD.HDW.TRA 0.0000 -0.03321 -0.05370 0.0000 1.00000 0 +# STD.HDW.FIRE 0.0000 0.00000 0.00000 0.0000 0.00000 1 +# +# Estimated B matrix: +# STD.HDW.AGR STD.HDW.MAN STD.HDW.WRT STD.HDW.CON STD.HDW.TRA STD.HDW.FIRE +# STD.HDW.AGR 0.678 0.0000 0.0000 0.0000 0.0000 0.0000 +# STD.HDW.MAN 0.000 0.6248 0.0000 0.0000 0.0000 0.0000 +# STD.HDW.WRT 0.000 0.0000 0.4155 0.0000 0.0000 0.0000 +# STD.HDW.CON 0.000 0.0000 0.0000 0.5028 0.0000 0.0000 +# STD.HDW.TRA 0.000 0.0000 0.0000 0.0000 0.5593 0.0000 +# STD.HDW.FIRE 0.000 0.0000 0.0000 0.0000 0.0000 0.6475 ``` Now this object is quite involved, which brings us to the actual subject of this section: -```{r, eval=NCRAN} + +```r # psVAR$var$varresult is a list containing the 6 linear models fitted above, it is not displayed in full here. str(pSVAR, give.attr = FALSE, max.level = 3) +# List of 13 +# $ A : num [1:6, 1:6] 1 -0.255 -0.392 0 0 ... +# $ Ase : num [1:6, 1:6] 0 0 0 0 0 0 0 0 0 0 ... +# $ B : num [1:6, 1:6] 0.678 0 0 0 0 ... +# $ Bse : num [1:6, 1:6] 0 0 0 0 0 0 0 0 0 0 ... +# $ LRIM : NULL +# $ Sigma.U: num [1:6, 1:6] 43.898 24.88 23.941 4.873 0.661 ... +# $ LR :List of 5 +# ..$ statistic: Named num 1130 +# ..$ parameter: Named num 1 +# ..$ p.value : Named num 0 +# ..$ method : chr "LR overidentification" +# ..$ data.name: symbol data +# $ opt :List of 5 +# ..$ par : num [1:20] -0.2547 -0.3924 -0.5922 -0.5688 0.0259 ... +# ..$ value : num 10924 +# ..$ counts : Named int [1:2] 501 NA +# ..$ convergence: int 1 +# ..$ message : NULL +# $ start : num [1:20] 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 ... +# $ type : chr "AB-model" +# $ var :List of 10 +# ..$ varresult :List of 6 +# .. ..$ STD.HDW.AGR :List of 13 +# .. ..$ STD.HDW.MAN :List of 13 +# .. ..$ STD.HDW.WRT :List of 13 +# .. ..$ STD.HDW.CON :List of 13 +# .. ..$ STD.HDW.TRA :List of 13 +# .. ..$ STD.HDW.FIRE:List of 13 +# ..$ datamat :'data.frame': 2060 obs. of 12 variables: +# .. ..$ STD.HDW.AGR : num [1:2060] -0.1438 -0.0921 -0.2521 -0.3162 -0.7269 ... +# .. ..$ STD.HDW.MAN : num [1:2060] 1.869 -0.821 -1.783 -4.293 -1.322 ... +# .. ..$ STD.HDW.WRT : num [1:2060] 1.91 2 -1.97 -1.82 -2.08 ... +# .. ..$ STD.HDW.CON : num [1:2060] 1.2323 -0.0178 -2.6833 -2.7555 -0.1215 ... +# .. ..$ STD.HDW.TRA : num [1:2060] 1.054 0.672 -1.848 -0.707 -1.14 ... +# .. ..$ STD.HDW.FIRE : num [1:2060] 0.911 0.613 0.438 -2.198 -2.223 ... +# .. ..$ L1.STD.HDW.AGR : num [1:2060] 0.6571 -0.1438 -0.0921 -0.2521 -0.3162 ... +# .. ..$ L1.STD.HDW.MAN : num [1:2060] 2.235 1.869 -0.821 -1.783 -4.293 ... +# .. ..$ L1.STD.HDW.WRT : num [1:2060] 1.95 1.91 2 -1.97 -1.82 ... +# .. ..$ L1.STD.HDW.CON : num [1:2060] -0.0357 1.2323 -0.0178 -2.6833 -2.7555 ... +# .. ..$ L1.STD.HDW.TRA : num [1:2060] 1.088 1.054 0.672 -1.848 -0.707 ... +# .. ..$ L1.STD.HDW.FIRE: num [1:2060] 1.048 0.911 0.613 0.438 -2.198 ... +# ..$ y : num [1:2061, 1:6] 0.6571 -0.1438 -0.0921 -0.2521 -0.3162 ... +# ..$ type : chr "none" +# ..$ p : num 1 +# ..$ K : num 6 +# ..$ obs : num 2060 +# ..$ totobs : int 2061 +# ..$ restrictions: NULL +# ..$ call : language VAR(y = data) +# $ iter : Named int 501 +# $ call : language SVAR(x = pVAR, estmethod = "direct", Amat = unclass(corr), Bmat = Bmat) ``` ### 8.1 List Search and Identification When dealing with such a list-like object, we might be interested in its complexity by measuring the level of nesting. This can be done with `ldepth`: -```{r, eval=NCRAN} + +```r # The list-tree of this object has 5 levels of nesting ldepth(pSVAR) +# [1] 5 # This data has a depth of 1, thus this dataset does not contain list-columns ldepth(data) +# [1] 1 ``` Further we might be interested in knowing whether this list-object contains non-atomic elements like call, terms or formulas. The function `is.regular` in the *collapse* package checks if an object is atomic or list-like, and the recursive version `is_unlistable` checks whether all objects in a nested structure are atomic or list-like: -```{r, eval=NCRAN} + +```r # Is this object composed only of atomic elements e.g. can it be unlisted? is_unlistable(pSVAR) +# [1] FALSE ``` Evidently this object is not unlistable, from viewing its structure we know that it contains several call and terms objects. We might also want to know if this object saves some kind of residuals or fitted values. This can be done using `has_elem`, which also supports regular expression search of element names: -```{r, eval=NCRAN} + +```r # Does this object contain an element with "fitted" in its name? has_elem(pSVAR, "fitted", regex = TRUE) +# [1] TRUE # Does this object contain an element with "residuals" in its name? has_elem(pSVAR, "residuals", regex = TRUE) +# [1] TRUE ``` We might also want to know whether the object contains some kind of data-matrix. This can be checked by calling: -```{r, eval=NCRAN} + +```r # Is there a matrix stored in this object? has_elem(pSVAR, is.matrix) +# [1] TRUE ``` These functions can sometimes be helpful in exploring objects. A much greater advantage of having functions to search and check lists is the ability to write more complex programs with them (which will not be demonstrated here). ### 8.2 List Subsetting Having gathered some information about the `pSVAR` object, this section introduces several extractor functions to pull out elements from such lists: `get_elem` can be used to pull out elements from lists in a simplified format^[The *vars* package also provides convenient extractor functions for some quantities, but `get_elem` of course works in a much broader range of contexts.]. -```{r, eval=NCRAN} + +```r # This is the path to the residuals from a single equation str(pSVAR$var$varresult$STD.HDW.AGR$residuals) +# Named num [1:2060] -0.7234 -0.1962 -0.1993 0.0739 -0.1418 ... +# - attr(*, "names")= chr [1:2060] "2" "3" "4" "5" ... # get_elem gets the residuals from all 6 equations and puts them in a top-level list resid <- get_elem(pSVAR, "residuals") str(resid, give.attr = FALSE) +# List of 6 +# $ STD.HDW.AGR : Named num [1:2060] -0.7234 -0.1962 -0.1993 0.0739 -0.1418 ... +# $ STD.HDW.MAN : Named num [1:2060] 0.363 -1.989 -1.167 -3.082 1.474 ... +# $ STD.HDW.WRT : Named num [1:2060] 0.37 0.628 -3.054 -0.406 -0.384 ... +# $ STD.HDW.CON : Named num [1:2060] 1.035 -1.093 -2.62 -0.611 2.307 ... +# $ STD.HDW.TRA : Named num [1:2060] 0.1481 -0.2599 -2.2361 0.8619 -0.0915 ... +# $ STD.HDW.FIRE: Named num [1:2060] -0.11396 -0.33092 0.11754 -2.10521 -0.00968 ... # Quick conversion to matrix and plotting qM(resid) %>% plot.ts(main = "Panel-VAR Residuals") ``` + +
+plot of chunk PVARplot +

plot of chunk PVARplot

+
Similarly, we could pull out and plot the fitted values: -```{r, eval=NCRAN} + +```r # Regular expression search and retrieval of fitted values -get_elem(pSVAR, "^fi", regex = TRUE) %>% qM %>% +get_elem(pSVAR, "^fi", regex = TRUE) %>% qM %>% plot.ts(main = "Panel-VAR Fitted Values") ``` + +
+plot of chunk PVARfittedplot +

plot of chunk PVARfittedplot

+
Below the main quantities of interest in SVAR analysis are computed: The impulse response functions (IRF's) and forecast error variance decompositions (FEVD's): -```{r, eval=NCRAN} + +```r # This computes orthogonalized impulse response functions pIRF <- irf(pSVAR) # This computes the forecast error variance decompositions pFEVD <- fevd(pSVAR) ``` The `pIRF` object contains the IRF's with lower and upper confidence bounds and some atomic elements providing information about the object: -```{r, eval=NCRAN} + +```r # See the structure of a vars IRF object: str(pIRF, give.attr = FALSE) +# List of 11 +# $ irf :List of 6 +# ..$ STD.HDW.AGR : num [1:11, 1:6] 0.611 0.399 0.268 0.185 0.132 ... +# ..$ STD.HDW.MAN : num [1:11, 1:6] 0.1774 0.1549 0.134 0.1142 0.0959 ... +# ..$ STD.HDW.WRT : num [1:11, 1:6] -0.1807 -0.1071 -0.0647 -0.0402 -0.0259 ... +# ..$ STD.HDW.CON : num [1:11, 1:6] 0.0215 0.0383 0.0442 0.0438 0.0403 ... +# ..$ STD.HDW.TRA : num [1:11, 1:6] -0.02595 -0.01257 -0.00721 -0.00511 -0.00421 ... +# ..$ STD.HDW.FIRE: num [1:11, 1:6] 0 0.0122 0.0147 0.0132 0.0104 ... +# $ Lower :List of 6 +# ..$ STD.HDW.AGR : num [1:11, 1:6] 0.1137 -0.0144 -0.0393 -0.0446 -0.0439 ... +# ..$ STD.HDW.MAN : num [1:11, 1:6] -0.6474 -0.3434 -0.2069 -0.125 -0.0734 ... +# ..$ STD.HDW.WRT : num [1:11, 1:6] -0.659 -0.427 -0.311 -0.236 -0.189 ... +# ..$ STD.HDW.CON : num [1:11, 1:6] -0.721 -0.417 -0.258 -0.183 -0.123 ... +# ..$ STD.HDW.TRA : num [1:11, 1:6] -0.4161 -0.2568 -0.169 -0.1231 -0.0894 ... +# ..$ STD.HDW.FIRE: num [1:11, 1:6] 0 -0.0157 -0.022 -0.0227 -0.0211 ... +# $ Upper :List of 6 +# ..$ STD.HDW.AGR : num [1:11, 1:6] 1.218 0.801 0.565 0.389 0.275 ... +# ..$ STD.HDW.MAN : num [1:11, 1:6] 0.906 0.601 0.439 0.328 0.239 ... +# ..$ STD.HDW.WRT : num [1:11, 1:6] 0.846 0.601 0.428 0.319 0.239 ... +# ..$ STD.HDW.CON : num [1:11, 1:6] 0.716 0.514 0.4 0.305 0.234 ... +# ..$ STD.HDW.TRA : num [1:11, 1:6] 0.2866 0.21 0.1591 0.1207 0.0899 ... +# ..$ STD.HDW.FIRE: num [1:11, 1:6] 0 0.0363 0.0471 0.0461 0.0405 ... +# $ response : chr [1:6] "STD.HDW.AGR" "STD.HDW.MAN" "STD.HDW.WRT" "STD.HDW.CON" ... +# $ impulse : chr [1:6] "STD.HDW.AGR" "STD.HDW.MAN" "STD.HDW.WRT" "STD.HDW.CON" ... +# $ ortho : logi TRUE +# $ cumulative: logi FALSE +# $ runs : num 100 +# $ ci : num 0.05 +# $ boot : logi TRUE +# $ model : chr "svarest" ``` We could separately access the top-level atomic or list elements using `atomic_elem` or `list_elem`: -```{r, eval=NCRAN} + +```r # Pool-out top-level atomic elements in the list str(atomic_elem(pIRF)) +# List of 8 +# $ response : chr [1:6] "STD.HDW.AGR" "STD.HDW.MAN" "STD.HDW.WRT" "STD.HDW.CON" ... +# $ impulse : chr [1:6] "STD.HDW.AGR" "STD.HDW.MAN" "STD.HDW.WRT" "STD.HDW.CON" ... +# $ ortho : logi TRUE +# $ cumulative: logi FALSE +# $ runs : num 100 +# $ ci : num 0.05 +# $ boot : logi TRUE +# $ model : chr "svarest" ``` There are also recursive versions of `atomic_elem` and `list_elem` named `reg_elem` and `irreg_elem` which can be used to split nested lists into the atomic and non-atomic parts. These are not covered in this vignette. ### 8.3 Recursive Apply and Unlisting in 2D -*vars* supplies simple `plot` methods for IRF and FEVD objects using base graphics. +*vars* supplies simple `plot` methods for IRF and FEVD objects using base graphics. @@ -1826,20 +4129,41 @@ There are also recursive versions of `atomic_elem` and `list_elem` named `reg_el In this section we however want to generate nicer and more compact plots using `ggplot2`, and also compute some statistics on the IRF data. Starting with the latter, the code below sums the 10-period impulse response coefficients of each sector in response to each sectoral impulse and stores them in a data frame: -```{r, eval=NCRAN} + +```r # Computing the cumulative impact after 10 periods list_elem(pIRF) %>% # Pull out the sublist elements containing the IRF coefficients + CI's rapply2d(function(x) round(fsum(x), 2)) %>% # Recursively apply the column-sums to coefficient matrices (could also use colSums) unlist2d(c("Type", "Impulse")) # Recursively row-bind the result to a data.frame and add identifier columns +# Type Impulse STD.HDW.AGR STD.HDW.MAN STD.HDW.WRT STD.HDW.CON STD.HDW.TRA STD.HDW.FIRE +# 1 irf STD.HDW.AGR 1.92 1.08 1.68 0.83 0.72 0.54 +# 2 irf STD.HDW.MAN 0.98 2.22 2.12 1.09 0.97 1.05 +# 3 irf STD.HDW.WRT -0.47 -0.27 0.65 0.17 0.03 -0.02 +# 4 irf STD.HDW.CON 0.33 0.39 0.34 2.00 0.55 0.38 +# 5 irf STD.HDW.TRA -0.07 -0.11 -0.24 -0.30 1.31 -0.20 +# 6 irf STD.HDW.FIRE 0.07 -0.07 0.02 -0.09 -0.06 1.84 +# 7 Lower STD.HDW.AGR -0.18 -2.08 -3.14 -0.68 -2.46 -0.68 +# 8 Lower STD.HDW.MAN -1.52 0.38 -1.30 -0.86 -1.82 0.12 +# 9 Lower STD.HDW.WRT -2.38 -2.65 -0.22 -2.68 -2.01 -1.20 +# 10 Lower STD.HDW.CON -2.01 -2.47 -2.16 0.53 -1.68 -0.80 +# 11 Lower STD.HDW.TRA -1.32 -1.34 -1.17 -1.64 0.31 -0.69 +# 12 Lower STD.HDW.FIRE -0.16 -0.26 -0.16 -0.27 -0.20 0.96 +# 13 Upper STD.HDW.AGR 3.97 3.18 3.21 3.69 2.61 1.58 +# 14 Upper STD.HDW.MAN 3.19 3.85 3.00 3.60 3.05 1.78 +# 15 Upper STD.HDW.WRT 3.06 2.66 4.41 2.49 3.31 1.47 +# 16 Upper STD.HDW.CON 2.85 3.30 3.20 3.88 2.59 1.76 +# 17 Upper STD.HDW.TRA 1.08 1.93 1.76 0.72 2.82 0.63 +# 18 Upper STD.HDW.FIRE 0.30 0.15 0.30 0.12 0.18 2.21 ``` The function `rapply2d` used here is very similar to `base::rapply`, with the difference that the result is not simplified / unlisted by default and that `rapply2d` will treat data frames like atomic objects and apply functions to them. `unlist2d` is an efficient generalization of `base::unlist` to 2-dimensions, or one could also think of it as a recursive generalization of `do.call(rbind, ...)`. It efficiently unlists nested lists of data objects and creates a data frame with identifier columns for each level of nesting on the left, and the content of the list in columns on the right. -The above cumulative coefficients suggest that Agriculture responds mostly to it's own shock, and a bit to shocks in Manufacturing and Wholesale and Retail Trade. Similar patters can be observed for Manufacturing and Wholesale and Retail Trade. Thus these three sectors seem to be interlinked in most countries. The remaining three sectors are mostly affected by their own dynamics, but also by Agriculture and Manufacturing. +The above cumulative coefficients suggest that Agriculture responds mostly to it's own shock, and a bit to shocks in Manufacturing and Wholesale and Retail Trade. Similar patters can be observed for Manufacturing and Wholesale and Retail Trade. Thus these three sectors seem to be interlinked in most countries. The remaining three sectors are mostly affected by their own dynamics, but also by Agriculture and Manufacturing. Let us use `ggplot2` to create nice compact plots of the IRF's and FEVD's. For this task `unlist2d` will again be extremely helpful in creating the data frame representation required. Starting with the IRF's, we will discard the upper and lower bounds and just use the impulses: -```{r, eval=NCRAN} + +```r # This binds the matrices after adding integer row-names to them to a data.table data <- pIRF$irf %>% # Get only the coefficient matrices, discard the confidence bounds @@ -1849,9 +4173,19 @@ data <- pIRF$irf %>% # Get only the coefficient matrices, d DT = TRUE) # -> Output as data.table (default is data.frame) head(data, 3) +# Impulse Time STD.HDW.AGR STD.HDW.MAN STD.HDW.WRT STD.HDW.CON STD.HDW.TRA STD.HDW.FIRE +# +# 1: STD.HDW.AGR 1 0.6113132 0.1896711 0.3488940 0.05976606 0.02503336 0.00000000 +# 2: STD.HDW.AGR 2 0.3986337 0.1892803 0.3014961 0.09430567 0.07263670 0.03669857 +# 3: STD.HDW.AGR 3 0.2676944 0.1654161 0.2491999 0.10769335 0.09330830 0.06042380 data <- melt(data, 1:2) # Using data.table's melt head(data, 3) +# Impulse Time variable value +# +# 1: STD.HDW.AGR 1 STD.HDW.AGR 0.6113132 +# 2: STD.HDW.AGR 2 STD.HDW.AGR 0.3986337 +# 3: STD.HDW.AGR 3 STD.HDW.AGR 0.2676944 # Here comes the plot: ggplot(data, aes(x = Time, y = value, color = Impulse)) + @@ -1868,13 +4202,23 @@ head(data, 3) strip.text = element_text(face = "bold", colour = "grey30"), axis.ticks = element_line(colour = "black"), panel.border = element_rect(colour = "black")) - ``` + +
+plot of chunk IRFplot +

plot of chunk IRFplot

+
To round things off, below we do the same thing for the FEVD's: -```{r, eval=NCRAN} -data <- unlist2d(pFEVD, idcols = "variable", row.names = "Time", id.factor = TRUE, DT = TRUE) %>% - melt(c("variable", "Time"), variable.name = "Sector") + +```r +data <- unlist2d(pFEVD, idcols = "variable", row.names = "Time", id.factor = TRUE, DT = TRUE) %>% + melt(c("variable", "Time"), variable.name = "Sector") head(data, 3) +# variable Time Sector value +# +# 1: STD.HDW.AGR 1 STD.HDW.AGR 0.8513029 +# 2: STD.HDW.AGR 2 STD.HDW.AGR 0.8385913 +# 3: STD.HDW.AGR 3 STD.HDW.AGR 0.8264789 # Here comes the plot: ggplot(data, aes(x = Time, y = value, fill = Sector)) + @@ -1888,9 +4232,13 @@ head(data, 3) theme(plot.title = element_text(hjust = 0.5), strip.background = element_rect(fill = "white", colour = NA), strip.text = element_text(face = "bold", colour = "grey30")) - ``` -Both the IRF's and the FEVD's show that Agriculture, Manufacturing and Wholesale and Retail Trade are broadly interlinked, even in the short-run, and that Agriculture and Manufacturing explain some of the variation in Construction, Transport and Finance at longer horizons. Of course the identification strategy used for this example was not really structural or theory based. A better strategy could be to aggregate the World Input-Output Database and use those shares for identification (which would be another very nice *collapse* exercise, but not for this vignette). + +
+plot of chunk FEVDplot +

plot of chunk FEVDplot

+
+Both the IRF's and the FEVD's show that Agriculture, Manufacturing and Wholesale and Retail Trade are broadly interlinked, even in the short-run, and that Agriculture and Manufacturing explain some of the variation in Construction, Transport and Finance at longer horizons. Of course the identification strategy used for this example was not really structural or theory based. A better strategy could be to aggregate the World Input-Output Database and use those shares for identification (which would be another very nice *collapse* exercise, but not for this vignette). @@ -1899,9 +4247,7 @@ Both the IRF's and the FEVD's show that Agriculture, Manufacturing and Wholesale ## Going Further To learn more about *collapse*, just examine the documentation `help("collapse-documentation")` which is organized, extensive and contains lots of examples. -```{r, echo=FALSE} -options(oldopts) -``` + ## References diff --git a/vignettes/collapse_intro.Rmd.orig b/vignettes/collapse_intro.Rmd.orig new file mode 100644 index 00000000..f19a4429 --- /dev/null +++ b/vignettes/collapse_intro.Rmd.orig @@ -0,0 +1,2147 @@ +--- +title: "Introduction to collapse" +subtitle: "Advanced and Fast Data Transformation in R" +author: "Sebastian Krantz" +date: "2021-06-27" +output: + rmarkdown::html_vignette: + toc: true + +vignette: > + %\VignetteIndexEntry{Introduction to collapse} + %\VignetteEngine{knitr::rmarkdown} + %\VignetteEncoding{UTF-8} +--- + +```{css, echo=FALSE} +pre { + max-height: 500px; + overflow-y: auto; +} + +pre[class] { + max-height: 500px; +} +``` + +```{r, echo=FALSE} +NCRAN <- identical(Sys.getenv("NCRAN"), "TRUE") +RUNBENCH <- NCRAN && identical(Sys.getenv("RUNBENCH"), "TRUE") + +oldopts <- options(width = 100L) +``` + + +```{r, echo = FALSE, message = FALSE, warning=FALSE, eval=NCRAN} +library(vars) +library(dplyr) # Needed because otherwise dplyr is loaded in benchmark chunk not run on CRAN !! +library(magrittr) +library(microbenchmark) # Same thing +library(collapse) +library(data.table) +B <- collapse::B # making sure it masks vars::B by loading into GE +knitr::opts_chunk$set(error = FALSE, message = FALSE, warning = FALSE, + comment = "#", tidy = FALSE, cache = TRUE, collapse = TRUE, + fig.width = 8, fig.height = 5, + out.width = '100%') + +X = mtcars[1:2] +by = mtcars$cyl + +F <- getNamespace("collapse")$F + +set.seed(101) +``` + +*collapse* is a C/C++ based package for data transformation and statistical computing in R. It's aims are: + +1. To facilitate complex data transformation, exploration and computing tasks in R. +2. To help make R code fast, flexible, parsimonious and programmer friendly. + +This vignette demonstrates these two points and introduces all main features of the package in a structured way. The chapters are pretty self-contained, however the first chapters introduce the data and faster data manipulation functions which are used throughout the rest of this vignette. + + + +*** +**Notes:** + +- Apart from this vignette, *collapse* comes with a built-in structured documentation available under `help("collapse-documentation")` after installing the package, and `help("collapse-package")` provides a compact set of examples for quick-start. A cheat sheet is available at [Rstudio](). + + +- The two other vignettes focus on the integration of *collapse* with *dplyr* workflows (recommended for *dplyr* / *tidyverse* users), and on the integration of *collapse* with the *plm* package (+ some advanced programming with panel data). + +- Documentation and vignettes can also be viewed [online](). + + + +*** + +## Why *collapse*? +*collapse* is a high-performance package that extends and enhances the data-manipulation capabilities of R and existing popular packages (such as *dplyr*, *data.table*, and matrix packages). It's main focus is on grouped and weighted statistical programming, complex aggregations and transformations, time series and panel data operations, and programming with lists of data objects. The lead author is an applied economist and created the package mainly to facilitate advanced computations on varied and complex data, in particular surveys, (multivariate) time series, multilevel / panel data, and lists / model objects. + +A secondary aspect to applied work is that data is often imported into R from richer data structures (such as STATA, SPSS or SAS files imported with *haven*). This called for an intelligent suite of data manipulation functions that can both utilize aspects of the richer data structure (such as variable labels), and preserve the data structure / attributes in computations. Sometimes specialized classes like *xts*, *pdata.frame* and *grouped_df* can also become very useful to manipulate certain types of data. Thus *collapse* was built to explicitly supports these classes, while preserving most other classes / data structures in R. + + +Another objective was to radically improve the speed of R code by extensively relying on efficient algorithms in C/C++ and the faster components of base R. *collapse* ranks among the fastest R packages, and performs many grouped and/or weighted computations noticeably faster than *dplyr* or *data.table*. + +A final development objective was to channel this performance through a stable and well conceived user API providing extensive and optimized programming capabilities (in standard evaluation) while also facilitating quick use and easy integration with existing data manipulation frameworks (in particular *dplyr* / *tidyverse* and *data.table*, both relying on non-standard evaluation). + + + + +## 1. Data and Summary Tools +We begin by introducing some powerful summary tools along with the 2 panel datasets *collapse* provides which are used throughout this vignette. If you are just interested in programming you can skip this section. Apart from the 2 datasets that come with *collapse* (`wlddev` and `GGDC10S`), this vignette uses a few well known datasets from base R: `mtcars`, `iris`, `airquality`, and the time series `Airpassengers` and `EuStockMarkets`. + +### 1.1 `wlddev` - World Bank Development Data +This dataset contains 5 key World Bank Development Indicators covering 216 countries for up to 61 years (1960-2020). It is a balanced balanced panel with $216 \times 61 = 13176$ observations. --> +```{r, eval=NCRAN} +library(collapse) +head(wlddev) + +# The variables have "label" attributes. Use vlabels() to get and set labels +namlab(wlddev, class = TRUE) +``` +Of the categorical identifiers, the date variable was artificially generated to have an example dataset that contains all common data types frequently encountered in R. A detailed statistical description of this data is computed by `descr`: + +```{r, eval=NCRAN} +# A fast and detailed statistical description +descr(wlddev) +``` + +The output of `descr` can be converted into a tidy data frame using: + +```{r, eval=NCRAN} +head(as.data.frame(descr(wlddev))) +``` +Note that `descr` does not require data to be labeled. Since `wlddev` is a panel data set tracking countries over time, we might be interested in checking which variables are time-varying, with the function `varying`: + +```{r, eval=NCRAN} +varying(wlddev, wlddev$iso3c) +``` +`varying` tells us that all 5 variables `PCGDP`, `LIFEEX`, `GINI`, `ODA` and `POP` vary over time. However the `OECD` variable does not, so this data does not track when countries entered the OECD. We can also have a more detailed look letting `varying` check the variation in each country: + +```{r, eval=NCRAN} +head(varying(wlddev, wlddev$iso3c, any_group = FALSE)) +``` + +`NA` indicates that there are no data for this country. In general data is varying if it has two or more distinct non-missing values. We could also take a closer look at observation counts and distinct values using: + +```{r, eval=NCRAN} +head(fnobs(wlddev, wlddev$iso3c)) + +head(fndistinct(wlddev, wlddev$iso3c)) +``` + +Note that `varying` is more efficient than `fndistinct`, although both functions are very fast. +Even more powerful summary methods for multilevel / panel data are provided by `qsu` (shorthand for *quick-summary*). It is modeled after *STATA*'s *summarize* and *xtsummarize* commands. Calling `qsu` on the data gives a concise summary. We can subset columns internally using the `cols` argument: + +```{r, eval=NCRAN} +qsu(wlddev, cols = 9:12, higher = TRUE) # higher adds skewness and kurtosis +``` + +We could easily compute these statistics by region: + +```{r, eval=NCRAN} +qsu(wlddev, by = ~region, cols = 9:12, vlabels = TRUE, higher = TRUE) +``` + +Computing summary statistics by country is of course also possible but would be too much information. Fortunately `qsu` lets us do something much more powerful: + +```{r, eval=NCRAN} +qsu(wlddev, pid = ~ iso3c, cols = c(1,4,9:12), vlabels = TRUE, higher = TRUE) +``` + +The above output reports 3 sets of summary statistics for each variable: Statistics computed on the *Overall* (raw) data, and on the *Between*-country (i.e. country averaged) and *Within*-country (i.e. country-demeaned) data^[in the *Within* data, the overall mean was added back after subtracting out country means, to preserve the level of the data, see also section 6.5.]. This is a powerful way to summarize panel data because aggregating the data by country gives us a cross-section of countries with no variation over time, whereas subtracting country specific means from the data eliminates all cross-sectional variation. + +So what can these statistics tell us about our data? The `N/T` columns shows that for `PCGDP` we have 8995 total observations, that we observe GDP data for 203 countries and that we have on average 44.3 observations (time-periods) per country. In contrast the GINI Index is only available for 161 countries with 8.4 observations on average. The *Overall* and *Within* mean of the data are identical by definition, and the *Between* mean would also be the same in a balanced panel with no missing observations. In practice we have unequal amounts of observations for different countries, thus countries have different weights in the *Overall* mean and the difference between *Overall* and *Between*-country mean reflects this discrepancy. The most interesting statistic in this summary arguably is the standard deviation, and in particular the comparison of the *Between*-SD reflecting the variation between countries and the *Within*-SD reflecting average variation over time. This comparison shows that PCGDP, LIFEEX and GINI vary more between countries, but ODA received varies more within countries over time. The 0 *Between*-SD for the year variable and the fact that the *Overall* and *Within*-SD are equal shows that year is individual invariant. Thus `qsu` also provides the same information as `varying`, but with additional details on the relative magnitudes of cross-sectional and time series variation. It is also a common pattern that the *kurtosis* increases in within-transformed data, while the *skewness* decreases in most cases. + + + +We could also do all of that by regions to have a look at the between and within country variations inside and across different World regions: + +```{r, eval=NCRAN} +qsu(wlddev, by = ~ region, pid = ~ iso3c, cols = 9:12, vlabels = TRUE, higher = TRUE) +``` + +Notice that the output here is a 4D array of summary statistics, which we could also subset (`[`) or permute (`aperm`) to view these statistics in any convenient way. If we don't like the array, we can also output as a nested list of statistics matrices: + +```{r, eval=NCRAN} +l <- qsu(wlddev, by = ~ region, pid = ~ iso3c, cols = 9:12, vlabels = TRUE, + higher = TRUE, array = FALSE) + +str(l, give.attr = FALSE) +``` + +Such a list of statistics matrices could, for example, be converted into a tidy data frame using `unlist2d` (more about this in the section on list-processing): + +```{r, eval=NCRAN} +head(unlist2d(l, idcols = c("Variable", "Trans"), row.names = "Region")) +``` + + +This is not yet end of `qsu`'s functionality, as we can also do all of the above on panel-surveys utilizing weights (`w` argument). + +Finally, we can look at (weighted) pairwise correlations in this data: +```{r, eval=NCRAN} +pwcor(wlddev[9:12], N = TRUE, P = TRUE) +``` + +which can of course also be computed on averaged and within-transformed data: + +```{r, eval=NCRAN} +print(pwcor(fmean(wlddev[9:12], wlddev$iso3c), N = TRUE, P = TRUE), show = "lower.tri") + +# N is same as overall N shown above... +print(pwcor(fwithin(wlddev[9:12], wlddev$iso3c), P = TRUE), show = "lower.tri") + +``` + +A useful function called by `pwcor` is `pwnobs`, which is very handy to explore the joint observation structure when selecting variables to include in a statistical model: + +```{r, eval=NCRAN} +pwnobs(wlddev) +``` + +Note that both `pwcor/pwcov` and `pwnobs` are faster on matrices. + + + + +### 1.2 `GGDC10S` - GGDC 10-Sector Database +The Groningen Growth and Development Centre 10-Sector Database provides long-run data on sectoral productivity performance in Africa, Asia, and Latin America. Variables covered in the data set are annual series of value added (VA, in local currency), and persons employed (EMP) for 10 broad sectors. + +```{r, eval=NCRAN} +head(GGDC10S) + +namlab(GGDC10S, class = TRUE) + +fnobs(GGDC10S) + +fndistinct(GGDC10S) + +# The countries included: +cat(funique(GGDC10S$Country, sort = TRUE)) + +``` +The first problem in summarizing this data is that value added (VA) is in local currency, the second that it contains 2 different Variables (VA and EMP) stacked in the same column. One way of solving the first problem could be converting the data to percentages through dividing by the overall VA and EMP contained in the last column. A different solution involving grouped-scaling is introduced in section 6.4. The second problem is again nicely handled by `qsu`, which can also compute panel-statistics by groups. +```{r, eval=NCRAN} +# Converting data to percentages of overall VA / EMP, dapply keeps the attributes, see section 6.1 +pGGDC10S <- ftransformv(GGDC10S, 6:15, `*`, 100 / SUM) + +# Summarizing the sectoral data by variable, overall, between and within countries +su <- qsu(pGGDC10S, by = ~ Variable, pid = ~ Variable + Country, + cols = 6:16, higher = TRUE) + +# This gives a 4D array of summary statistics +str(su) + +# Permuting this array to a more readible format +aperm(su, c(4L, 2L, 3L, 1L)) +``` +The statistics show that the dataset is very consistent: Employment data cover 42 countries and 53 time-periods in almost all sectors. Agriculture is the largest sector in terms of employment, amounting to a 35% share of employment across countries and time, with a standard deviation (SD) of around 27%. The between-country SD in agricultural employment share is 24% and the within SD is 12%, indicating that processes of structural change are very gradual and most of the variation in structure is between countries. The next largest sectors after agriculture are manufacturing, wholesale and retail trade and government, each claiming an approx. 15% share of the economy. In these sectors the between-country SD is also about twice as large as the within-country SD. + +In terms of value added, the data covers 43 countries in 50 time-periods. Agriculture, manufacturing, wholesale and retail trade and government are also the largest sectors in terms of VA, but with a diminished agricultural share (around 17%) and a greater share for manufacturing (around 20%). The variation between countries is again greater than the variation within countries, but it seems that at least in terms of agricultural VA share there is also a considerable within-country SD of 8%. This is also true for the finance and real estate sector with a within SD of 9%, suggesting (using a bit of common sense) that a diminishing VA share in agriculture and increased VA share in finance and real estate was a pattern characterizing most of the countries in this sample. + +As a final step we consider a plot function which can be used to plot the structural transformation of any supported country. Below for Botswana: +```{r scplot_BWA, eval=NCRAN} +library(data.table) +library(ggplot2) +library(magrittr) + +plotGGDC <- function(ctry) { + # Select and subset + fsubset(GGDC10S, Country == ctry, Variable, Year, AGR:SUM) %>% + # Convert to shares and replace negative values with NA + ftransform(fselect(., AGR:OTH) %>% + lapply(`*`, 1 / SUM) %>% + replace_outliers(0, NA, "min")) %>% + # Remove totals column and make proper variable labels + ftransform(Variable = recode_char(Variable, + VA = "Value Added Share", + EMP = "Employment Share"), + SUM = NULL) %>% + # Fast conversion to data.table + qDT %>% + # data.table's melt function + melt(1:2, variable.name = "Sector", na.rm = TRUE) %>% + # ggplot with some scales provided by the 'scales' package + ggplot(aes(x = Year, y = value, fill = Sector)) + + geom_area(position = "fill", alpha = 0.9) + labs(x = NULL, y = NULL) + + theme_linedraw(base_size = 14L) + facet_wrap( ~ Variable) + + scale_fill_manual(values = sub("#00FF66", "#00CC66", rainbow(10L))) + + scale_x_continuous(breaks = scales::pretty_breaks(n = 7L), expand = c(0, 0)) + + scale_y_continuous(breaks = scales::pretty_breaks(n = 10L), expand = c(0, 0), + labels = scales::percent) + + theme(axis.text.x = element_text(angle = 315, hjust = 0, margin = ggplot2::margin(t = 0)), + strip.background = element_rect(colour = "grey20", fill = "grey20"), + strip.text = element_text(face = "bold")) +} + +# Plotting the structural transformation of Botswana +plotGGDC("BWA") + +``` + +## 2. Fast Data Manipulation +A lot of R code is not concerned with statistical computations but with preliminary data wrangling. + +For various reasons R development has focused on data frames as the main medium to contain data, although matrices / arrays provide significantly faster methods for common manipulations. + +A first essential step towards optimizing R code is thus to speed up very frequent manipulations on data frames. *collapse* introduces a set of highly optimized functions to efficiently manipulate (mostly) data frames. Most manipulations can be conducted in non-standard evaluation or standard evaluation (utilizing different functions), and all functions preserve the data structure (i.e. they can be used with data.table, tbl_df, grouped_df, pdata.frame etc.). + + + +### 2.1 Selecting and Replacing Columns + +`fselect` is an analogue to `dplyr::select`, but executes about 100x faster. It can be used to select variables using expressions involving variable names: + +```{r, eval=NCRAN} +library(magrittr) # Pipe operators +fselect(wlddev, country, year, PCGDP:ODA) %>% head(2) + +fselect(wlddev, -country, -year, -(PCGDP:ODA)) %>% head(2) + +library(microbenchmark) +microbenchmark(fselect = collapse::fselect(wlddev, country, year, PCGDP:ODA), + select = dplyr::select(wlddev, country, year, PCGDP:ODA)) +``` + +in contrast to `dplyr::select`, `fselect` has a replacement method +```{r, eval=NCRAN} +# Computing the log of columns +fselect(wlddev, PCGDP:POP) <- lapply(fselect(wlddev, PCGDP:POP), log) +head(wlddev, 2) +# Efficient deleting +fselect(wlddev, country, year, PCGDP:POP) <- NULL +head(wlddev, 2) +rm(wlddev) +``` +and it can also return information about the selected columns other than the data itself. +```{r, eval=NCRAN} +fselect(wlddev, PCGDP:POP, return = "names") +fselect(wlddev, PCGDP:POP, return = "indices") +fselect(wlddev, PCGDP:POP, return = "named_indices") +fselect(wlddev, PCGDP:POP, return = "logical") +fselect(wlddev, PCGDP:POP, return = "named_logical") +``` + + + +While `fselect` is faster than `dplyr::select`, it is also simpler and does not offer special methods for grouped tibbles (e.g. where grouping columns are always selected) and some other *dplyr*-specific features of `select`. We will see that this is not a problem at all when working with statistical functions in *collapse* that have a grouped_df method, but users should be careful replacing `dplyr::select` with `fselect` in *dplyr* scripts. From *collapse* 1.6.0, `fselect` has explicit support for *sf* data frames. + + + + + + + + + +The standard-evaluation analogue to `fselect` is the function `get_vars`. `get_vars` can be used to select variables using names, indices, logical vectors, functions or regular expressions evaluated against column names: + +```{r, eval=NCRAN} +get_vars(wlddev, 9:13) %>% head(1) +get_vars(wlddev, c("PCGDP","LIFEEX","GINI","ODA","POP")) %>% head(1) +get_vars(wlddev, "[[:upper:]]", regex = TRUE) %>% head(1) +get_vars(wlddev, "PC|LI|GI|OD|PO", regex = TRUE) %>% head(1) +# Same as above, vectors of regular expressions are sequentially passed to grep +get_vars(wlddev, c("PC","LI","GI","OD","PO"), regex = TRUE) %>% head(1) +get_vars(wlddev, is.numeric) %>% head(1) + +# Returning other information +get_vars(wlddev, is.numeric, return = "names") +get_vars(wlddev, "[[:upper:]]", regex = TRUE, return = "named_indices") + +``` +Replacing operations are conducted analogous: + +```{r, eval=NCRAN} +get_vars(wlddev, 9:13) <- lapply(get_vars(wlddev, 9:13), log) +get_vars(wlddev, 9:13) <- NULL +head(wlddev, 2) +rm(wlddev) +``` + +`get_vars` is about 2x faster than `[.data.frame`, and `get_vars<-` is about 6-8x faster than `[<-.data.frame`. + + + + + + + + +In addition to `get_vars`, *collapse* offers a set of functions to efficiently select and replace data by data type: `num_vars`, `cat_vars` (for categorical = non-numeric columns), `char_vars`, `fact_vars`, `logi_vars` and `date_vars` (for date and date-time columns). + +```{r, eval=NCRAN} +head(num_vars(wlddev), 2) +head(cat_vars(wlddev), 2) +head(fact_vars(wlddev), 2) + +# Replacing +fact_vars(wlddev) <- fact_vars(wlddev) +``` + +### 2.2 Subsetting +`fsubset` is an enhanced version of `base::subset` using C functions from the *data.table* package for fast and subsetting operations. In contrast to `base::subset`, `fsubset` allows multiple comma-separated select arguments after the subset argument, and it also preserves all attributes of subsetted columns: + +```{r, eval=NCRAN} +# Returning only value-added data after 1990 +fsubset(GGDC10S, Variable == "VA" & Year > 1990, Country, Year, AGR:GOV) %>% head(2) +# Same thing +fsubset(GGDC10S, Variable == "VA" & Year > 1990, -(Regioncode:Variable), -(OTH:SUM)) %>% head(2) +``` + +It is also possible to use standard evaluation with `fsubset`, but for these purposes the function `ss` exists as a fast and more secure alternative to `[.data.frame`: + +```{r, eval=NCRAN} +ss(GGDC10S, 1:2, 6:16) # or fsubset(GGDC10S, 1:2, 6:16), but not recommended. +ss(GGDC10S, -(1:2), c("AGR","MIN")) %>% head(2) +``` + +Thanks to the *data.table* C code and optimized R code, `fsubset` is very fast. + +```{r, eval=NCRAN} +microbenchmark(base = subset(GGDC10S, Variable == "VA" & Year > 1990, AGR:SUM), + collapse = fsubset(GGDC10S, Variable == "VA" & Year > 1990, AGR:SUM)) + +microbenchmark(GGDC10S[1:10, 1:10], ss(GGDC10S, 1:10, 1:10)) +``` + +like `base::subset`, `fsubset` is S3 generic with methods for vectors, matrices and data frames. For certain classes such as factors, `fsubset.default` also improves upon `[`, but the largest improvements are with the data frame method. + +### 2.3 Reordering Rows and Columns + +`roworder` is a fast analogue to `dplyr::arrange`. The syntax is inspired by `data.table::setorder`, so that negative variable names indicate descending sort. + +```{r, eval=NCRAN} +roworder(GGDC10S, -Variable, Country) %>% ss(1:2, 1:8) + +microbenchmark(collapse = collapse::roworder(GGDC10S, -Variable, Country), + dplyr = dplyr::arrange(GGDC10S, desc(Variable), Country)) +``` +In contrast to `data.table::setorder`, `roworder` creates a copy of the data frame (unless data are already sorted). If this copy is not required, `data.table::setorder` is faster. The function `roworderv` is a standard evaluation analogue to `roworder`: +```{r, eval=NCRAN} +# Same as above +roworderv(GGDC10S, c("Variable", "Country"), decreasing = c(TRUE, FALSE)) %>% ss(1:2, 1:8) +``` +With `roworderv`, it is also possible to move or exchange rows in a data frame: +```{r, eval=NCRAN} +# If length(neworder) < fnrow(data), the default (pos = "front") brings rows to the front +roworderv(GGDC10S, neworder = which(GGDC10S$Country == "GHA")) %>% ss(1:2, 1:8) + +# pos = "end" brings rows to the end +roworderv(GGDC10S, neworder = which(GGDC10S$Country == "BWA"), pos = "end") %>% ss(1:2, 1:8) + +# pos = "exchange" arranges selected rows in the order they are passed, without affecting other rows +roworderv(GGDC10S, neworder = with(GGDC10S, c(which(Country == "GHA"), + which(Country == "BWA"))), pos = "exchange") %>% ss(1:2, 1:8) +``` +Similarly, the pair `colorder` / `colorderv` facilitates efficient reordering of columns in a data frame. These functions not require a deep copy of the data and are very fast. To reorder columns by reference, see also `data.table::setcolorder`. +```{r, eval=NCRAN} +# The default is again pos = "front" which brings selected columns to the front / left +colorder(GGDC10S, Variable, Country, Year) %>% head(2) +``` + + +### 2.4 Transforming and Computing New Columns +`ftransform` is an improved version of `base::transform` for data frames and lists. `ftransform` can be used to compute new columns or modify and delete existing columns, and always returns the entire data frame. + +```{r, eval=NCRAN} +ftransform(GGDC10S, AGR_perc = AGR / SUM * 100, # Computing Agricultural percentage + Year = as.integer(Year), # Coercing Year to integer + AGR = NULL) %>% tail(2) # Deleting column AGR + +# Computing scalar results replicates them +ftransform(GGDC10S, MIN_mean = fmean(MIN), Intercept = 1) %>% tail(2) +``` + +The modification `ftransformv` exists to transform specific columns using a function: + + + +```{r, eval=NCRAN} +# Apply the log to columns 6-16 +GGDC10S %>% ftransformv(6:16, log) %>% tail(2) + +# Convert data to percentage terms +GGDC10S %>% ftransformv(6:16, `*`, 100/SUM) %>% tail(2) + +# Apply log to numeric columns +GGDC10S %>% ftransformv(is.numeric, log) %>% tail(2) +``` +Instead of passing comma-separated `column = value` expressions, it is also possible to bulk-process data with `fransform` by passing a single list of expressions (such as a data frame). This is useful for more complex transformations involving multiple steps: +```{r, eval=NCRAN} +# Same as above, but also replacing any generated infinite values with NA +GGDC10S %>% ftransform(num_vars(.) %>% lapply(log) %>% replace_Inf) %>% tail(2) +``` +This mode of usage toggles automatic column matching and replacement. Non-matching columns are added to the data frame. Apart from to `ftransform`, the function `settransform(v)` can be used to change the input data frame by reference: + + +```{r, eval=NCRAN} +# Computing a new column and deleting some others by reference +settransform(GGDC10S, FIRE_MAN = FIRE / MAN, + Regioncode = NULL, Region = NULL) +tail(GGDC10S, 2) +rm(GGDC10S) + +# Bulk-processing the data into percentage terms +settransformv(GGDC10S, 6:16, `*`, 100/SUM) +tail(GGDC10S, 2) + +# Same thing via replacement +ftransform(GGDC10S) <- fselect(GGDC10S, AGR:SUM) %>% lapply(`*`, 100/.$SUM) +# Or using double pipes +GGDC10S %<>% ftransformv(6:16, `*`, 100/SUM) +rm(GGDC10S) +``` + +Another convenient addition is provided by the function `fcompute`, which can be used to compute new columns in a data frame environment and returns the computed columns in a new data frame: +```{r, eval=NCRAN} +fcompute(GGDC10S, AGR_perc = AGR / SUM * 100, FIRE_MAN = FIRE / MAN) %>% tail(2) +``` + +For more complex tasks see `?ftransform`. + +### 2.5 Adding and Binding Columns +For cases where multiple columns are computed and need to be added to a data frame (regardless of whether names are duplicated or not), *collapse* introduces the predicate `add_vars`. Together with `add_vars`, the function `add_stub` is useful to add a prefix (default) or postfix to computed variables keeping the variable names unique: + +```{r, eval=NCRAN} +# Efficient adding logged versions of some variables +add_vars(wlddev) <- get_vars(wlddev, 9:13) %>% lapply(log10) %>% add_stub("log10.") +head(wlddev, 2) +rm(wlddev) +``` + +By default `add_vars` appends a data frame towards the (right) end, but it can also replace columns in front or at other positions in the data frame: + +```{r, eval=NCRAN} +add_vars(wlddev, "front") <- get_vars(wlddev, 9:13) %>% lapply(log10) %>% add_stub("log10.") +head(wlddev, 2) +rm(wlddev) + +add_vars(wlddev, c(10L,12L,14L,16L,18L)) <- get_vars(wlddev, 9:13) %>% lapply(log10) %>% add_stub("log10.") +head(wlddev, 2) +rm(wlddev) +``` + +`add_vars` can also be used without replacement, where it serves as a more efficient version of `cbind.data.frame`, with the difference that the data structure and attributes of the first argument are preserved: + +```{r, eval=NCRAN} +add_vars(wlddev, get_vars(wlddev, 9:13) %>% lapply(log) %>% add_stub("log."), + get_vars(wlddev, 9:13) %>% lapply(log10) %>% add_stub("log10.")) %>% head(2) + +add_vars(wlddev, get_vars(wlddev, 9:13) %>% lapply(log) %>% add_stub("log."), + get_vars(wlddev, 9:13) %>% lapply(log10) %>% add_stub("log10."), + pos = c(10L,13L,16L,19L,22L,11L,14L,17L,20L,23L)) %>% head(2) + +identical(cbind(wlddev, wlddev), add_vars(wlddev, wlddev)) +microbenchmark(cbind(wlddev, wlddev), add_vars(wlddev, wlddev)) +``` + +### 2.6 Renaming Columns +`frename` is a fast substitute for `dplyr::rename`: + +```{r, eval=NCRAN} +frename(GGDC10S, AGR = Agriculture, MIN = Mining) %>% head(2) +frename(GGDC10S, tolower) %>% head(2) +frename(GGDC10S, tolower, cols = .c(AGR, MIN)) %>% head(2) +``` +The function `setrename` does this by reference: + +```{r, eval=NCRAN} +setrename(GGDC10S, AGR = Agriculture, MIN = Mining) +head(GGDC10S, 2) +setrename(GGDC10S, Agriculture = AGR, Mining = MIN) +rm(GGDC10S) +``` +Both functions are not limited to data frames but can be applied to any R object with a 'names' attribute. + +### 2.7 Using Shortcuts +The most frequently required among the functions introduced above can be abbreviated as follows: `fselect -> slt`, `fsubset -> sbt`, `ftransform(v) -> tfm(v)`, `settransform(v) -> settfm(v)`, `get_vars -> gv`, `num_vars -> nv`, `add_vars -> av`. This was done to make it possible to write faster and more parsimonious code, but is recommended only for personally kept scripts. A lazy person may also decide to code everything using shortcuts and then do ctrl+F replacement with the long names on the finished script. + + + +### 2.8 Missing Values / Rows +The function `na_omit` is a much faster alternative to `stats::na.omit` for vectors, matrices and data frames. By default the 'na.action' attribute containing the removed cases is omitted, but it can be added with the option `na.attr = TRUE`. Like `fsubset`, `na_omit` preserves all column attributes as well as attributes of the data frame itself. + +```{r, eval=NCRAN} +microbenchmark(na_omit(wlddev, na.attr = TRUE), na.omit(wlddev)) +``` + +Another added feature is the removal of cases missing on certain columns only: + +```{r, eval=NCRAN} +na_omit(wlddev, cols = .c(PCGDP, LIFEEX)) %>% head(2) +# only removing missing data from numeric columns -> same and slightly faster than na_omit(wlddev) +na_omit(wlddev, cols = is.numeric) %>% head(2) +``` +For atomic vectors the function `na_rm` also exists which is 2x faster than `x[!is.na(x)]`. Both `na_omit` and `na_rm` return their argument if no missing cases were found. + +The existence of missing cases can be checked using `missing_cases`, which is also considerably faster than `complete.cases` for data frames. + + There is also a function `na_insert` to randomly insert missing values into vectors, matrices and data frames. The default is `na_insert(X, prop = 0.1)` so that 10% of values are randomly set to missing. + +Finally, a function `allNA` provides the much needed opposite of `anyNA` for atomic vectors. + +### 2.9 Unique Values / Rows +Similar to `na_omit`, the function `funique` is a much faster alternative to `base::unique` for atomic vectors and data frames. Like most *collapse* functions it also seeks to preserve attributes. +```{r, eval=NCRAN} +funique(GGDC10S$Variable) # Unique values in order of appearance +funique(GGDC10S$Variable, sort = TRUE) # Sorted unique values + +# If all values/rows are unique, the original data is returned (no copy) +identical(funique(GGDC10S), GGDC10S) + +# Can remove duplicate rows by a subset of columns +funique(GGDC10S, cols = .c(Country, Variable)) %>% ss(1:2, 1:8) +funique(GGDC10S, cols = .c(Country, Variable), sort = TRUE) %>% ss(1:2, 1:8) +``` + +### 2.10 Recoding and Replacing Values +With `recode_num`, `recode_char`, `replace_NA`, `replace_Inf` and `replace_outliers`, *collapse* also introduces a set of functions to efficiently recode and replace numeric and character values in matrix-like objects (vectors, matrices, arrays, data frames, lists of atomic objects). When called on a data frame, `recode_num`, `replace_Inf` and `replace_outliers` will skip non-numeric columns, and `recode_char` skips non-character columns, whereas `replace_NA` replaces missing values in all columns. + +```{r, eval=NCRAN} +# Efficient replacing missing values with 0 +microbenchmark(replace_NA(GGDC10S, 0)) + +# Adding log-transformed sectoral data: Some NaN and Inf values generated +add_vars(GGDC10S, 6:16*2-5) <- fselect(GGDC10S, AGR:SUM) %>% + lapply(log) %>% replace_Inf %>% add_stub("log.") +head(GGDC10S, 2) +rm(GGDC10S) +``` + +`recode_num` and `recode_char` follow the syntax of `dplyr::recode` and provide more or less the same functionality except that they can efficiently be applied to matrices and data frames, and that `recode_char` allows for regular expression matching implemented via `base::grepl`: + + + +```{r, eval=NCRAN} +month.name +recode_char(month.name, ber = "C", "^J" = "A", default = "B", regex = TRUE) +``` + +The perhaps most interesting function in this ensemble is `replace_outliers`, which replaces values falling outside a 1- or 2-sided numeric threshold or outside a certain number of column- standard deviations with a value (default is `NA`). + +```{r, eval=NCRAN} +# replace all values below 2 and above 100 with NA +replace_outliers(mtcars, c(2, 100)) %>% head(3) + +# replace all value smaller than 2 with NA +replace_outliers(mtcars, 2, single.limit = "min") %>% head(3) + +# replace all value larger than 100 with NA +replace_outliers(mtcars, 100, single.limit = "max") %>% head(3) + +# replace all values above or below 3 column-standard-deviations from the column-mean with NA +replace_outliers(mtcars, 3) %>% tail(3) + +``` + +## 3. Quick Data Object Conversions + +Apart from code employed for manipulation of data and the actual statistical computations performed, frequently used data object conversions with base functions like `as.data.frame`, `as.matrix` or `as.factor` have a significant share in slowing down R code. Optimally code would be written without such conversions, but sometimes they are necessary and thus *collapse* provides a set of functions (`qDF`, `qDT`, `qTBL`, `qM`, `qF`, `mrtl` and `mctl`) to speed these conversions up quite a bit. These functions are fast because they are non-generic and dispatch different objects internally, perform critical steps in C++, and, when passed lists of objects, they only check the length of the first column. + +`qDF`, `qDT` and `qTBL` efficiently convert vectors, matrices, higher-dimensional arrays and suitable lists to data.frame, *data.table* and *tibble* respectively. + +```{r, eval=NCRAN} +str(EuStockMarkets) +# Efficient Conversion of data frames and matrices to data.table +microbenchmark(qDT(wlddev), qDT(EuStockMarkets), as.data.table(wlddev), as.data.frame(EuStockMarkets)) + +# Converting a time series to data.frame +head(qDF(AirPassengers)) +``` +By default these functions drop all unnecessary attributes from matrices or lists / data frames in the conversion, but this can be changed using the `keep.attr = TRUE` argument. + +A useful additional feature of `qDF` and `qDT` is the `row.names.col` argument, enabling the saving of names / row-names in a column when converting from vector, matrix, array or data frame: + +```{r, eval=NCRAN} +# This saves the row-names in a column named 'car' +head(qDT(mtcars, "car")) + +N_distinct <- fndistinct(GGDC10S) +N_distinct +# Converting a vector to data.frame, saving names +head(qDF(N_distinct, "variable")) +``` + +For the conversion of matrices to list there are also the programmers functions `mrtl` and `mctl`, which row- or column- wise convert a matrix into a plain list, data.frame or *data.table*. + +```{r, eval=NCRAN} +# This converts the matrix to a list of 1860 row-vectors of length 4. +microbenchmark(mrtl(EuStockMarkets)) +``` + +For the reverse operation, `qM` converts vectors, higher-dimensional arrays, data frames and suitable lists to matrix. + +```{r, eval=NCRAN} +# Note: kit::psum is the most efficient way to do this +microbenchmark(rowSums(qM(mtcars)), rowSums(mtcars), kit::psum(mtcars)) +``` + +At last, `qF` converts vectors to factor and is quite a bit faster than `as.factor`: + +```{r, eval=NCRAN} +# Converting from character +str(wlddev$country) +fndistinct(wlddev$country) +microbenchmark(qF(wlddev$country), as.factor(wlddev$country)) + +# Converting from numeric +str(wlddev$PCGDP) +fndistinct(wlddev$PCGDP) +microbenchmark(qF(wlddev$PCGDP), as.factor(wlddev$PCGDP)) + +``` + + + +## 4. Advanced Statistical Programming +Having introduced some of the more basic *collapse* data manipulation infrastructure in the preceding chapters, this chapter introduces some of the packages core functionality for programming with data. + +### 4.1 Fast (Grouped, Weighted) Statistical Functions +A key feature of *collapse* is it's broad set of *Fast Statistical Functions* (`fsum, fprod, fmean, fmedian, fmode, fvar, fsd, fmin, fmax, fnth, ffirst, flast, fnobs, fndistinct`), which are able to tangibly speed-up column-wise, grouped and weighted statistical computations on vectors, matrices or data frames. The basic syntax common to all of these functions is: +```{r eval=FALSE} +FUN(x, g = NULL, [w = NULL,] TRA = NULL, [na.rm = TRUE,] use.g.names = TRUE, drop = TRUE) + +``` + +where `x` is a vector, matrix or data frame, `g` takes groups supplied as vector, factor, list of vectors or *GRP* object, and `w` takes a weight vector (supported by `fsum, fprod, fmean, fmedian, fmode, fnth, fvar` and `fsd`). `TRA` can be used to transform `x` using the computed statistics and one of 10 available transformations (`"replace_fill", "replace", "-", "-+", "/", "%", "+", "*", "%%, "-%%"`, discussed in section 6.3). `na.rm` efficiently skips missing values during the computation and is `TRUE` by default. `use.g.names = TRUE` generates new row-names from the unique groups supplied to `g`, and `drop = TRUE` returns a vector when performing simple (non-grouped) computations on matrix or data frame columns. + +With that in mind, let's start with some simple examples. To calculate simple column-wise means, it is sufficient to type: + +```{r, eval=NCRAN} +fmean(mtcars$mpg) # Vector + +fmean(mtcars) + +fmean(mtcars, drop = FALSE) # This returns a 1-row data-frame + +m <- qM(mtcars) # Generate matrix +fmean(m) + +fmean(m, drop = FALSE) # This returns a 1-row matrix +``` + +Note that separate methods for vectors, matrices and data frames are written in C++, thus no conversions are needed and computations on matrices and data frames are equally efficient. +If we had a weight vector, weighted statistics are easily computed: +```{r, eval=NCRAN} +weights <- abs(rnorm(fnrow(mtcars))) # fnrow is a bit faster for data frames + +fmean(mtcars, w = weights) # Weighted mean +fmedian(mtcars, w = weights) # Weighted median +fsd(mtcars, w = weights) # Frequency-weighted standard deviation +fmode(mtcars, w = weights) # Weighted statistical mode (i.e. the value with the largest sum of weights) +``` +Fast grouped statistics can be calculated by simply passing grouping vectors or lists of grouping vectors to the fast functions: + +```{r, eval=NCRAN} +fmean(mtcars, mtcars$cyl) + +fmean(mtcars, fselect(mtcars, cyl, vs, am)) + +# Getting column indices +ind <- fselect(mtcars, cyl, vs, am, return = "indices") +fmean(get_vars(mtcars, -ind), get_vars(mtcars, ind)) +``` + + + +### 4.2 Factors, Grouping Objects and Grouped Data Frames + +This programming can becomes more efficient when passing *factors* or *grouping objects* to the `g` argument, as otherwise vectors and lists of vectors are grouped internally. + +```{r, eval=NCRAN} +# This creates a factor, na.exclude = FALSE attaches a class 'na.included' +f <- qF(mtcars$cyl, na.exclude = FALSE) +# The 'na.included' attribute skips a missing value check on this factor +attributes(f) +# Saving data without grouping columns +dat <- get_vars(mtcars, -ind) +# Grouped standard-deviation +fsd(dat, f) + +# Without option na.exclude = FALSE, anyNA needs to be called on the factor (noticeable on larger data). +f2 <- qF(mtcars$cyl) +microbenchmark(fsd(dat, f), fsd(dat, f2)) +``` + +For programming purposes *GRP* objects are preferable over factors because they never require further checks and they provide additional information about the grouping (such as group sizes and the original unique values in each group). The `GRP` function creates grouping objects (of class *GRP*) from vectors or lists of columns. Grouping is done very efficiently via radix ordering in C (using the `radixorder` function): +```{r, eval=NCRAN} +# This creates a 'GRP' object. +g <- GRP(mtcars, ~ cyl + vs + am) # Using the formula interface, could also use c("cyl","vs","am") or c(2,8:9) +str(g) +``` + +The first three elements of this object provide information about the number of groups, the group to which each row belongs, and the size of each group. A print and a plot method provide further information about the grouping: + +```{r GRPplot, eval=NCRAN} +print(g) +plot(g) +``` + +The important elements of the *GRP* object are directly handed down to the compiled C++ code of the statistical functions, making repeated computations over the same groups very efficient. + +```{r, eval=NCRAN} +fsd(dat, g) + +# Grouped computation with and without prior grouping +microbenchmark(fsd(dat, g), fsd(dat, get_vars(mtcars, ind))) +``` + + + +Yet another possibility is creating a grouped data frame (class *grouped_df*). This can either be done using `dplyr::group_by`, which creates a grouped tibble and requires a conversion of the grouping object using `GRP.grouped_df`, or using the more efficient `fgroup_by` provided in *collapse*: + +```{r, eval=NCRAN} +gmtcars <- fgroup_by(mtcars, cyl, vs, am) # fgroup_by() can also be abbreviated as gby() +fmedian(gmtcars) + +head(fgroup_vars(gmtcars)) + +fmedian(gmtcars, keep.group_vars = FALSE) +``` + + + + + + +Now suppose we wanted to create a new dataset which contains the *mean*, *sd*, *min* and *max* of the variables *mpg* and *disp* grouped by *cyl*, *vs* and *am*: + +```{r, eval=NCRAN} +# Standard evaluation +dat <- get_vars(mtcars, c("mpg", "disp")) +add_vars(g[["groups"]], + add_stub(fmean(dat, g, use.g.names = FALSE), "mean_"), + add_stub(fsd(dat, g, use.g.names = FALSE), "sd_"), + add_stub(fmin(dat, g, use.g.names = FALSE), "min_"), + add_stub(fmax(dat, g, use.g.names = FALSE), "max_")) + +# Non-Standard evaluation +fgroup_by(mtcars, cyl, vs, am) %>% fselect(mpg, disp) %>% { + add_vars(fgroup_vars(., "unique"), + fmean(., keep.group_vars = FALSE) %>% add_stub("mean_"), + fsd(., keep.group_vars = FALSE) %>% add_stub("sd_"), + fmin(., keep.group_vars = FALSE) %>% add_stub("min_"), + fmax(., keep.group_vars = FALSE) %>% add_stub("max_")) +} +``` + +### 4.3 Grouped and Weighted Computations + + + +We could also calculate groupwise-frequency weighted means and standard-deviations using a weight vector^[You may wonder why with weights the standard-deviations in the group '4.0.1' are `0` while they were `NA` without weights. This stirs from the fact that group '4.0.1' only has one observation, and in the Bessel-corrected estimate of the variance there is a `n - 1` in the denominator which becomes `0` if `n = 1` and division by `0` becomes `NA` in this case (`fvar` was designed that way to match the behavior or `stats::var`). In the weighted version the denominator is `sum(w) - 1`, and if `sum(w)` is not 1, then the denominator is not `0`. The standard-deviation however is still `0` because the sum of squares in the numerator is `0`. In other words this means that in a weighted aggregation singleton-groups are not treated like singleton groups unless the corresponding weight is `1`.]. + + + +```{r, eval=NCRAN} +# Grouped and weighted mean and sd and grouped min and max +add_vars(g[["groups"]], + add_stub(fmean(dat, g, weights, use.g.names = FALSE), "w_mean_"), + add_stub(fsd(dat, g, weights, use.g.names = FALSE), "w_sd_"), + add_stub(fmin(dat, g, use.g.names = FALSE), "min_"), + add_stub(fmax(dat, g, use.g.names = FALSE), "max_")) + +# Binding and reordering columns in a single step: Add columns in specific positions +add_vars(g[["groups"]], + add_stub(fmean(dat, g, weights, use.g.names = FALSE), "w_mean_"), + add_stub(fsd(dat, g, weights, use.g.names = FALSE), "w_sd_"), + add_stub(fmin(dat, g, use.g.names = FALSE), "min_"), + add_stub(fmax(dat, g, use.g.names = FALSE), "max_"), + pos = c(4,8,5,9,6,10,7,11)) + +``` + +The R overhead of this kind of programming in standard-evaluation is very low: +```{r, eval=NCRAN} +microbenchmark(call = add_vars(g[["groups"]], + add_stub(fmean(dat, g, weights, use.g.names = FALSE), "w_mean_"), + add_stub(fsd(dat, g, weights, use.g.names = FALSE), "w_sd_"), + add_stub(fmin(dat, g, use.g.names = FALSE), "min_"), + add_stub(fmax(dat, g, use.g.names = FALSE), "max_"))) +``` + +### 4.4 Transformations Using the `TRA` Argument + +As a final layer of added complexity, we could utilize the `TRA` argument to generate groupwise-weighted demeaned, and scaled data, with additional columns giving the group-minimum and maximum values: + +```{r, eval=NCRAN} +head(add_vars(get_vars(mtcars, ind), + add_stub(fmean(dat, g, weights, "-"), "w_demean_"), # This calculates weighted group means and uses them to demean the data + add_stub(fsd(dat, g, weights, "/"), "w_scale_"), # This calculates weighted group sd's and uses them to scale the data + add_stub(fmin(dat, g, "replace"), "min_"), # This replaces all observations by their group-minimum + add_stub(fmax(dat, g, "replace"), "max_"))) # This replaces all observations by their group-maximum +``` +It is also possible to `add_vars<-` to `mtcars` itself. The default option would add these columns at the end, but we could also specify positions: +```{r, eval=NCRAN} +# This defines the positions where we want to add these columns +pos <- as.integer(c(2,8,3,9,4,10,5,11)) + +add_vars(mtcars, pos) <- c(add_stub(fmean(dat, g, weights, "-"), "w_demean_"), + add_stub(fsd(dat, g, weights, "/"), "w_scale_"), + add_stub(fmin(dat, g, "replace"), "min_"), + add_stub(fmax(dat, g, "replace"), "max_")) +head(mtcars) +rm(mtcars) +``` +Together with `ftransform`, things can become arbitrarily more complex: + +```{r, eval=NCRAN} +# 2 different grouped and weighted computations (mutate operations) performed in one call +settransform(mtcars, carb_dwmed_cyl = fmedian(carb, cyl, weights, "-"), + carb_wsd_vs_am = fsd(carb, list(vs, am), weights, "replace")) + +# Multivariate +settransform(mtcars, c(fmedian(list(carb_dwmed_cyl = carb, mpg_dwmed_cyl = mpg), cyl, weights, "-"), + fsd(list(carb_wsd_vs_am = carb, mpg_wsd_vs_am = mpg), list(vs, am), weights, "replace"))) + +# Nested (Computing the weighted 3rd quartile of mpg, grouped by cyl and carb being greater than it's weighted median, grouped by vs) +settransform(mtcars, + mpg_gwQ3_cyl = fnth(mpg, 0.75, list(cyl, carb > fmedian(carb, vs, weights, 1L)), weights, 1L)) + +head(mtcars) +rm(mtcars) +``` + +With the full set of 14 *Fast Statistical Functions*, and additional vector- valued functions and operators (`fscale/STD, fbetween/B, fwithin/W, fhdbetween/HDB, fhdwithin/HDW, flag/L/F, fdiff/D, fgrowth/G`) discussed later, *collapse* provides extraordinary new possibilities for highly complex and efficient statistical programming in R. Computation speeds generally exceed those of packages like *dplyr* or *data.table*, sometimes by orders of magnitude. Column-wise matrix computations are also highly efficient and comparable to packages like `matrixStats` and base R functions like `colSums`. In particular the ability to perform grouped and weighted computations on matrices is new to R and very useful for complex computations (such as aggregating input-output tables etc.). + +Note that the above examples provide merely suggestions for use of these features and are focused on programming with data frames (as the predicates `get_vars`, `add_vars` etc. are made for data frames). Equivalently efficient code could be written using vectors or matrices. + + + + +## 5. Advanced Data Aggregation +The grouped statistical programming introduced in the previous section is the fastest and most customizable way of dealing with many data transformation problems. Some tasks such as multivariate aggregations on a single data frame are however so common that this demanded for a more compact solution which efficiently integrates multiple computational steps. + +For such purposes `collap` was created as a fast multi-purpose aggregation command designed to solve complex aggregation problems efficiently and with a minimum of coding. `collap` performs optimally together with the *Fast Statistical Functions*, but will also work with other functions. + +To perform the above aggregation with `collap`, one would simply need to type: + + + +```{r, eval=NCRAN} +collap(mtcars, mpg + disp ~ cyl + vs + am, list(fmean, fsd, fmin, fmax), + w = weights, keep.col.order = FALSE) +``` + +`collap` here also saves the sum of the weights in a column. The original idea behind `collap` is however better demonstrated with a different dataset. Consider the *World Development Dataset* `wlddev` introduced in section 1: +```{r, eval=NCRAN} +head(wlddev) +``` +Suppose we would like to aggregate this data by country and decade, but keep all that categorical information. With `collap` this is extremely simple: + +```{r, eval=NCRAN} +collap(wlddev, ~ iso3c + decade) %>% head +``` +Note that the columns of the data are in the original order and also retain all their attributes. To understand this result let us briefly examine the syntax of `collap`: +```{r eval=FALSE} +collap(X, by, FUN = fmean, catFUN = fmode, cols = NULL, w = NULL, wFUN = fsum, + custom = NULL, keep.by = TRUE, keep.w = TRUE, keep.col.order = TRUE, + sort.row = TRUE, parallel = FALSE, mc.cores = 1L, + return = c("wide","list","long","long_dupl"), give.names = "auto") # , ... +``` + +It is clear that `X` is the data and `by` supplies the grouping information, which can be a one- or two-sided formula or alternatively grouping vectors, factors, lists and `GRP` objects (like the *Fast Statistical Functions*). Then `FUN` provides the function(s) applied only to numeric variables in `X` and defaults to `fmean`, while `catFUN` provides the function(s) applied only to categorical variables in `X` and defaults to `fmode`^[I.e. the most frequent value. By default a first-mode is computed.]. `keep.col.order = TRUE` specifies that the data is to be returned with the original column-order. Thus in the above example it was sufficient to supply `X` and `by` and `collap` did the rest for us. + +Suppose we only want to aggregate 4 series in this dataset. +```{r, eval=NCRAN} +# Same as collap(wlddev, ~ iso3c + decade, cols = 9:12) +collap(wlddev, PCGDP + LIFEEX + GINI + ODA ~ iso3c + decade) %>% head +``` +As before we could use multiple functions by putting them in a named or unnamed list^[If the list is unnamed, `collap` uses `all.vars(substitute(list(FUN1, FUN2, ...)))` to get the function names. Alternatively it is also possible to pass a character vector of function names.]: + +```{r, eval=NCRAN} +collap(wlddev, ~ iso3c + decade, list(fmean, fmedian, fsd), cols = 9:12) %>% head +``` + +With multiple functions, we could also request `collap` to return a long-format of the data: +```{r, eval=NCRAN} +collap(wlddev, ~ iso3c + decade, list(fmean, fmedian, fsd), cols = 9:12, return = "long") %>% head +``` + +A very important feature of `collap` to highlight at this point is the `custom` argument, which allows the user to circumvent the broad distinction into numeric and categorical data (and the associated `FUN` and `catFUN` arguments) and specify exactly which columns to aggregate using which functions: + +```{r, eval=NCRAN} +collap(wlddev, ~ iso3c + decade, + custom = list(fmean = 9:10, fmedian = 11:12, + ffirst = c("country","region","income"), + flast = c("year","date"), + fmode = "OECD")) %>% head +``` + +Since *collapse* 1.5.0, it is also possible to perform weighted aggregations and append functions with `_uw` to yield an unweighted computation: + + +```{r, eval=NCRAN} +# This aggregates using weighted mean and mode, and unweighted median, first and last value +collap(wlddev, ~ region + year, w = ~ POP, + custom = list(fmean = 9:10, fmedian_uw = 11:12, + ffirst_uw = c("country","region","income"), + flast_uw = c("year","date"), + fmode = "OECD"), keep.w = FALSE) %>% head +``` + +Next to `collap`, the functions `collapv` provides a programmers alternative allowing grouping and weighting columns to be passed using column names or indices, and the function `collapg` operates on grouped data frames. + + +## 6. Data Transformations +While `ftransform` and the `TRA` argument to the *Fast Statistical Functions* introduced earlier already provide a significant scope for transforming data, this section introduces some further specialized functions covering some advanced and common use cases, sometimes with greater efficiency. + + + + + +### 6.1 Row and Column Arithmetic +When dealing with matrices or matrix-like datasets, we often have to perform operations applying a vector to the rows or columns of the data object in question. The mathematical operations of base R (`+`, `-`, `*`, `/`, `%%`, ...) operate column-wise and are quite inefficient when used with data frames. Even in matrix code it is challenging to efficiently apply a vector `v` to the rows of a matrix `X`. + +For this reason *collapse* introduces a set of efficient row- and column-wise arithmetic operators for matrix-like objects: `%rr%`, `%r+%`, `%r-%`, `%r*%`, `%r/%`, `%cr%`, `%c+%`, `%c-%`, `%c*%`, `%c/%`. + +```{r, eval=NCRAN} +X <- qM(fselect(GGDC10S, AGR:SUM)) +v <- fsum(X) +v + +# This divides the rows of X by v +all_obj_equal(t(t(X) / v), X / outer(rep(1, nrow(X)), v), X %r/% v) + +# Base R vs. efficient base R vs. collapse +microbenchmark(t(t(X) / v), X / outer(rep(1, nrow(X)), v), X %r/% v) + +# Data frame row operations +dat <- fselect(GGDC10S, AGR:SUM) +microbenchmark(dat %r/% v, # Same thing using mapply and collapse::copyAttrib + copyAttrib(mapply(`/`, dat, v, SIMPLIFY = FALSE), dat)) + +# Data frame column arithmetic is very slow +microbenchmark(dat / dat$SUM, dat / 5, dat / dat, + dat %c/% dat$SUM, dat %c/% 5, dat %c/% dat) + +``` + + +### 6.1 Row and Column Data Apply + +`dapply` is an efficient apply command for matrices and data frames. It can be used to apply functions to rows or (by default) columns of matrices or data frames and by default returns objects of the same type and with the same attributes unless the result of each computation is a scalar. +```{r, eval=NCRAN} +dapply(mtcars, median) + +dapply(mtcars, median, MARGIN = 1) + +dapply(mtcars, quantile) + +dapply(mtcars, quantile, MARGIN = 1) %>% head + +# This is considerably more efficient than log(mtcars): +dapply(mtcars, log) %>% head +``` +`dapply` preserves the data structure: +```{r, eval=NCRAN} +is.data.frame(dapply(mtcars, log)) +is.matrix(dapply(m, log)) +``` + +It also delivers seamless conversions, i.e. you can apply functions to data frame rows or columns and return a matrix and vice-versa: + +```{r, eval=NCRAN} +identical(log(m), dapply(mtcars, log, return = "matrix")) +identical(dapply(mtcars, log), dapply(m, log, return = "data.frame")) +``` + +On data frames, the performance is comparable to `lapply`, and `dapply` is about 2x faster than `apply` for row- or column-wise operations on matrices. The most important feature is that it does not change the structure of the data at all: all attributes are preserved unless the result is a scalar and `drop = TRUE` (the default). + + + +### 6.2 Split-Apply-Combine Computing +`BY` is a generalization of `dapply` for grouped computations using functions that are not part of the *Fast Statistical Functions* introduced above. It fundamentally is a re-implementation of the `lapply(split(x, g), FUN, ...)` computing paradigm in base R, but substantially faster and more versatile than functions like `tapply`, `by` or `aggregate`. It is however not faster than *dplyr* or *data.table* for larger grouped computations on data frames requiring split-apply-combine computing. + +`BY` is S3 generic with methods for vector, matrix, data.frame and grouped_df^[`BY.grouped_df` is probably only useful together with the `expand.wide = TRUE` argument which *dplyr* does not have, because otherwise *dplyr*'s `summarise` and `mutate` are substantially faster on larger data.]. It also supports the same grouping (`g`) inputs as the *Fast Statistical Functions* (grouping vectors, factors, lists or *GRP* objects). Below the use of `BY` is demonstrated on vectors matrices and data frames. + + + +```{r, eval=NCRAN} +v <- iris$Sepal.Length # A numeric vector +f <- iris$Species # A factor + +## default vector method +BY(v, f, sum) # Sum by species, about 2x faster than tapply(v, f, sum) + +BY(v, f, quantile) # Species quantiles: by default stacked + +BY(v, f, quantile, expand.wide = TRUE) # Wide format + +## matrix method +miris <- qM(num_vars(iris)) +BY(miris, f, sum) # Also returns as matrix + +BY(miris, f, quantile) %>% head + +BY(miris, f, quantile, expand.wide = TRUE)[, 1:5] + +BY(miris, f, quantile, expand.wide = TRUE, return = "list")[1:2] # list of matrices + +## data.frame method +BY(num_vars(iris), f, sum) # Also returns a data.frame etc... + +## Conversions +identical(BY(num_vars(iris), f, sum), BY(miris, f, sum, return = "data.frame")) +identical(BY(miris, f, sum), BY(num_vars(iris), f, sum, return = "matrix")) +``` + +### 6.3 Fast (Grouped) Replacing and Sweeping-out Statistics +`TRA` is an S3 generic that efficiently transforms data by either replacing data values with supplied statistics or sweeping the statistics out of the data. It is the workhorse function behind the row-wise arithmetic operators introduced above (`%rr%`, `%r+%`, `%r-%`, `%r*%`, `%r/%`), and generalizes those to grouped operations. The 10 operations supported by `TRA` are: + +* 1 - "replace_fill" : replace and overwrite missing values (same as dplyr::mutate) + +* 2 - "replace" : replace but preserve missing values + +* 3 - "-" : subtract (center) + +* 4 - "-+" : subtract group-statistics but add average of group statistics + +* 5 - "/" : divide (scale) + +* 6 - "%" : compute percentages (divide and multiply by 100) + +* 7 - "+" : add + +* 8 - "*" : multiply + +* 9 - "%%" : modulus + +* 10 - "-%%" : subtract modulus + +`TRA` is also incorporated as an argument to all *Fast Statistical Functions*. Therefore it is only really necessary and advisable to use the `TRA` function if both aggregate statistics and transformed data are required, or to sweep out statistics otherwise obtained (e.g. regression or correlation coefficients etc.). The code below computes the column means of the iris-matrix obtained above, and uses them to demean that matrix. + +```{r, eval=NCRAN} +# Note: All examples below generalize to vectors or data frames +stats <- fmean(miris) # Saving stats + +# 6 identical ways of centering a matrix +microbenchmark(sweep(miris, 2, stats, "-"), # base R + miris - outer(rep(1, nrow(iris)), stats), + TRA(miris, fmean(miris), "-"), + miris %r-% fmean(miris), # The operator is actually a wrapper around TRA + fmean(miris, TRA = "-"), # better for any operation if the stats are not needed + fwithin(miris)) # fastest, fwithin is discussed in section 6.5 + +# Simple replacing [same as fmean(miris, TRA = "replace") or fbetween(miris)] +TRA(miris, fmean(miris), "replace") %>% head(3) + +# Simple scaling [same as fsd(miris, TRA = "/")] +TRA(miris, fsd(miris), "/") %>% head(3) +``` +All of the above is functionality also offered by `base::sweep`, but `TRA` is significantly faster. The big advantage of `TRA` is that it also supports grouped operations: +```{r, eval=NCRAN} +# Grouped centering [same as fmean(miris, f, TRA = "-") or fwithin(m, f)] +TRA(miris, fmean(miris, f), "-", f) %>% head(3) + +# Grouped replacing [same as fmean(m, f, TRA = "replace") or fbetween(m, f)] +TRA(miris, fmean(miris, f), "replace", f) %>% head(3) + +# Groupwise percentages [same as fsum(m, f, TRA = "%")] +TRA(miris, fsum(miris, f), "%", f) %>% head(3) +``` + + +As mentioned, calling the `TRA()` function does not make much sense if the same task can be performed using the *Fast Statistical Functions* or the arithmetic operators. It is however a very useful function to call for complex transformations involving grouped sweeping operations with precomputed quantities. + +### 6.4 Fast Standardizing + +The function `fscale` can be used to efficiently standardize (i.e. scale and center) data using a numerically stable online algorithm. It's structure is the same as the *Fast Statistical Functions*. The standardization-operator `STD` also exists as a wrapper around `fscale`. The difference is that by default `STD` adds a prefix to standardized variables and also provides an enhanced method for data frames (more about operators in the next section). + +```{r, eval=NCRAN} +# fscale doesn't rename columns +fscale(mtcars) %>% head(2) + +# By default adds a prefix +STD(mtcars) %>% head(2) + +# See that is works +STD(mtcars) %>% qsu + +# We can also scale and center to a different mean and standard deviation: +qsu(fscale(mtcars, mean = 5, sd = 3))[, .c(Mean, SD)] %>% t + +# Or not center at all. In that case scaling is mean-preserving, in contrast to fsd(mtcars, TRA = "/") +qsu(fscale(mtcars, mean = FALSE, sd = 3))[, .c(Mean, SD)] %>% t +``` +Scaling with `fscale / STD` can also be done groupwise and / or weighted. For example the Groningen Growth and Development Center 10-Sector Database provides annual series of value added in local currency and persons employed for 10 broad sectors in several African, Asian, and Latin American countries. +```{r, eval=NCRAN} +head(GGDC10S) +``` +If we wanted to correlate this data across countries and sectors, it needs to be standardized: +```{r, eval=NCRAN} +# Standardizing Sectors by Variable and Country +STD_GGDC10S <- STD(GGDC10S, ~ Variable + Country, cols = 6:16) +head(STD_GGDC10S) + +# Correlating Standardized Value-Added across countries +fsubset(STD_GGDC10S, Variable == "VA", STD.AGR:STD.SUM) %>% pwcor +``` + + +### 6.5 Fast Centering and Averaging +As a slightly faster alternative to `fmean(x, g, w, TRA = "-"/"-+")` or `fmean(x, g, w, TRA = "replace"/"replace_fill")`, `fwithin` and `fbetween` can be used to perform common (grouped, weighted) centering and averaging tasks (also known as *between*- and *within*- transformations in the language of panel data econometrics). `fbetween` / `fwithin` are faster than `fmean(..., TRA = ...)` because they don't materialize the full set of computed averages. The operators `W` and `B` also exist. +```{r, eval=NCRAN} +## Simple centering and averaging +fbetween(mtcars$mpg) %>% head + +fwithin(mtcars$mpg) %>% head + +all.equal(fbetween(mtcars) + fwithin(mtcars), mtcars) + +## Groupwise centering and averaging +fbetween(mtcars$mpg, mtcars$cyl) %>% head + +fwithin(mtcars$mpg, mtcars$cyl) %>% head + +all.equal(fbetween(mtcars, mtcars$cyl) + fwithin(mtcars, mtcars$cyl), mtcars) +``` +To demonstrate more clearly the utility of the operators which exists for all fast transformation and time series functions, the code below implements the task of demeaning 4 series by country and saving the country-id using the within-operator `W` as opposed to `fwithin` which requires all input to be passed externally like the *Fast Statistical Functions*. +```{r, eval=NCRAN} +# Center 4 series in this dataset by country +W(wlddev, ~ iso3c, cols = 9:12) %>% head + +# Same thing done manually using fwithin... +add_vars(get_vars(wlddev, "iso3c"), + get_vars(wlddev, 9:12) %>% + fwithin(wlddev$iso3c) %>% + add_stub("W.")) %>% head +``` +It is also possible to drop the id's in `W` using the argument `keep.by = FALSE`. `fbetween / B` and `fwithin / W` each have one additional computational option: + +```{r BWplot, fig.height=4, eval=NCRAN} +# This replaces missing values with the group-mean: Same as fmean(x, g, TRA = "replace_fill") +B(wlddev, ~ iso3c, cols = 9:12, fill = TRUE) %>% head + +# This adds back the overall mean after subtracting out group means: Same as fmean(x, g, TRA = "-+") +W(wlddev, ~ iso3c, cols = 9:12, mean = "overall.mean") %>% head + +# Visual demonstration of centering on the overall mean vs. simple centering +oldpar <- par(mfrow = c(1, 3)) +plot(iris[1:2], col = iris$Species, main = "Raw Data") # Raw data +plot(W(iris, ~ Species)[2:3], col = iris$Species, main = "Simple Centering") # Simple centering +plot(W(iris, ~ Species, mean = "overall.mean")[2:3], col = iris$Species, # Centering on overall mean: Preserves level of data + main = "Added Overall Mean") +par(oldpar) +``` + + +Another great utility of operators is that they can be employed in regression formulas in a manor that is both very efficient and pleasing to the eyes. The code below demonstrates the use of `W` and `B` to efficiently run fixed-effects regressions with `lm`. +```{r, eval=NCRAN} +# When using operators in formulas, we need to remove missing values beforehand to obtain the same results as a Fixed-Effects package +data <- wlddev %>% fselect(iso3c, year, PCGDP, LIFEEX) %>% na_omit + +# classical lm() -> iso3c is a factor, creates a matrix of 200+ country dummies. +coef(lm(PCGDP ~ LIFEEX + iso3c, data))[1:2] + +# Centering each variable individually +coef(lm(W(PCGDP, iso3c) ~ W(LIFEEX, iso3c), data)) + +# Centering the data +coef(lm(W.PCGDP ~ W.LIFEEX, W(data, PCGDP + LIFEEX ~ iso3c))) + +# Adding the overall mean back to the data only changes the intercept +coef(lm(W.PCGDP ~ W.LIFEEX, W(data, PCGDP + LIFEEX ~ iso3c, mean = "overall.mean"))) + +# Procedure suggested by Mundlak (1978) - controlling for group averages instead of demeaning +coef(lm(PCGDP ~ LIFEEX + B(LIFEEX, iso3c), data)) +``` + +In general it is recommended calling the long names (i.e. `fwithin` or `fscale` etc.) for programming since they are a bit more efficient on the R-side of things and require all input in terms of data. For all other purposes the operators are more convenient. It is important to note that the operators can do everything the functions can do (i.e. you can also pass grouping vectors or *GRP* objects to them). They are just simple wrappers that in the data frame method add 4 additional features: + +* The possibility of formula input to `by` i.e. `W(mtcars, ~ cyl)` or `W(mtcars, mpg ~ cyl)` +* They preserve grouping columns (`cyl` in the above example) when passed in a formula (default `keep.by = TRUE`) +* The ability to subset many columns using the `cols` argument (i.e. `W(mtcars, ~ cyl, cols = 4:7)` is the same as `W(mtcars, hp + drat + wt + qsec ~ cyl)`) +* They rename transformed columns by adding a prefix (default `stub = "W."`) + + + + + + + + + + + + + +### 6.6 HD Centering and Linear Prediction +Sometimes simple centering is not enough, for example if a linear model with multiple levels of fixed-effects needs to be estimated, potentially involving interactions with continuous covariates. For these purposes `fhdwithin / HDW` and `fhdbetween / HDB` were created as efficient multi-purpose functions for linear prediction and partialling out. They operate by splitting complex regression problems in 2 parts: Factors and factor-interactions are projected out using `fixest::demean`, an efficient `C++` routine for centering vectors on multiple factors, whereas continuous variables are dealt with using a standard `chol` or `qr` decomposition in base R. The examples below show the use of the `HDW` operator in manually solving a regression problem with country and time fixed effects. + +```{r, eval=NCRAN} +data$year <- qF(data$year, na.exclude = FALSE) # the country code (iso3c) is already a factor + +# classical lm() -> creates a matrix of 196 country dummies and 56 year dummies +coef(lm(PCGDP ~ LIFEEX + iso3c + year, data))[1:2] + +# Centering each variable individually +coef(lm(HDW(PCGDP, list(iso3c, year)) ~ HDW(LIFEEX, list(iso3c, year)), data)) + +# Centering the entire data +coef(lm(HDW.PCGDP ~ HDW.LIFEEX, HDW(data, PCGDP + LIFEEX ~ iso3c + year))) + +# Procedure suggested by Mundlak (1978) - controlling for averages instead of demeaning +coef(lm(PCGDP ~ LIFEEX + HDB(LIFEEX, list(iso3c, year)), data)) +``` +We may wish to test whether including time fixed-effects in the above regression actually impacts the fit. This can be done with the fast F-test: +```{r, eval=NCRAN} +# The syntax is fFtest(y, exc, X, ...). 'exc' are exclusion restrictions. +data %$% fFtest(PCGDP, year, list(LIFEEX, iso3c)) +``` +The test shows that the time fixed-effects (accounted for like year dummies) are jointly significant. + +One can also use `fhdbetween / HDB` and `fhdwithin / HDW` to project out interactions and continuous covariates. + +```{r, eval=NCRAN} +wlddev$year <- as.numeric(wlddev$year) + +# classical lm() -> full country-year interaction, -> 200+ country dummies, 200+ trends, year and ODA +coef(lm(PCGDP ~ LIFEEX + iso3c * year + ODA, wlddev))[1:2] + +# Same using HDW +coef(lm(HDW.PCGDP ~ HDW.LIFEEX, HDW(wlddev, PCGDP + LIFEEX ~ iso3c * year + ODA))) + +# example of a simple continuous problem +HDW(iris[1:2], iris[3:4]) %>% head + +# May include factors.. +HDW(iris[1:2], iris[3:5]) %>% head +``` + + + +## 7. Time Series and Panel Series +*collapse* also presents some essential contributions in the time series domain, particularly in the area of (irregular) time series, panel data and efficient and secure computations on (potentially unordered) time-dependent vectors and (unbalanced) panels. + +### 7.1 Panel Series to Array Conversions +To facilitate the exploration and access of panel data, `psmat` was created as an S3 generic to efficiently obtain matrices or 3D-arrays from panel data. +```{r psmatplot, eval=NCRAN} +mts <- psmat(wlddev, PCGDP ~ iso3c, ~ year) +str(mts) +plot(log10(mts), main = paste("Log10", vlabels(wlddev$PCGDP)), xlab = "Year") +``` + +Passing a data frame of panel series to `psmat` generates a 3D array: +```{r psarplot, eval=NCRAN} +# Get panel series array +psar <- psmat(wlddev, ~ iso3c, ~ year, cols = 9:12) +str(psar) +plot(psar) +``` +```{r psarplot2, fig.height=7, eval=NCRAN} +# Plot array of Panel Series aggregated by region: +collap(wlddev, ~ region + year, cols = 9:12) %>% + psmat( ~ region, ~ year) %>% + plot(legend = TRUE, labs = vlabels(wlddev)[9:12]) +``` +`psmat` can also output a list of panel series matrices, which can be used among other things to reshape the data with `unlist2d` (discussed in more detail in List-Processing section). +```{r, eval=NCRAN} +# This gives list of ps-matrices +psml <- psmat(wlddev, ~ iso3c, ~ year, 9:12, array = FALSE) +str(psml, give.attr = FALSE) + +# Using unlist2d, can generate a data.frame +unlist2d(psml, idcols = "Variable", row.names = "Country") %>% gv(1:10) %>% head +``` + +### 7.2 Panel Series ACF, PACF and CCF +The correlation structure of panel data can also be explored with `psacf`, `pspacf` and `psccf`. These functions are exact analogues to `stats::acf`, `stats::pacf` and `stats::ccf`. They use `fscale` to group-scale panel data by the panel-id provided, and then compute the covariance of a sequence of panel-lags (generated with `flag` discussed below) with the group-scaled level-series, dividing by the variance of the group-scaled level series. The Partial-ACF is generated from the ACF using a Yule-Walker decomposition (as in `stats::pacf`). +```{r PSACF, eval=NCRAN} +# Panel-ACF of GDP per Capita +psacf(wlddev, PCGDP ~ iso3c, ~year) +# Panel-Partial-ACF of GDP per Capia +pspacf(wlddev, PCGDP ~ iso3c, ~year) +# Panel- Cross-Correlation function of GDP per Capia and Life-Expectancy +wlddev %$% psccf(PCGDP, LIFEEX, iso3c, year) +# Multivariate Panel-auto and cross-correlation function of 3 variables: +psacf(wlddev, PCGDP + LIFEEX + ODA ~ iso3c, ~year) +``` + +### 7.3 Fast Lags and Leads +`flag` and the corresponding lag- and lead- operators `L` and `F` are S3 generics to efficiently compute lags and leads on time series and panel data. The code below shows how to compute simple lags and leads on the classic Box & Jenkins airline data that comes with R. +```{r, eval=NCRAN} +# 1 lag +L(AirPassengers) + +# 3 identical ways of computing 1 lag +all_identical(flag(AirPassengers), L(AirPassengers), F(AirPassengers,-1)) + +# 1 lead and 3 lags - output as matrix +L(AirPassengers, -1:3) %>% head + +# ... this is still a time series object: +attributes(L(AirPassengers, -1:3)) +``` +`flag / L / F` also work well on (time series) matrices. Below a regression with daily closing prices of major European stock indices is run: Germany DAX (Ibis), Switzerland SMI, France CAC, and UK FTSE. The data are sampled in business time, i.e. weekends and holidays are omitted. + +```{r mts, eval=NCRAN} +str(EuStockMarkets) + +# Data is recorded on 260 days per year, 1991-1999 +tsp(EuStockMarkets) +freq <- frequency(EuStockMarkets) + +# There is some obvious seasonality +stl(EuStockMarkets[, "DAX"], freq) %>% plot + +# 1 annual lead and 1 annual lag +L(EuStockMarkets, -1:1*freq) %>% head + +# DAX regressed on it's own 2 annual lags and the lags of the other indicators +lm(DAX ~., data = L(EuStockMarkets, 0:2*freq)) %>% summary +``` +Since v1.5.0, irregular time series are supported: +```{r, eval=NCRAN} +t <- seq_row(EuStockMarkets)[-4L] + +flag(EuStockMarkets[-4L, ], -1:1, t = t) %>% head +``` + +The main innovation of `flag / L / F` is the ability to very efficiently compute sequences of lags and leads on panel data, and that this panel data need not be ordered or balanced: + +```{r, message=TRUE, eval=NCRAN} +# This lags all 4 series +L(wlddev, 1L, ~ iso3c, ~ year, cols = 9:12) %>% head + +# Without t: Works here because data is ordered, but gives a message +L(wlddev, 1L, ~ iso3c, cols = 9:12) %>% head + +# 1 lead and 2 lags of Life Expectancy +# after removing the 4th row, thus creating an unbalanced panel +wlddev %>% ss(-4L) %>% + L(-1:2, LIFEEX ~ iso3c, ~year) %>% head +``` + +Optimal performance is obtained if the panel-id is a factor, and the time variable also a factor or an integer variable. In that case an ordering vector of the data is computed directly without any prior sorting or grouping, and the data is accessed through this vector. Thus the data need not be sorted to compute a fully-identified panel-lag, which is a key advantage to, say, the `shift` function in `data.table`. + + + +One intended area of use, especially for the operators `L` and `F`, is to substantially facilitate the implementation of dynamic models in various contexts (independent of the estimation package). Below different ways `L` can be used to estimate a dynamic panel-model using `lm` are shown: +```{r, eval=NCRAN} +# Different ways of regressing GDP on it's lags and life-Expectancy and it's lags + +# 1 - Precomputing lags +lm(PCGDP ~ ., L(wlddev, 0:2, PCGDP + LIFEEX ~ iso3c, ~ year, keep.ids = FALSE)) %>% summary + +# 2 - Ad-hoc computation in lm formula +lm(PCGDP ~ L(PCGDP, 1:2, iso3c, year) + L(LIFEEX, 0:2, iso3c, year), wlddev) %>% summary + +# 3 - Precomputing panel-identifiers +g = qF(wlddev$iso3c, na.exclude = FALSE) +t = qF(wlddev$year, na.exclude = FALSE) +lm(PCGDP ~ L(PCGDP, 1:2, g, t) + L(LIFEEX, 0:2, g, t), wlddev) %>% summary +``` + +### 7.4 Fast Differences and Growth Rates +Similarly to `flag / L / F`, `fdiff / D / Dlog` computes sequences of suitably lagged / leaded and iterated differences, quasi-differences or (quasi-)log-differences on time series and panel data, and `fgrowth / G` computes growth rates. Using again the `Airpassengers` data, the seasonal decomposition shows significant seasonality: +```{r stl, eval=NCRAN} +stl(AirPassengers, "periodic") %>% plot +``` +We can test the statistical significance of this seasonality by jointly testing a set of monthly dummies regressed on the differenced series. Given that the seasonal fluctuations are increasing in magnitude, using growth rates for the test seems more appropriate: +```{r, eval=NCRAN} +f <- qF(cycle(AirPassengers)) +fFtest(fgrowth(AirPassengers), f) +``` +The test shows significant seasonality, accounting for 87% of the variation in the growth rate of the series. We can plot the series together with the ordinary, seasonal (12-month) and deseasonalized monthly growth rate using: +```{r Gplot, eval=NCRAN} +G(AirPassengers, c(0, 1, 12)) %>% cbind(W.G1 = W(G(AirPassengers), f)) %>% + plot(main = "Growth Rate of Airpassengers") +``` +It is evident that taking the annualized growth rate also removes the periodic behavior. We can also compute second differences or growth rates of growth rates. Below a plot of the ordinary and annual first and second differences of the data: +```{r Dplot, eval=NCRAN} +D(AirPassengers, c(1,12), 1:2) %>% plot +``` +In general, both `fdiff / D` and `fgrowth / G` can compute sequences of lagged / leaded and iterated differences / growth rates. +```{r, eval=NCRAN} +# sequence of leaded/lagged and iterated differences +y = 1:10 +D(y, -2:2, 1:3) +``` +All of this also works for panel data. The code below gives an example: +```{r, eval=NCRAN} +g = rep(1:2, each = 5) +t = rep(1:5, 2) + +D(y, -2:2, 1:2, g, t) +``` +Calls to `flag / L / F`, `fdiff / D` and `fgrowth / G` can be nested. In the example below, `L.matrix` is called on the right-half ob the above sequence: +```{r, eval=NCRAN} +L(D(y, 0:2, 1:2, g, t), 0:1, g, t) +``` + + + + + + +`fdiff / D` and `fgrowth / G` also come with a data frame method, making the computation of growth-variables on datasets very easy: +```{r, eval=NCRAN} +G(GGDC10S, 1L, 1L, ~ Variable + Country, ~ Year, cols = 6:10) %>% head +``` + + + + + + + +The code below estimates a dynamic panel model regressing the 10-year growth rate of GDP per capita on it's 10-year lagged level and the 10-year growth rate of life-expectancy: + +```{r, eval=NCRAN} +summary(lm(G(PCGDP,10,1,iso3c,year) ~ + L(PCGDP,10,iso3c,year) + + G(LIFEEX,10,1,iso3c,year), data = wlddev)) +``` +To go a step further, the code below regresses the 10-year growth rate of GDP on the 10-year lagged levels and 10-year growth rates of GDP and life expectancy, with country and time-fixed effects projected out using `HDW`. The standard errors are unreliable without bootstrapping, but this example nicely demonstrates the potential for complex estimations brought by *collapse*. +```{r, eval=NCRAN} +moddat <- HDW(L(G(wlddev, c(0, 10), 1, ~iso3c, ~year, 9:10), c(0, 10), ~iso3c, ~year), ~iso3c + qF(year))[-c(1,5)] +summary(lm(HDW.L10G1.PCGDP ~. , moddat)) +``` + + + + + + +One of the inconveniences of the above computations is that it requires declaring the panel-identifiers `iso3c` and `year` again and again for each function. A great remedy here are the *plm* classes *pseries* and *pdata.frame* which *collapse* was built to support. This shows how one could run the same regression with plm: +```{r, eval=NCRAN} +pwlddev <- plm::pdata.frame(wlddev, index = c("iso3c", "year")) +moddat <- HDW(L(G(pwlddev, c(0, 10), 1, 9:10), c(0, 10)))[-c(1,5)] +summary(lm(HDW.L10G1.PCGDP ~. , moddat)) +``` +To learn more about the integration of *collapse* and *plm*, consult the corresponding vignette. + +## 8. List Processing and a Panel-VAR Example +*collapse* also provides an ensemble of list-processing functions that grew out of a necessity of working with complex nested lists of data objects. The example provided in this section is also somewhat complex, but it demonstrates the utility of these functions while also providing a nice data-transformation task. + +When summarizing the `GGDC10S` data in section 1, it was evident that certain sectors have a high share of economic activity in almost all countries in the sample. This prompts the question of whether there exist common patterns in the interaction of these important sectors across countries. One way to empirically study this could be through a (Structural) Panel-Vector-Autoregression (PSVAR) in value added with the 6 most important sectors (excluding government): Agriculture, manufacturing, wholesale and retail trade, construction, transport and storage and finance and real estate. + +For this we will use the *vars* package^[I noticed there is a *panelvar* package, but I am more familiar with *vars* and *panelvar* can be pretty slow in my experience. We also have about 50 years of data here, so dynamic panel bias is not a big issue.]. Since *vars* natively does not support panel-VAR, we need to create the central *varest* object manually and then run the `SVAR` function to impose identification restrictions. We start with exploring and harmonizing the data: + + + + + + + + + + + + + + + + + + + + + + + + + + + +```{r AGRmat, warning=FALSE, message=FALSE, eval=NCRAN} +library(vars) +# The 6 most important non-government sectors (see section 1) +sec <- c("AGR", "MAN", "WRT", "CON", "TRA", "FIRE") +# This creates a data.frame containing the value added of the 6 most important non-government sectors +data <- fsubset(GGDC10S, Variable == "VA", c("Country", "Year", sec)) %>% + na_omit(cols = sec) +# Let's look at the log VA in agriculture across countries: +AGRmat <- psmat(data, AGR ~ Country, ~ Year, transpose = TRUE) %>% log # Converting to panel series matrix +plot(AGRmat) +``` +The plot shows quite some heterogeneity both in the levels (VA is in local currency) and in trend growth rates. In the panel-VAR estimation we are only really interested in the sectoral relationships within countries. Thus we need to harmonize this sectoral data further. One way would be taking growth rates or log-differences of the data, but VAR's are usually estimated in levels unless the data are cointegrated (and value added series do not, in general, exhibit unit-root behavior). Thus to harmonize the data further we opt for subtracting a country-sector specific cubic trend from the data in logs: + +```{r AGRmatplot, eval=NCRAN} +# Subtracting a country specific cubic growth trend +AGRmat <- dapply(AGRmat, fhdwithin, poly(seq_row(AGRmat), 3), fill = TRUE) + +plot(AGRmat) +``` +This seems to have done a decent job in curbing most of the heterogeneity. Some series however have a high variance around that cubic trend. Therefore a final step is to standardize the data to bring the variances in line: + +```{r AGRmatplot2, eval=NCRAN} +# Standardizing the cubic log-detrended data +AGRmat <- fscale(AGRmat) +plot(AGRmat) +``` + +Now this looks pretty good, and is about the most we can do in terms of harmonization without differencing the data. The code below applies these transformations to all sectors: + + +```{r psmatplot2, fig.height=7, eval=NCRAN} +# Taking logs +settransformv(data, 3:8, log) +# Projecting out country FE and cubic trends from complete cases +gv(data, 3:8) <- HDW(data, ~ qF(Country)*poly(Year, 3), fill = TRUE) +# Scaling +gv(data, 3:8) <- STD(data, ~ Country, cols = 3:8, keep.by = FALSE) + +# Check the plot +psmat(data, ~ Country, ~ Year) %>% plot +``` + +Since the data is annual, let us estimate the Panel-VAR with one lag: + +```{r, eval=NCRAN} +# This adds one lag of all series to the data +add_vars(data) <- L(data, 1, ~ Country, ~ Year, keep.ids = FALSE) +# This removes missing values from all but the first row and drops identifier columns (vars is made for time series without gaps) +data <- rbind(ss(data, 1, -(1:2)), na_omit(ss(data, -1, -(1:2)))) +head(data) +``` + + +Having prepared the data, the code below estimates the panel-VAR using `lm` and creates the *varest* object: + + + + + + + + + + + + + + + +```{r, eval=NCRAN} +# saving the names of the 6 sectors +nam <- names(data)[1:6] + +pVAR <- list(varresult = setNames(lapply(seq_len(6), function(i) # list of 6 lm's each regressing + lm(as.formula(paste0(nam[i], "~ -1 + . ")), # the sector on all lags of + get_vars(data, c(i, 7:fncol(data))))), nam), # itself and other sectors, removing the missing first row + datamat = ss(data, -1), # The full data containing levels and lags of the sectors, removing the missing first row + y = do.call(cbind, get_vars(data, 1:6)), # Only the levels data as matrix + type = "none", # No constant or tend term: We harmonized the data already + p = 1, # The lag-order + K = 6, # The number of variables + obs = fnrow(data)-1, # The number of non-missing obs + totobs = fnrow(data), # The total number of obs + restrictions = NULL, + call = quote(VAR(y = data))) + +class(pVAR) <- "varest" +``` +The significant serial-correlation test below suggests that the panel-VAR with one lag is ill-identified, but the sample size is also quite large so the test is prone to reject, and the test is likely also still picking up remaining cross-sectional heterogeneity. For the purposes of this vignette this shall not bother us. +```{r, eval=NCRAN} +serial.test(pVAR) +``` + By default the VAR is identified using a Choleski ordering of the direct impact matrix in which the first variable (here Agriculture) is assumed to not be directly impacted by any other sector in the current period, and this descends down to the last variable (Finance and Real Estate), which is assumed to be impacted by all other sectors in the current period. For structural identification it is usually necessary to impose restrictions on the direct impact matrix in line with economic theory. It is difficult to conceive theories on the average worldwide interaction of broad economic sectors, but to aid identification we will compute the correlation matrix in growth rates and restrict the lowest coefficients to be 0, which should be better than just imposing a random Choleski ordering. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +```{r, eval=NCRAN} +# This computes the pairwise correlations between standardized sectoral growth rates across countries +corr <- fsubset(GGDC10S, Variable == "VA") %>% # Subset rows: Only VA + fgroup_by(Country) %>% # Group by country + get_vars(sec) %>% # Select the 6 sectors + fgrowth %>% # Compute Sectoral growth rates (a time-variable can be passed, but not necessary here as the data is ordered) + fscale %>% # Scale and center (i.e. standardize) + pwcor # Compute Pairwise correlations + +corr + +# We need to impose K*(K-1)/2 = 15 (with K = 6 variables) restrictions for identification +corr[corr <= sort(corr)[15]] <- 0 +corr + +# The rest is unknown (i.e. will be estimated) +corr[corr > 0 & corr < 1] <- NA + +# Using a diagonal shock vcov matrix (standard assumption for SVAR) +Bmat <- diag(6) +diag(Bmat) <- NA + + +# This estimates the Panel-SVAR using Maximum Likelihood: +pSVAR <- SVAR(pVAR, Amat = unclass(corr), Bmat = Bmat, estmethod = "direct") +pSVAR +``` + +Now this object is quite involved, which brings us to the actual subject of this section: +```{r, eval=NCRAN} +# psVAR$var$varresult is a list containing the 6 linear models fitted above, it is not displayed in full here. +str(pSVAR, give.attr = FALSE, max.level = 3) +``` + +### 8.1 List Search and Identification + +When dealing with such a list-like object, we might be interested in its complexity by measuring the level of nesting. This can be done with `ldepth`: +```{r, eval=NCRAN} +# The list-tree of this object has 5 levels of nesting +ldepth(pSVAR) + +# This data has a depth of 1, thus this dataset does not contain list-columns +ldepth(data) +``` +Further we might be interested in knowing whether this list-object contains non-atomic elements like call, terms or formulas. The function `is.regular` in the *collapse* package checks if an object is atomic or list-like, and the recursive version `is_unlistable` checks whether all objects in a nested structure are atomic or list-like: +```{r, eval=NCRAN} +# Is this object composed only of atomic elements e.g. can it be unlisted? +is_unlistable(pSVAR) +``` +Evidently this object is not unlistable, from viewing its structure we know that it contains several call and terms objects. We might also want to know if this object saves some kind of residuals or fitted values. This can be done using `has_elem`, which also supports regular expression search of element names: +```{r, eval=NCRAN} +# Does this object contain an element with "fitted" in its name? +has_elem(pSVAR, "fitted", regex = TRUE) + +# Does this object contain an element with "residuals" in its name? +has_elem(pSVAR, "residuals", regex = TRUE) +``` +We might also want to know whether the object contains some kind of data-matrix. This can be checked by calling: +```{r, eval=NCRAN} +# Is there a matrix stored in this object? +has_elem(pSVAR, is.matrix) +``` + +These functions can sometimes be helpful in exploring objects. A much greater advantage of having functions to search and check lists is the ability to write more complex programs with them (which will not be demonstrated here). + +### 8.2 List Subsetting +Having gathered some information about the `pSVAR` object, this section introduces several extractor functions to pull out elements from such lists: `get_elem` can be used to pull out elements from lists in a simplified format^[The *vars* package also provides convenient extractor functions for some quantities, but `get_elem` of course works in a much broader range of contexts.]. +```{r PVARplot, eval=NCRAN} +# This is the path to the residuals from a single equation +str(pSVAR$var$varresult$STD.HDW.AGR$residuals) + +# get_elem gets the residuals from all 6 equations and puts them in a top-level list +resid <- get_elem(pSVAR, "residuals") +str(resid, give.attr = FALSE) + +# Quick conversion to matrix and plotting +qM(resid) %>% plot.ts(main = "Panel-VAR Residuals") +``` +Similarly, we could pull out and plot the fitted values: +```{r PVARfittedplot, eval=NCRAN} +# Regular expression search and retrieval of fitted values +get_elem(pSVAR, "^fi", regex = TRUE) %>% qM %>% + plot.ts(main = "Panel-VAR Fitted Values") +``` +Below the main quantities of interest in SVAR analysis are computed: The impulse response functions (IRF's) and forecast error variance decompositions (FEVD's): +```{r, eval=NCRAN} +# This computes orthogonalized impulse response functions +pIRF <- irf(pSVAR) +# This computes the forecast error variance decompositions +pFEVD <- fevd(pSVAR) +``` +The `pIRF` object contains the IRF's with lower and upper confidence bounds and some atomic elements providing information about the object: +```{r, eval=NCRAN} +# See the structure of a vars IRF object: +str(pIRF, give.attr = FALSE) +``` +We could separately access the top-level atomic or list elements using `atomic_elem` or `list_elem`: +```{r, eval=NCRAN} +# Pool-out top-level atomic elements in the list +str(atomic_elem(pIRF)) +``` +There are also recursive versions of `atomic_elem` and `list_elem` named `reg_elem` and `irreg_elem` which can be used to split nested lists into the atomic and non-atomic parts. These are not covered in this vignette. + +### 8.3 Recursive Apply and Unlisting in 2D +*vars* supplies simple `plot` methods for IRF and FEVD objects using base graphics. + + + + + + +In this section we however want to generate nicer and more compact plots using `ggplot2`, and also compute some statistics on the IRF data. Starting with the latter, the code below sums the 10-period impulse response coefficients of each sector in response to each sectoral impulse and stores them in a data frame: +```{r, eval=NCRAN} +# Computing the cumulative impact after 10 periods +list_elem(pIRF) %>% # Pull out the sublist elements containing the IRF coefficients + CI's + rapply2d(function(x) round(fsum(x), 2)) %>% # Recursively apply the column-sums to coefficient matrices (could also use colSums) + unlist2d(c("Type", "Impulse")) # Recursively row-bind the result to a data.frame and add identifier columns +``` +The function `rapply2d` used here is very similar to `base::rapply`, with the difference that the result is not simplified / unlisted by default and that `rapply2d` will treat data frames like atomic objects and apply functions to them. `unlist2d` is an efficient generalization of `base::unlist` to 2-dimensions, or one could also think of it as a recursive generalization of `do.call(rbind, ...)`. It efficiently unlists nested lists of data objects and creates a data frame with identifier columns for each level of nesting on the left, and the content of the list in columns on the right. + +The above cumulative coefficients suggest that Agriculture responds mostly to it's own shock, and a bit to shocks in Manufacturing and Wholesale and Retail Trade. Similar patters can be observed for Manufacturing and Wholesale and Retail Trade. Thus these three sectors seem to be interlinked in most countries. The remaining three sectors are mostly affected by their own dynamics, but also by Agriculture and Manufacturing. + + + +Let us use `ggplot2` to create nice compact plots of the IRF's and FEVD's. For this task `unlist2d` will again be extremely helpful in creating the data frame representation required. Starting with the IRF's, we will discard the upper and lower bounds and just use the impulses: +```{r IRFplot, eval=NCRAN} +# This binds the matrices after adding integer row-names to them to a data.table + +data <- pIRF$irf %>% # Get only the coefficient matrices, discard the confidence bounds + unlist2d(idcols = "Impulse", # Recursive unlisting to data.table creating a factor id-column + row.names = "Time", # and saving generated rownames in a variable called 'Time' + id.factor = TRUE, # -> Create Id column ('Impulse') as factor + DT = TRUE) # -> Output as data.table (default is data.frame) + +head(data, 3) + +data <- melt(data, 1:2) # Using data.table's melt +head(data, 3) + +# Here comes the plot: + ggplot(data, aes(x = Time, y = value, color = Impulse)) + + geom_line(size = I(1)) + geom_hline(yintercept = 0) + + labs(y = NULL, title = "Orthogonal Impulse Response Functions") + + scale_color_manual(values = rainbow(6)) + + facet_wrap(~ variable) + + theme_light(base_size = 14) + + scale_x_continuous(breaks = scales::pretty_breaks(n=7), expand = c(0, 0))+ + scale_y_continuous(breaks = scales::pretty_breaks(n=7), expand = c(0, 0))+ + theme(axis.text = element_text(colour = "black"), + plot.title = element_text(hjust = 0.5), + strip.background = element_rect(fill = "white", colour = NA), + strip.text = element_text(face = "bold", colour = "grey30"), + axis.ticks = element_line(colour = "black"), + panel.border = element_rect(colour = "black")) + +``` +To round things off, below we do the same thing for the FEVD's: +```{r FEVDplot, eval=NCRAN} +data <- unlist2d(pFEVD, idcols = "variable", row.names = "Time", id.factor = TRUE, DT = TRUE) %>% + melt(c("variable", "Time"), variable.name = "Sector") +head(data, 3) + +# Here comes the plot: + ggplot(data, aes(x = Time, y = value, fill = Sector)) + + geom_area(position = "fill", alpha = 0.8) + + labs(y = NULL, title = "Forecast Error Variance Decompositions") + + scale_fill_manual(values = rainbow(6)) + + facet_wrap(~ set_class(variable, "factor")) + + theme_linedraw(base_size = 14) + + scale_x_continuous(breaks = scales::pretty_breaks(n=7), expand = c(0, 0))+ + scale_y_continuous(breaks = scales::pretty_breaks(n=7), expand = c(0, 0))+ + theme(plot.title = element_text(hjust = 0.5), + strip.background = element_rect(fill = "white", colour = NA), + strip.text = element_text(face = "bold", colour = "grey30")) + +``` +Both the IRF's and the FEVD's show that Agriculture, Manufacturing and Wholesale and Retail Trade are broadly interlinked, even in the short-run, and that Agriculture and Manufacturing explain some of the variation in Construction, Transport and Finance at longer horizons. Of course the identification strategy used for this example was not really structural or theory based. A better strategy could be to aggregate the World Input-Output Database and use those shares for identification (which would be another very nice *collapse* exercise, but not for this vignette). + + + + + +## Going Further +To learn more about *collapse*, just examine the documentation `help("collapse-documentation")` which is organized, extensive and contains lots of examples. + +```{r, echo=FALSE} +options(oldopts) +``` + +## References + +Timmer, M. P., de Vries, G. J., & de Vries, K. (2015). "Patterns of Structural Change in Developing Countries." . In J. Weiss, & M. Tribe (Eds.), *Routledge Handbook of Industry and Development.* (pp. 65-83). Routledge. + +Mundlak, Yair. 1978. “On the Pooling of Time Series and Cross Section Data.” *Econometrica* 46 (1): 69–85. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vignettes/figure/AGRmat-1.png b/vignettes/figure/AGRmat-1.png new file mode 100644 index 0000000000000000000000000000000000000000..d0d926f1f936e598a9b39ef3b1a6446f09dfd6f1 GIT binary patch literal 46961 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%0DgW?&u*@wqbRBB)$80-t&RcXwpkKgYxMPf6gF? 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 literal 0 HcmV?d00001 diff --git a/vignettes/figure/BWplot-1.png b/vignettes/figure/BWplot-1.png new file mode 100644 index 0000000000000000000000000000000000000000..59828e88de4249afbbe9be270bfb2c86f5b6ac81 GIT binary patch literal 40990 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:?-CMmm$ys0&pLGO|+ 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 z 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

of{`i3e?KLH| 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 literal 0 HcmV?d00001 diff --git a/vignettes/figure/GRPplot-1.png b/vignettes/figure/GRPplot-1.png new file mode 100644 index 0000000000000000000000000000000000000000..94d8f2f4697f835c600040d90f0f5321e61d0d4e GIT binary patch literal 26603 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 literal 0 HcmV?d00001 diff --git a/vignettes/figure/Gplot-1.png b/vignettes/figure/Gplot-1.png new file mode 100644 index 0000000000000000000000000000000000000000..fb2b570bc3ec9d3671aad2998ab55d5507016b39 GIT binary patch literal 49365 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 so?N7jdSbgTUO(_PVR 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 B#4rE= literal 0 HcmV?d00001 diff --git a/vignettes/figure/PLMGDPmat-2.png b/vignettes/figure/PLMGDPmat-2.png new file mode 100644 index 0000000000000000000000000000000000000000..5afd5e0b0e6078ba3b7746bf49b6ae850b755515 GIT binary patch literal 68267 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

lNPS=o%$rcM&#gWE7uA>9`lN9PJ(-C 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�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 N;OXk;vd$@?2>|d`!l?iN literal 0 HcmV?d00001 diff --git a/vignettes/figure/mts-1.png b/vignettes/figure/mts-1.png new file mode 100644 index 0000000000000000000000000000000000000000..c87082a2fe2782e51a3c4cd29bc856633bc251c7 GIT binary patch literal 41511 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 L&{2P%Ue7Z%2$yl^Gd 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 XUQ3n?C2SE1{83fZRH&9S5B>iDYqZQ2 literal 0 HcmV?d00001 diff --git a/vignettes/figure/plm_psccf-1.png b/vignettes/figure/plm_psccf-1.png new file mode 100644 index 0000000000000000000000000000000000000000..5e9d12f61c9fb9824fc4b9d5d62ca300e1927a84 GIT binary patch literal 17418 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 literal 0 HcmV?d00001 diff --git a/vignettes/figure/plm_pspacf-1.png b/vignettes/figure/plm_pspacf-1.png new file mode 100644 index 0000000000000000000000000000000000000000..c279d61e33188d18d5254c30df61e4f508941e8d GIT binary patch literal 47708 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%0DCkAs6NGy4 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 I4b+qW1ExYvH2?qr literal 0 HcmV?d00001 diff --git a/vignettes/figure/psarplot2-1.png b/vignettes/figure/psarplot2-1.png new file mode 100644 index 0000000000000000000000000000000000000000..8424d2edf26ee7b085cd2b5b38509b96bc09991c GIT binary patch literal 90488 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 literal 0 HcmV?d00001 diff --git a/vignettes/figure/psmatplot-1.png b/vignettes/figure/psmatplot-1.png new file mode 100644 index 0000000000000000000000000000000000000000..a04d99afe4e830d0661d5d8e95efb2f6cc4b69bb GIT binary patch literal 112094 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 Q7{EtCPDM6f+R*?106&xAApigX literal 0 HcmV?d00001 diff --git a/vignettes/figure/psmatplot2-1.png b/vignettes/figure/psmatplot2-1.png new file mode 100644 index 0000000000000000000000000000000000000000..8dfaca4dcb59ab5dfc29d32917e9ebb7a0b5aca2 GIT binary patch literal 152506 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

cT{R8-Owd)>N5Iqpb?1?qh5 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�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�PB(v%EZ)E)4rdJp;piMSOV;C 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 HVsifhu@i)! literal 0 HcmV?d00001 diff --git a/vignettes/figure/pwlddev_plot-1.png b/vignettes/figure/pwlddev_plot-1.png new file mode 100644 index 0000000000000000000000000000000000000000..9a40ff7eeb05db790a2b3b36543709c4e1423789 GIT binary patch literal 194305 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 DA3tS7 literal 0 HcmV?d00001 diff --git a/vignettes/figure/scplot_BWA-1.png b/vignettes/figure/scplot_BWA-1.png new file mode 100644 index 0000000000000000000000000000000000000000..32024249c2ea1b85cc336dedb0a313df3f4e37f9 GIT binary patch literal 72189 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 Date: Mon, 20 May 2024 16:57:56 +0200 Subject: [PATCH 7/7] Add revdep, .DS_Store, and original vignettes. --- .Rbuildignore | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.Rbuildignore b/.Rbuildignore index c1d786da..cea75f38 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -26,3 +26,8 @@ man/figures _cache$ _snaps ^CITATION\.cff$ +^\.DS_Store$ +^revdep$ +\.orig$ + +

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

&vwq|JR>wbMliBW`R(b}Hz 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 LW`t6G`^f(QZzEI+ literal 0 HcmV?d00001 diff --git a/vignettes/figure/PSACF-1.png b/vignettes/figure/PSACF-1.png new file mode 100644 index 0000000000000000000000000000000000000000..8872e18279b216659884da087efdae7275a0612b GIT binary patch literal 14907 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 literal 0 HcmV?d00001 diff --git a/vignettes/figure/PSACF-2.png b/vignettes/figure/PSACF-2.png new file mode 100644 index 0000000000000000000000000000000000000000..c0cf6e6959dd2b5f5b0f47de5655748e435cc296 GIT binary patch literal 15546 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 NRyI;2#P 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 literal 0 HcmV?d00001 diff --git a/vignettes/figure/PSACF-4.png b/vignettes/figure/PSACF-4.png new file mode 100644 index 0000000000000000000000000000000000000000..57bac7e6fc9b6bc13cddfcf5431d2ed6231fbe9e GIT binary patch literal 33902 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 literal 0 HcmV?d00001 diff --git a/vignettes/figure/PVARfittedplot-1.png b/vignettes/figure/PVARfittedplot-1.png new file mode 100644 index 0000000000000000000000000000000000000000..da0c0615eaffbca01a98aa114deca9176db91b0e GIT binary patch literal 89681 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 )SpP;&3cBYZLBBI zaHL3@?ZPs2qTCIF|JK?071~9zKp%f3`3pIy8S^ciqkEl-LT&E50B_6&D(*IiyhSD5 zY+8Kh2>3q*|96I4ZGFKZPRz2qcW|a|xYN;kWTIfcM+h73PITngJP-Oc?D$N)#jXaP zvDeQF7eBFV9Kj!8Fk=sm(fv32LC#yd`kg{itc392spwNy;PyLxLhY1TG0~s(@74ws zAE1=@3v?>1?>w|hTK96x1%zr42HaEK71RdeU&!>RYhRQDb(_QzCVFMml3Q+DB6Ss^ zIxK@0>{Lfb*G~63?TK0;z4dRU1-?uM5KEW+rxDA)2nbe|*9>d7SwF|YX$-lWbu=7m z60oqwTfFVCxtr0%F{z=@_*_0fAdv}FC|Lg!rndfH5Z(Nn+{qOzAQGWkGm5^>SkheL zX##=yDXvC>78fWJsF*^?_-NmvFZ<5y2Ta)kq4qbyEZ-Fk!?Qb9&qw!fhSJph`OS3L z8b+Q;8R?j(hon<9sajmc=pBLj-=_-Ww1hCgR{tK8y9Q%i{ zy8f40%9EE8xgg+0>-kqNfs553ZCWYcRIy}zB;OBB>)h+MS;VZ6y3d%W4l2hZ%+S2m zy80xb1S3DzJ3vLa)pS+3vLfRxu7F<4sLs9nev0i|>}}^!yQG5Cb=E-ecDS8{lj1