Title: | Adaptive Association Tests for Multiple Phenotypes using Proportional Odds Model (POM-aSPU) |
---|---|
Description: | POM-aSPU test evaluates an association between an ordinal response and multiple phenotypes, for details see Kim and Pan (2017) <DOI:10.1002/gepi.22033>. |
Authors: | Junghi Kim and Wei Pan |
Maintainer: | Junghi Kim <[email protected]> |
License: | GNU General Public License (>= 3) |
Version: | 1.0.0 |
Built: | 2024-11-15 06:34:51 UTC |
Source: | CRAN |
Provides adaptive association tests for multiple phenotypes.
POM-aSPU test evaluates an association between an ordinal response (categorical variable) and multiple variables (a set of phenotypes). We treat single SNP as an ordinal response and multiple traits as predictors in a proportional odds model (POM). The proposed method can be applied to a high dimensional setting where the number of phenotypes (p) can be larger than the sample size (n), in addition to the usual small (p) setting.
Junghi Kim and Wei Pan
Kim J, and Pan W (2017). "Adaptive testing for multiple traits in a proportional odds model with applications to detect SNP-brain network associations." Genetic Epidemiology, 41(3), 259–277.
POM-aSPU test evaluates an associations between an ordinal response (e.g. SNP) and multiple phenotypes; provides a series of p-values of POM-SPU(pow) and POM-aSPU tests.
POMaSPU(Y, Y.level, pheno, Z = NULL, pow = c(1:8, Inf), n.perm)
POMaSPU(Y, Y.level, pheno, Z = NULL, pow = c(1:8, Inf), n.perm)
Y |
a vector of categorical indicators |
Y.level |
a vector indicating an order of categories either numeric or character e.g. Y.level = c(0, 1, 2) or Y.level = c("Well", "Mild", "Impaired"). |
pheno |
a numeric phenotype matrix with each row as a different individual and each column as a separate phenotype. |
Z |
a numeric covariate matrix with each row as a different individual and each column as a covariate to be adjusted. |
pow |
a vector of the power weight to be used at a trait level (default = c(1:8, Inf)). |
n.perm |
a numeric value of number of null statistics (default = 1000). |
Adaptive association tests for an ordinal variable (e.g. SNP) and multiple phenotypes using POM.
a vector of p-values from POM-SPU(pow) tests and POM-aSPU test.
We provide a permutation based POM-aSPU test where null statistics are generated from permutations.
Junghi Kim and Wei Pan
Kim J, and Pan W (2017). "Adaptive testing for multiple traits in a proportional odds model with applications to detect SNP-brain network associations." Genetic Epidemiology, 41(3), 259–277.
# Example 1) # -- simulating phenotypes # -- n.subjects: number of subjects # -- n.traits: number of phenotypes set.seed(136) n.subjects <- 100 n.traits <- 10 pheno <- matrix(rnorm(n.subjects*n.traits), n.subjects, n.traits) # -- simulating genotype (Y) and covariates (Z) Y <- sample(c(0,1,2), n.subjects, replace = TRUE) Z <- matrix(rnorm(n.subjects*2, 2, 1), n.subjects, 2) # -- Computing the p-value of POMaSPU test with the permutation based method Pvl <- POMaSPU(Y = Y, Y.level = c(0,1,2), pheno = pheno, Z = Z, pow = c(1,2,4,Inf), n.perm = 1000) # -- Each element of Pvl is a p value of POM-SPU(pow) in order # -- The last element of Pvl is a p value of POM-aSPU test Pvl Pvl[length(Pvl)] # > Pvl # SPU.1 SPU.2 SPU.4 SPU.Inf aSPU # 0.1800000 0.5010000 0.3220000 0.1720000 0.3506494 # > Pvl[length(Pvl)] # aSPU # 0.3506494 # Example 2) # n.subjects <- 100 # n.traits <- 10 # Y <- sample(c("Well", "Mild", "Sick"), n.subjects, replace = TRUE) # pheno <- matrix(rnorm(n.subjects*n.traits), n.subjects, n.traits) # Z <- matrix(rnorm(n.subjects*2, 2, 1), n.subjects, 2) # Pvl <- POMaSPU(Y = Y, Y.level = c("Sick", "Mild", "Well"), pheno = pheno, Z = Z, # pow = c(1,2,4,Inf), n.perm = 1000)
# Example 1) # -- simulating phenotypes # -- n.subjects: number of subjects # -- n.traits: number of phenotypes set.seed(136) n.subjects <- 100 n.traits <- 10 pheno <- matrix(rnorm(n.subjects*n.traits), n.subjects, n.traits) # -- simulating genotype (Y) and covariates (Z) Y <- sample(c(0,1,2), n.subjects, replace = TRUE) Z <- matrix(rnorm(n.subjects*2, 2, 1), n.subjects, 2) # -- Computing the p-value of POMaSPU test with the permutation based method Pvl <- POMaSPU(Y = Y, Y.level = c(0,1,2), pheno = pheno, Z = Z, pow = c(1,2,4,Inf), n.perm = 1000) # -- Each element of Pvl is a p value of POM-SPU(pow) in order # -- The last element of Pvl is a p value of POM-aSPU test Pvl Pvl[length(Pvl)] # > Pvl # SPU.1 SPU.2 SPU.4 SPU.Inf aSPU # 0.1800000 0.5010000 0.3220000 0.1720000 0.3506494 # > Pvl[length(Pvl)] # aSPU # 0.3506494 # Example 2) # n.subjects <- 100 # n.traits <- 10 # Y <- sample(c("Well", "Mild", "Sick"), n.subjects, replace = TRUE) # pheno <- matrix(rnorm(n.subjects*n.traits), n.subjects, n.traits) # Z <- matrix(rnorm(n.subjects*2, 2, 1), n.subjects, 2) # Pvl <- POMaSPU(Y = Y, Y.level = c("Sick", "Mild", "Well"), pheno = pheno, Z = Z, # pow = c(1,2,4,Inf), n.perm = 1000)