Type: | Package |
Title: | Adaptive Association Tests for Multiple Phenotypes using Proportional Odds Model (POM-aSPU) |
Version: | 1.0.0 |
Date: | 2017-06-20 |
Author: | Junghi Kim and Wei Pan |
Maintainer: | Junghi Kim <junghikim0@gmail.com> |
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>. |
License: | GNU General Public License (≥ 3) |
Depends: | R (≥ 2.10), MASS, matrixStats, stats |
Imports: | Rcpp (≥ 0.12.6) |
LinkingTo: | Rcpp, RcppArmadillo |
RoxygenNote: | 6.0.1 |
NeedsCompilation: | yes |
Packaged: | 2017-06-20 21:01:49 UTC; jkim30 |
Repository: | CRAN |
Date/Publication: | 2017-06-20 23:03:47 UTC |
Adaptive Association Tests for Multiple Phenotypes using Proportional Odds Model (POM)
Description
Provides adaptive association tests for multiple phenotypes.
Details
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.
Author(s)
Junghi Kim and Wei Pan
References
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.
An adaptive sum of powered score (SPU) test for single SNP and mutiple phenotypes
Description
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.
Usage
POMaSPU(Y, Y.level, pheno, Z = NULL, pow = c(1:8, Inf), n.perm)
Arguments
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). |
Details
Adaptive association tests for an ordinal variable (e.g. SNP) and multiple phenotypes using POM.
Value
a vector of p-values from POM-SPU(pow) tests and POM-aSPU test.
Note
We provide a permutation based POM-aSPU test where null statistics are generated from permutations.
Author(s)
Junghi Kim and Wei Pan
References
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.
Examples
# 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)