Type: | Package |
Title: | Sketching of Data via Random Subspace Embeddings |
Version: | 0.1.2 |
Description: | Construct sketches of data via random subspace embeddings. For more details, see the following papers. Lee, S. and Ng, S. (2022). "Least Squares Estimation Using Sketched Data with Heteroskedastic Errors," Proceedings of the 39th International Conference on Machine Learning (ICML22), 162:12498-12520. Lee, S. and Ng, S. (2020). "An Econometric Perspective on Algorithmic Subsampling," Annual Review of Economics, 12(1): 45–80. |
License: | GPL-3 |
Encoding: | UTF-8 |
LazyData: | true |
RoxygenNote: | 7.2.0 |
Imports: | stats, MASS, Rcpp (≥ 1.0.7), phangorn (≥ 2.8.1) |
LinkingTo: | Rcpp |
Suggests: | knitr, rmarkdown, testthat (≥ 3.0.0), lmtest (≥ 0.9), ivreg (≥ 0.6), sandwich (≥ 3.0) |
VignetteBuilder: | knitr |
Depends: | R (≥ 4.1.0) |
URL: | https://github.com/sokbae/sketching/ |
BugReports: | https://github.com/sokbae/sketching/issues |
Config/testthat/edition: | 3 |
NeedsCompilation: | yes |
Packaged: | 2022-09-06 21:44:00 UTC; sokbaelee |
Author: | Sokbae Lee [aut, cre], Serena Ng [aut] |
Maintainer: | Sokbae Lee <sl3841@columbia.edu> |
Repository: | CRAN |
Date/Publication: | 2022-09-07 07:50:02 UTC |
AK
Description
Angrist-Krueger (AK) dataset is a data extract from US Censuses that was analyzed in Angrist and Krueger (1991). In particular, the current dataset is from the 1970 Census, consisting of men born 1920-1929 (Year 1929 is the omitted cohort group).
Usage
AK
Format
A data frame with 247,199 rows and 42 variables:
- LWKLYWGE
Outcome: log weekly wages
- EDUC
Covariate of interest: years of education
- YR20
Indicator variable for the year of birth: equals 1 if yob = 1920
- YR21
Indicator variable for the year of birth: equals 1 if yob = 1921
- YR22
Indicator variable for the year of birth: equals 1 if yob = 1922
- YR23
Indicator variable for the year of birth: equals 1 if yob = 1923
- YR24
Indicator variable for the year of birth: equals 1 if yob = 1924
- YR25
Indicator variable for the year of birth: equals 1 if yob = 1925
- YR26
Indicator variable for the year of birth: equals 1 if yob = 1926
- YR27
Indicator variable for the year of birth: equals 1 if yob = 1927
- YR28
Indicator variable for the year of birth: equals 1 if yob = 1928
- QTR120
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR121
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR122
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR123
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR124
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR125
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR126
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR127
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR128
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR129
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR220
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR221
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR222
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR223
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR224
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR225
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR226
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR227
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR228
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR229
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR320
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR321
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR322
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR323
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR324
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR325
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR326
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR327
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR328
Quarter-of-birth indicator interacted with year-of-birth indicator
- QTR329
Quarter-of-birth indicator interacted with year-of-birth indicator
- CNST
Constant
Source
The dataset is publicly available on Joshua Angrist's website at https://economics.mit.edu/faculty/angrist/data1/data/angkru1991/.
References
Angrist, J.D. and Krueger, A.B., 1991. Does compulsory school attendance affect schooling and earnings? Quarterly Journal of Economics, 106(4), pp.979–1014. doi:10.2307/2937954
Simulating observations from the data-generating process considered in Lee and Ng (2022)
Description
Simulates observations from the data-generating process considered in Lee and Ng (2022)
Usage
simulation_dgp(n, d, hetero = FALSE)
Arguments
n |
sample size |
d |
dimension of regressors from a multivariate normal distribution |
hetero |
TRUE if the conditional variance of the error term is heteroskedastic and FALSE if it is homoskedastic (default: FALSE) |
Value
An S3 object has the following elements.
Y |
n observations of outcomes |
X |
n times d matrix of regressors |
beta |
d dimensional vector of coefficients |
References
Lee, S. and Ng, S. (2022). "Least Squares Estimation Using Sketched Data with Heteroskedastic Errors," arXiv:2007.07781.
Examples
data <- simulation_dgp(100, 5, hetero = TRUE)
y <- data$Y
x <- data$X
model <- lm(y ~ x)
Sketch
Description
Provides a subsample of data using sketches
Usage
sketch(data, m, method = "unif")
Arguments
data |
(n times d)-dimensional matrix of data. |
m |
(expected) subsample size that is less than n |
method |
method for sketching: "unif" uniform sampling with replacement (default); "unif_without_replacement" uniform sampling without replacement; "bernoulli" Bernoulli sampling; "gaussian" Gaussian projection; "countsketch" CountSketch; "srht" subsampled randomized Hadamard transform; "fft" subsampled randomized trigonometric transforms using the real part of fast discrete Fourier transform (stats::ftt). |
Value
(m times d)-dimensional matrix of data For Bernoulli sampling, the number of rows is not necessarily m.
Examples
## Least squares: sketch and solve
# setup
n <- 1e+6 # full sample size
d <- 5 # dimension of covariates
m <- 1e+3 # sketch size
# generate psuedo-data
X <- matrix(stats::rnorm(n*d), nrow = n, ncol = d)
beta <- matrix(rep(1,d), nrow = d, ncol = 1)
eps <- matrix(stats::rnorm(n), nrow = n, ncol = 1)
Y <- X %*% beta + eps
intercept <- matrix(rep(1,n), nrow = n, ncol = 1)
# full sample including the intercept term
fullsample <- cbind(Y,intercept,X)
# generate a sketch using CountSketch
s_cs <- sketch(fullsample, m, "countsketch")
# solve without the intercept
ls_cs <- lm(s_cs[,1] ~ s_cs[,2] - 1)
# generate a sketch using SRHT
s_srht <- sketch(fullsample, m, "srht")
# solve without the intercept
ls_srht <- lm(s_srht[,1] ~ s_srht[,2] - 1)
Sketch using leverage score type sampling
Description
Provides a subsample of data using sketches
Usage
sketch_leverage(data, m, method = "leverage")
Arguments
data |
(n times d)-dimensional matrix of data. The first column needs to be a vector of the dependent variable (Y) |
m |
subsample size that is less than n |
method |
method for sketching: "leverage" leverage score sampling using X (default); "root_leverage" square-root leverage score sampling using X. |
Value
An S3 object has the following elements.
subsample |
(m times d)-dimensional matrix of data |
prob |
m-dimensional vector of probabilities |
References
Ma, P., Zhang, X., Xing, X., Ma, J. and Mahoney, M.. (2020). Asymptotic Analysis of Sampling Estimators for Randomized Numerical Linear Algebra Algorithms. Proceedings of the Twenty Third International Conference on Artificial Intelligence and Statistics, PMLR 108:1026-1035.
Examples
## Least squares: sketch and solve
# setup
n <- 1e+6 # full sample size
d <- 5 # dimension of covariates
m <- 1e+3 # sketch size
# generate psuedo-data
X <- matrix(stats::rnorm(n*d), nrow = n, ncol = d)
beta <- matrix(rep(1,d), nrow = d, ncol = 1)
eps <- matrix(stats::rnorm(n), nrow = n, ncol = 1)
Y <- X %*% beta + eps
intercept <- matrix(rep(1,n), nrow = n, ncol = 1)
# full sample including the intercept term
fullsample <- cbind(Y,intercept,X)
# generate a sketch using leverage score sampling
s_lev <- sketch_leverage(fullsample, m, "leverage")
# solve without the intercept with weighting
ls_lev <- lm(s_lev$subsample[,1] ~ s_lev$subsample[,2] - 1, weights = s_lev$prob)