covariate: An array or a data frame of covariates.
confounder: An array or data frame of confounders.
estimation: Character string specifying which estimation method to use: "all", "block" or "singular". Default value is "all".
inference: Character string specifying which inference method to use: "exact" or "permutation". Default value is "exact".
index: Only used if estimation = "block". Default value is "adapative". See details.
shrink: Should we use a shrinkage estimate of the residual variance? Default value is FALSE.
nperm: The number of permutations to perform if inference = "permutation" or for the Tracy-Widom empirical estimate (if estimation = "singular").
Wilks: Should we use a Wilks test instead of Roy's largest test? This is only implemented for a single covariate and with estimation = "all".
Returns
An object of class Pcev containing the first PCEV, the p-value, the estimate of the shrinkage factor, etc.
Details
This is the main function. It computes the PCEV using either the classical method, block approach or singular. A p-value is also computed, testing the significance of the PCEV.
The p-value is computed using either a permutation approach or an exact test. The implemented exact tests use Wilks' Lambda (only for a single covariate) or Roy's Largest Root. The latter uses Johnstone's approximation to the null distribution. Note that for the block approach, only p-values obtained from a permutation procedure are available.
When estimation = "singular", the p-value is computed using a heuristic: using the method of moments and a small number of permutations (i.e. 25), a location-scale family of the Tracy-Widom distribution of order 1 is fitted to the null distribution. This fitted distribution is then used to compute p-values.
When estimation = "block", there are three different ways of specifying the blocks: 1) if index is a vector of the same length as the number of columns in response, then it is used to match each response to a block. 2) If index is a single positive integer, it is understood as the number of blocks, and each response is matched to a block randomly. 3) If index = "adaptive" (the default), the number of blocks is chosen so that there are about n/2 responses per block, and each response is match to a block randomly. All other values of index should result in an error.