This function validates the user-inputted target correlation matrix for the chosen number of Poisson,
binary, ordinal, and continuous (via Fleishman polynomials) random variables.
The correlation matrix follows the order of Poisson, binary, ordinal, continuous.
The number of Poisson random variables desired. Defaults to 0.
no.bin
The number of binary random variables desired. Defaults to 0.
no.ord
The number of ordinal random variables desired. Defaults to 0.
no.nonn
The number of continuous random variables desired, created using Fleishman polynomials. Defaults to 0.
pois.list
A list of the lambda values, which must be greater than 0.
Length will be equal to no.pois, or an error will be thrown.
Defaults to an empty list.
bin.list
A list of vectors containing the probabilities for each
variable. Each vector should have 2 entries between 0 and 1
inclusive, and sum to 1. Length must be equal to no.bin.
Defaults to an empty list.
ord.list
A list of vectors containing the probabilities for each
variable. If is.ord.list.cum is TRUE, each vector should have
entries between 0 and 1, in increasing order. Otherwise, each
vector should have entries between 0 and 1 inclusive that sum
to 1. Length must be equal to no.ord. Defaults to an empty list.
is.ord.list.cum
Flag for whether the ordinal list supplied contains
cumulative probabilities. Defaults to FALSE.
nonn.list
A list of vectors containing the first four moments of each
variable, in order. If only two parameters are supplied, they
will be assumed to be skew and excess kurtosis, with mean = 0
and variance = 1. If only three parameters are supplied, they
will be assumed to be variance, skew and excess kurtosis, with
mean = 0. If less than two parameters or more than four
parameters are supplied for any variable, an error will be
raised. Variance must be positive, and excess kurtosis must be
greater than or equal to skew^2-2. Length must be equal to
no.nonn. Defaults to an empty list.
Details
First, the matrix is checked for the correct dimensions, then for symmetry, and then for being positive definite. Then each entry is checked to be in [-1, 1] and the diagonal entries must be 1. If not, an error is thrown.
Second, the parameters are transformed and then checked for validity using check.params.
Third, the minimum and maximum correlation matrices are found using lower.upper.cors. If all entries are within the bounds, TRUE is returned. Otherwise, a list of which cells are invalid and their required bounds are printed, and FALSE is returned.
Value
TRUE if the correlation matrix is valid, and FALSE if not.
R version 3.3.1 (2016-06-21) -- "Bug in Your Hair"
Copyright (C) 2016 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
> library(PoisBinOrdNonNor)
Loading required package: Matrix
Loading required package: corpcor
Loading required package: MASS
Loading required package: GenOrd
Loading required package: mvtnorm
Loading required package: BB
> png(filename="/home/ddbj/snapshot/RGM3/R_CC/result/PoisBinOrdNonNor/validate.cor.mat.Rd_%03d_medium.png", width=480, height=480)
> ### Name: validate.cor.mat
> ### Title: Validates the target correlation matrix
> ### Aliases: validate.cor.mat
>
> ### ** Examples
>
> validate.cor.mat(cor.mat = .2 * diag(3) + .8, no.pois = 3,
+ pois.list = list(.25, .5, 1))
Cell [2,1] is invalid, must be between -0.35 and 0.79
Cell [1,2] is invalid, must be between -0.35 and 0.79
[1] FALSE
> validate.cor.mat(cor.mat = .7 * diag(3) + .3, no.ord = 3,
+ ord.list = list(c(.2, .8), c(.1, .2, .3, .4), c(.8, 0, .1, .1)))
Cell [3,1] is invalid, must be between -0.97 and 0.24
Cell [1,3] is invalid, must be between -0.97 and 0.24
[1] FALSE
> validate.cor.mat(cor.mat = .25 * diag(3) + .75, no.pois = 1,
+ no.nonn = 1, no.ord = 1, pois.list = list(.5),
+ ord.list = list(c(.8, 0, .1, .1)), nonn.list=list(c(0, 1, 0, 1)))
Cell [3,2] is invalid, must be between -0.71 and 0.71
Cell [2,3] is invalid, must be between -0.71 and 0.71
[1] FALSE
> validate.cor.mat(cor.mat = .35 * diag(3) + .65, no.pois = 1,
+ no.nonn = 1, no.ord = 1, pois.list = list(.5),
+ ord.list = list(c(.8, 0, .1, .1)), nonn.list=list(c(0, 1, 0, 1)))
[1] TRUE
>
>
>
>
>
> dev.off()
null device
1
>