Title: | Modified Maximum Contrast Method |
---|---|
Description: | An implementation of modified maximum contrast methods (Sato et al. (2009) <doi:10.1038/tpj.2008.17>; Nagashima et al. (2011) <doi:10.2202/1544-6115.1560>) and the maximum contrast method (Yoshimura et al. (1997) <doi:10.1177/009286159703100213>): Functions mmcm.mvt() and mcm.mvt() give P-value by using randomized quasi-Monte Carlo method with pmvt() function of package 'mvtnorm', and mmcm.resamp() gives P-value by using a permutation method. |
Authors: | Kengo Nagashima [aut, cre] , Yasunori Sato [aut] |
Maintainer: | Kengo Nagashima <[email protected]> |
License: | GPL-3 |
Version: | 1.2-8 |
Built: | 2024-11-26 06:24:38 UTC |
Source: | CRAN |
This package provides an implementation of modified maximum contrast methods and the maximum contrast method.
This version supports functions mmcm.mvt
, mcm.mvt
that gives P-value by using randomized quasi-Monte Carlo method from pmvt
function of package mvtnorm
, and mmcm.resamp
that gives P-value by using the permutation method.
In a one-way problem testing pattern of several factor level means, the maximum contrast statistics (Yoshimura, I., 1997) may be used. But under unequal sample size situations, denominator of the maximum contrast statistics is overestimated. Thus we propose a modified maximum contrast statistics for the unequal sample size situation. Denominetor of the modified maximum contrast statistics is not influenced under the unequal sample size situation.
Nagashima, K., Sato, Y., Hamada, C. (2011). A modified maximum contrast method for unequal sample sizes in pharmacogenomic studies Stat Appl Genet Mol Biol. 10(1): Article 41. http://dx.doi.org/10.2202/1544-6115.1560
Sato, Y., Laird, N.M., Nagashima, K., et al. (2009). A new statistical screening approach for finding pharmacokinetics-related genes in genome-wide studies. Pharmacogenomics J. 9(2): 137–146. http://www.ncbi.nlm.nih.gov/pubmed/19104505
Yoshimura, I., Wakana, A., Hamada, C. (1997). A performance comparison of maximum contrast methods to detect dose dependency. Drug Information J. 31: 423–432.
mcm.mvt
,
mmcm.mvt
,
mmcm.resamp
This function gives -value for the maximum contrast statistics by using
randomized quasi-Monte Carlo method from
pmvt
function of package mvtnorm
.
mcm.mvt( x, g, contrast, alternative = c("two.sided", "less", "greater"), algorithm = GenzBretz() )
mcm.mvt( x, g, contrast, alternative = c("two.sided", "less", "greater"), algorithm = GenzBretz() )
x |
a numeric vector of data values |
g |
a integer vector giving the group for the corresponding elements of x |
contrast |
a numeric contrast coefficient matrix for the maximum contrast statistics |
alternative |
a character string specifying the alternative hypothesis, must be one of "two.sided" (default), "greater" or "less". You can specify just the initial letter. |
algorithm |
an object of class |
mcm.mvt
performs the maximum contrast method that is detecting
a true response pattern.
is an observed response for
-th individual in
-th group.
is coefficient matrix for the maximum contrast statistics
(
matrix,
: No. of groups,
: No. of pattern).
is coefficient vector of
th pattern.
is the maximum contrast statistic.
Consider testing the overall null hypothesis ,
versus alternative hypotheses
for response petterns
(
).
The
-value for the probability distribution of
under the overall null hypothesis is
is observed value of statistics.
This function gives distribution of
by using randomized
quasi-Monte Carlo method from package
mvtnorm
.
statistic |
the value of the test statistic with a name describing it. |
p.value |
the p-value for the test. |
alternative |
a character string describing the alternative hypothesis. |
method |
the type of test applied. |
contrast |
a character string giving the names of the data. |
contrast.index |
a suffix of coefficient vector of the |
error |
estimated absolute error and, |
msg |
status messages. |
Yoshimura, I., Wakana, A., Hamada, C. (1997). A performance comparison of maximum contrast methods to detect dose dependency. Drug Information J. 31: 423–432.
## Example 1 ## # true response pattern: dominant model c=(1, 1, -2) set.seed(136885) x <- c( rnorm(130, mean = 1 / 6, sd = 1), rnorm( 90, mean = 1 / 6, sd = 1), rnorm( 10, mean = -2 / 6, sd = 1) ) g <- rep(1:3, c(130, 90, 10)) boxplot( x ~ g, width = c(length(g[g==1]), length(g[g==2]), length(g[g==3])), main = "Dominant model (sample data)", xlab = "Genotype", ylab = "PK parameter" ) # coefficient matrix # c_1: additive, c_2: recessive, c_3: dominant contrast <- rbind( c(-1, 0, 1), c(-2, 1, 1), c(-1, -1, 2) ) y <- mcm.mvt(x, g, contrast) y ## Example 2 ## # for dataframe # true response pattern: # pos = 1 dominant model c=( 1, 1, -2) # 2 additive model c=(-1, 0, 1) # 3 recessive model c=( 2, -1, -1) set.seed(3872435) x <- c( rnorm(130, mean = 1 / 6, sd = 1), rnorm( 90, mean = 1 / 6, sd = 1), rnorm( 10, mean = -2 / 6, sd = 1), rnorm(130, mean = -1 / 4, sd = 1), rnorm( 90, mean = 0 / 4, sd = 1), rnorm( 10, mean = 1 / 4, sd = 1), rnorm(130, mean = 2 / 6, sd = 1), rnorm( 90, mean = -1 / 6, sd = 1), rnorm( 10, mean = -1 / 6, sd = 1) ) g <- rep(rep(1:3, c(130, 90, 10)), 3) pos <- rep(c("rsXXXX", "rsYYYY", "rsZZZZ"), each=230) xx <- data.frame(pos = pos, x = x, g = g) # coefficient matrix # c_1: additive, c_2: recessive, c_3: dominant contrast <- rbind( c(-1, 0, 1), c(-2, 1, 1), c(-1, -1, 2) ) y <- by(xx, xx$pos, function(x) mmcm.mvt(x$x, x$g, contrast)) y <- do.call(rbind, y)[,c(3,7,9)] # miss-detection! y
## Example 1 ## # true response pattern: dominant model c=(1, 1, -2) set.seed(136885) x <- c( rnorm(130, mean = 1 / 6, sd = 1), rnorm( 90, mean = 1 / 6, sd = 1), rnorm( 10, mean = -2 / 6, sd = 1) ) g <- rep(1:3, c(130, 90, 10)) boxplot( x ~ g, width = c(length(g[g==1]), length(g[g==2]), length(g[g==3])), main = "Dominant model (sample data)", xlab = "Genotype", ylab = "PK parameter" ) # coefficient matrix # c_1: additive, c_2: recessive, c_3: dominant contrast <- rbind( c(-1, 0, 1), c(-2, 1, 1), c(-1, -1, 2) ) y <- mcm.mvt(x, g, contrast) y ## Example 2 ## # for dataframe # true response pattern: # pos = 1 dominant model c=( 1, 1, -2) # 2 additive model c=(-1, 0, 1) # 3 recessive model c=( 2, -1, -1) set.seed(3872435) x <- c( rnorm(130, mean = 1 / 6, sd = 1), rnorm( 90, mean = 1 / 6, sd = 1), rnorm( 10, mean = -2 / 6, sd = 1), rnorm(130, mean = -1 / 4, sd = 1), rnorm( 90, mean = 0 / 4, sd = 1), rnorm( 10, mean = 1 / 4, sd = 1), rnorm(130, mean = 2 / 6, sd = 1), rnorm( 90, mean = -1 / 6, sd = 1), rnorm( 10, mean = -1 / 6, sd = 1) ) g <- rep(rep(1:3, c(130, 90, 10)), 3) pos <- rep(c("rsXXXX", "rsYYYY", "rsZZZZ"), each=230) xx <- data.frame(pos = pos, x = x, g = g) # coefficient matrix # c_1: additive, c_2: recessive, c_3: dominant contrast <- rbind( c(-1, 0, 1), c(-2, 1, 1), c(-1, -1, 2) ) y <- by(xx, xx$pos, function(x) mmcm.mvt(x$x, x$g, contrast)) y <- do.call(rbind, y)[,c(3,7,9)] # miss-detection! y
This function gives -value for the modified maximum contrast statistics
by using randomized quasi-Monte Carlo method from
pmvt
function of package mvtnorm
.
mmcm.mvt( x, g, contrast, alternative = c("two.sided", "less", "greater"), algorithm = GenzBretz() )
mmcm.mvt( x, g, contrast, alternative = c("two.sided", "less", "greater"), algorithm = GenzBretz() )
x |
a numeric vector of data values |
g |
a integer vector giving the group for the corresponding elements of x |
contrast |
a numeric contrast coefficient matrix for modified maximum contrast statistics |
alternative |
a character string specifying the alternative hypothesis, must be one of "two.sided" (default), "greater" or "less". You can specify just the initial letter. |
algorithm |
an object of class |
mmcm.mvt
performs the modified maximum contrast method
that is detecting a true response pattern under the unequal sample size situation.
is an observed response for
-th individual in
-th group.
is coefficient matrix for modified maximum contrast statistics
(
matrix,
: No. of groups,
: No. of pattern).
is coefficient vector of
th pattern.
is the modified maximum contrast statistic.
Consider testing the overall null hypothesis ,
versus alternative hypotheses
for response petterns
(
). The
-value for the probability distribution
of
under the overall null hypothesis is
is observed value of statistics.
This function gives distribution of
by using randomized
quasi-Monte Carlo method from package
mvtnorm
.
statistic |
the value of the test statistic with a name describing it. |
p.value |
the p-value for the test. |
alternative |
a character string describing the alternative hypothesis. |
method |
the type of test applied. |
contrast |
a character string giving the names of the data. |
contrast.index |
a suffix of coefficient vector of the |
error |
estimated absolute error and, |
msg |
status messages. |
Nagashima, K., Sato, Y., Hamada, C. (2011). A modified maximum contrast method for unequal sample sizes in pharmacogenomic studies Stat Appl Genet Mol Biol. 10(1): Article 41. http://dx.doi.org/10.2202/1544-6115.1560
Sato, Y., Laird, N.M., Nagashima, K., et al. (2009). A new statistical screening approach for finding pharmacokinetics-related genes in genome-wide studies. Pharmacogenomics J. 9(2): 137–146. http://www.ncbi.nlm.nih.gov/pubmed/19104505
## Example 1 ## # true response pattern: dominant model c=(1, 1, -2) set.seed(136885) x <- c( rnorm(130, mean = 1 / 6, sd = 1), rnorm( 90, mean = 1 / 6, sd = 1), rnorm( 10, mean = -2 / 6, sd = 1) ) g <- rep(1:3, c(130, 90, 10)) boxplot( x ~ g, width = c(length(g[g==1]), length(g[g==2]), length(g[g==3])), main = "Dominant model (sample data)", xlab = "Genotype", ylab="PK parameter" ) # coefficient matrix # c_1: additive, c_2: recessive, c_3: dominant contrast <- rbind( c(-1, 0, 1), c(-2, 1, 1), c(-1, -1, 2) ) y <- mmcm.mvt(x, g, contrast) y ## Example 2 ## # for dataframe # true response pattern: # pos = 1 dominant model c=( 1, 1, -2) # 2 additive model c=(-1, 0, 1) # 3 recessive model c=( 2, -1, -1) set.seed(3872435) x <- c( rnorm(130, mean = 1 / 6, sd = 1), rnorm( 90, mean = 1 / 6, sd = 1), rnorm( 10, mean = -2 / 6, sd = 1), rnorm(130, mean = -1 / 4, sd = 1), rnorm( 90, mean = 0 / 4, sd = 1), rnorm( 10, mean = 1 / 4, sd = 1), rnorm(130, mean = 2 / 6, sd = 1), rnorm( 90, mean = -1 / 6, sd = 1), rnorm( 10, mean = -1 / 6, sd = 1) ) g <- rep(rep(1:3, c(130, 90, 10)), 3) pos <- rep(c("rsXXXX", "rsYYYY", "rsZZZZ"), each=230) xx <- data.frame(pos = pos, x = x, g = g) # coefficient matrix # c_1: additive, c_2: recessive, c_3: dominant contrast <- rbind( c(-1, 0, 1), c(-2, 1, 1), c(-1, -1, 2) ) y <- by(xx, xx$pos, function(x) mmcm.mvt(x$x, x$g, contrast)) y <- do.call(rbind, y)[,c(3,7,9)] y
## Example 1 ## # true response pattern: dominant model c=(1, 1, -2) set.seed(136885) x <- c( rnorm(130, mean = 1 / 6, sd = 1), rnorm( 90, mean = 1 / 6, sd = 1), rnorm( 10, mean = -2 / 6, sd = 1) ) g <- rep(1:3, c(130, 90, 10)) boxplot( x ~ g, width = c(length(g[g==1]), length(g[g==2]), length(g[g==3])), main = "Dominant model (sample data)", xlab = "Genotype", ylab="PK parameter" ) # coefficient matrix # c_1: additive, c_2: recessive, c_3: dominant contrast <- rbind( c(-1, 0, 1), c(-2, 1, 1), c(-1, -1, 2) ) y <- mmcm.mvt(x, g, contrast) y ## Example 2 ## # for dataframe # true response pattern: # pos = 1 dominant model c=( 1, 1, -2) # 2 additive model c=(-1, 0, 1) # 3 recessive model c=( 2, -1, -1) set.seed(3872435) x <- c( rnorm(130, mean = 1 / 6, sd = 1), rnorm( 90, mean = 1 / 6, sd = 1), rnorm( 10, mean = -2 / 6, sd = 1), rnorm(130, mean = -1 / 4, sd = 1), rnorm( 90, mean = 0 / 4, sd = 1), rnorm( 10, mean = 1 / 4, sd = 1), rnorm(130, mean = 2 / 6, sd = 1), rnorm( 90, mean = -1 / 6, sd = 1), rnorm( 10, mean = -1 / 6, sd = 1) ) g <- rep(rep(1:3, c(130, 90, 10)), 3) pos <- rep(c("rsXXXX", "rsYYYY", "rsZZZZ"), each=230) xx <- data.frame(pos = pos, x = x, g = g) # coefficient matrix # c_1: additive, c_2: recessive, c_3: dominant contrast <- rbind( c(-1, 0, 1), c(-2, 1, 1), c(-1, -1, 2) ) y <- by(xx, xx$pos, function(x) mmcm.mvt(x$x, x$g, contrast)) y <- do.call(rbind, y)[,c(3,7,9)] y
This function gives -value for the permuted modified maximum
contrast method.
mmcm.resamp( x, g, contrast, alternative = c("two.sided", "less", "greater"), nsample = 20000, abseps = 0.001, seed = NULL, nthread = 2 )
mmcm.resamp( x, g, contrast, alternative = c("two.sided", "less", "greater"), nsample = 20000, abseps = 0.001, seed = NULL, nthread = 2 )
x |
a numeric vector of data values |
g |
a integer vector giving the group for the corresponding elements of x |
contrast |
a numeric contrast coefficient matrix for permuted modified maximum contrast statistics |
alternative |
a character string specifying the alternative hypothesis, must be one of "two.sided" (default), "greater" or "less". You can specify just the initial letter. |
nsample |
specifies the number of resamples (default: 20000) |
abseps |
specifies the absolute error tolerance (default: 0.001) |
seed |
a single value, interpreted as an integer;
see |
nthread |
sthe number of threads used in parallel computing, or FALSE that means single threading (default: 2) |
mmcm.resamp
performs the permuted modified maximum contrast
method that is detecting a true response pattern under the unequal sample size
situation.
is an observed response for
-th individual in
-th group.
is coefficient matrix for permuted modified maximum contrast
statistics (
matrix,
: No. of groups,
:
No. of pattern).
is coefficient vector of
-th pattern.
is a permuted modified maximum contrast statistic.
Consider testing the overall null hypothesis ,
versus alternative hypotheses
for response petterns
(
).
The
-value for the probability distribution of
under the overall null hypothesis is
is observed value of statistics.
This function gives distribution of
by using the
permutation method, follow algorithm:
1. Initialize counting variable: .
Input parameters:
(minimum resampling count,
we set 1000),
(maximum resampling count), and
(absolute error tolerance).
2. Calculate that is the observed value of the test
statistic.
3. Let donate data, which are sampled without
replacement, and independently, form observed value
.
Where,
is suffix of the resampling number
.
4. Calculate from
.
If
, then increment the
counting variable:
. Calculate
approximate P-value
, and
the simulation standard error
.
5. Repeat 3–4, while and
(corresponding to 99% confidence
level), or
times. Output the approximate P-value
.
statistic |
the value of the test statistic with a name describing it. |
p.value |
the p-value for the test. |
alternative |
a character string describing the alternative hypothesis. |
method |
the type of test applied. |
contrast |
a character string giving the names of the data. |
contrast.index |
a suffix of coefficient vector of the |
error |
estimated absolute error and, |
msg |
status messages. |
Nagashima, K., Sato, Y., Hamada, C. (2011). A modified maximum contrast method for unequal sample sizes in pharmacogenomic studies Stat Appl Genet Mol Biol. 10(1): Article 41. http://dx.doi.org/10.2202/1544-6115.1560
Sato, Y., Laird, N.M., Nagashima, K., et al. (2009). A new statistical screening approach for finding pharmacokinetics-related genes in genome-wide studies. Pharmacogenomics J. 9(2): 137–146. http://www.ncbi.nlm.nih.gov/pubmed/19104505
## Example 1 ## # true response pattern: dominant model c=(1, 1, -2) set.seed(136885) x <- c( rnorm(130, mean = 1 / 6, sd = 1), rnorm( 90, mean = 1 / 6, sd = 1), rnorm( 10, mean = -2 / 6, sd = 1) ) g <- rep(1:3, c(130, 90, 10)) boxplot( x ~ g, width = c(length(g[g==1]), length(g[g==2]), length(g[g==3])), main = "Dominant model (sample data)", xlab = "Genotype", ylab="PK parameter" ) # coefficient matrix # c_1: additive, c_2: recessive, c_3: dominant contrast <- rbind( c(-1, 0, 1), c(-2, 1, 1), c(-1, -1, 2) ) y <- mmcm.resamp(x, g, contrast, nsample = 20000, abseps = 0.01, seed = 5784324) y ## Example 2 ## # for dataframe # true response pattern: # pos = 1 dominant model c=( 1, 1, -2) # 2 additive model c=(-1, 0, 1) # 3 recessive model c=( 2, -1, -1) set.seed(3872435) x <- c( rnorm(130, mean = 1 / 6, sd = 1), rnorm( 90, mean = 1 / 6, sd = 1), rnorm( 10, mean = -2 / 6, sd = 1), rnorm(130, mean = -1 / 4, sd = 1), rnorm( 90, mean = 0 / 4, sd = 1), rnorm( 10, mean = 1 / 4, sd = 1), rnorm(130, mean = 2 / 6, sd = 1), rnorm( 90, mean = -1 / 6, sd = 1), rnorm( 10, mean = -1 / 6, sd = 1) ) g <- rep(rep(1:3, c(130, 90, 10)), 3) pos <- rep(c("rsXXXX", "rsYYYY", "rsZZZZ"), each = 230) xx <- data.frame(pos = pos, x = x, g = g) # coefficient matrix # c_1: additive, c_2: recessive, c_3: dominant contrast <- rbind( c(-1, 0, 1), c(-2, 1, 1), c(-1, -1, 2) ) y <- by(xx, xx$pos, function(x) mmcm.resamp(x$x, x$g, contrast, abseps = 0.02, nsample = 10000)) y <- do.call(rbind, y)[,c(3,7,9)] y
## Example 1 ## # true response pattern: dominant model c=(1, 1, -2) set.seed(136885) x <- c( rnorm(130, mean = 1 / 6, sd = 1), rnorm( 90, mean = 1 / 6, sd = 1), rnorm( 10, mean = -2 / 6, sd = 1) ) g <- rep(1:3, c(130, 90, 10)) boxplot( x ~ g, width = c(length(g[g==1]), length(g[g==2]), length(g[g==3])), main = "Dominant model (sample data)", xlab = "Genotype", ylab="PK parameter" ) # coefficient matrix # c_1: additive, c_2: recessive, c_3: dominant contrast <- rbind( c(-1, 0, 1), c(-2, 1, 1), c(-1, -1, 2) ) y <- mmcm.resamp(x, g, contrast, nsample = 20000, abseps = 0.01, seed = 5784324) y ## Example 2 ## # for dataframe # true response pattern: # pos = 1 dominant model c=( 1, 1, -2) # 2 additive model c=(-1, 0, 1) # 3 recessive model c=( 2, -1, -1) set.seed(3872435) x <- c( rnorm(130, mean = 1 / 6, sd = 1), rnorm( 90, mean = 1 / 6, sd = 1), rnorm( 10, mean = -2 / 6, sd = 1), rnorm(130, mean = -1 / 4, sd = 1), rnorm( 90, mean = 0 / 4, sd = 1), rnorm( 10, mean = 1 / 4, sd = 1), rnorm(130, mean = 2 / 6, sd = 1), rnorm( 90, mean = -1 / 6, sd = 1), rnorm( 10, mean = -1 / 6, sd = 1) ) g <- rep(rep(1:3, c(130, 90, 10)), 3) pos <- rep(c("rsXXXX", "rsYYYY", "rsZZZZ"), each = 230) xx <- data.frame(pos = pos, x = x, g = g) # coefficient matrix # c_1: additive, c_2: recessive, c_3: dominant contrast <- rbind( c(-1, 0, 1), c(-2, 1, 1), c(-1, -1, 2) ) y <- by(xx, xx$pos, function(x) mmcm.resamp(x$x, x$g, contrast, abseps = 0.02, nsample = 10000)) y <- do.call(rbind, y)[,c(3,7,9)] y
This function print result of function mcm.mvt
, mmcm.mvt
and mmcm.resamp
## S3 method for class 'mmcm' print(x, digits = getOption("digits"), ...)
## S3 method for class 'mmcm' print(x, digits = getOption("digits"), ...)
x |
Object of class |
digits |
a non-null value for digits specifies the minimum number of significant digits to be printed in values. The default, NULL, uses |
... |
Further arguments passed to or from other methods. |
The case where printed "More than 2 contrast coefficient vectors were selected", some contrast may be unsuitable.
print.default
,
mmcm.mvt
,
mmcm.resamp
,
mcm.mvt