mimic {anscombiser} | R Documentation |
Modify a dataset to mimic another dataset
Description
Modifies a dataset x
so that it shares sample summary statistics with
a target dataset x2
.
Usage
mimic(x, x2, idempotent = TRUE, ...)
Arguments
x , x2 |
Numeric matrices or data frames. Each column contains observations
on a different variable. Missing observations are not allowed.
|
idempotent |
A logical scalar. If |
... |
Additional arguments to be passed to |
Details
The input dataset x
is modified by shifting, scaling and rotating
it so that its sample mean and covariance matrix match those of the target
dataset x2
.
The rotation is based on the square root of the sample correlation matrix.
If idempotent = FALSE
then this square root is based on the Cholesky
decomposition this matrix, using chol
. If idempotent = TRUE
the
square root is based on the spectral decomposition of this matrix, using
the output from eigen
. This is a minimal rotation square root,
which means that if the input data x
already have the
exactly/approximately the required summary statistics then the returned
dataset is exactly/approximately the same as the target dataset x2
.
Value
An object of class c("anscombe", "matrix", "array")
with
plot and print methods. This returned
dataset has the following summary statistics in common with x2
.
The sample means of each variable.
The sample variances of each variable.
The sample correlation matrix.
The estimated regression coefficients from least squares linear regressions of each variable on each other variable.
The target and new summary statistics are returned as attributes
old_stats
and new_stats
.
If x2
is supplied then it is returned as a attribute old_data
.
See Also
anscombise
modifies a dataset so that it shares sample summary
statistics with Anscombe's quartet.
Examples
### 2D examples
# The UK and a dinosaur
got_maps <- requireNamespace("maps", quietly = TRUE)
got_datasauRus <- requireNamespace("datasauRus", quietly = TRUE)
if (got_maps && got_datasauRus) {
library(maps)
library(datasauRus)
dino <- datasaurus_dozen_wide[, c("dino_x", "dino_y")]
UK <- mapdata("UK")
new_UK <- mimic(UK, dino)
plot(new_UK)
}
# Trump and a dinosaur
if (got_datasauRus) {
library(datasauRus)
dino <- datasaurus_dozen_wide[, c("dino_x", "dino_y")]
new_dino <- mimic(dino, trump)
plot(new_dino)
}
## Examples of passing summary statistics
# The default is zero mean, unit variance and no correlation
new_faithful <- mimic(faithful)
plot(new_faithful)
# Change the correlation
mat <- matrix(c(1, -0.9, -0.9, 1), 2, 2)
new_faithful <- mimic(faithful, correlation = mat)
plot(new_faithful)
### A 3D example
new_randu <- mimic(datasets::randu, datasets::trees)
# The samples summary statistics are equal
get_stats(new_randu)
get_stats(datasets::trees)