mbmdr
implements the Model Based Multifactor Dimensionality Reduction (MBMDR) method
proposed by Calle et al.(2008) as a dimension reduction method for
exploring genegene interactions.
1 2 3 4 
y 
Vector containing the dependent variable. 
data 
A data.frame (or object coercible by as.data.frame to a data frame)
containing the SNP information with values 0,1,2. 
order 
Single integer that specifies the order of interactions to be analyzed. 
covar 
(Optional) A data.frame or object coercible by as.data.frame to a
data frame containing the covariates for adjusting regression models. 
exclude 
(Optional) Value/s of missing data. If missings in data are coded differently
than 
risk.threshold 
Threshold used at the first MBMDR stage for defining the risk category of a multilocus
genotype. It should be a conservative value.
The default value is 
output 
(Optional) Output file name for storing 
adjust 
Type of regressions adjustment. Options are 
first.model 
(Optional) Numerical vector of length equal to 
list.models 
(Optional) Exhaustive list of models to be analyzed. Only models in list will be analyzed.
It can be: a vector of lenght 
use.logistf 
Boolean value indicating whether or not to use the 
printStep1 
Boolean value. If true, the details of 
... 
For regression arguments: arguments to be passed to 
MBMDR is a method for identifying multilocus genotypes that are associated with
a phenotype of interest, and allows to adjust for marginal and confounding effects.
The exploration of interacions is performed in three steps:
Step1
Each genotype is tested for association with the response and is classified as high risk, low risk
or not significant, and all genotypes of the same class are merged. The threshold for considering
significant evidence is the value specified in risk.threshold
(by default risk.threshold=0.1
).
If printStep1=TRUE
, the MBMDR function prints this classification.
Step2
For each risk categories, high and low, a new association test is performed. The result
provides a Wald statistic for the high and for the low categories.
Step3
The significance is explored through a permutation test on the maximum Wald statistics.
mbmdr
returns an object of class mbmdr
with the following attributes:
call 
The matched call.  
y 
The outcome used.  
data 
The SNPs data used.  
covar 
The covariate data used.  
result 
Dataframe with those interactions that have at least a significant genotype.
For each interaction (rows), the following information is returned:

If printStep1
argument is set to TRUE
, the result of the first step in
mbmdr
is printed for each genotype with the following information:
...  Genotype.  
cases  (only for case/control outcome) Number of cases with the specific genotype.  
controls  (only for case/control outcome) Number of controls with the specific genotype.  
beta  Regression coefficient for this genotype.  
p.value  Wald test pvalue for this genotype.  
category  Predicted risk category for this genotype.  
Victor Urrea, Malu Calle, Kristel Van Steen, Nuria Malats
Calle M.L., Urrea V., Vellalta G., Malats N., Steen K.V. (2008) Improving strategies for detecting genetic patterns of disease susceptibility in association studies. Statistics in Medicine 27, 65326546.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62  # Dicotomous outcome 
# load example data
data(simSNP)
# MBMDR analysis of all possible 2nd order interactions (it may take some time)
# The order of the interactions to be explored is specified by order=2
# fit < mbmdr(y=simSNP$Y,data=simSNP[,3:12],order=2,family=binomial(link=logit))
# print(fit)
# MBMDR analysis of the epistatic effect of SNP1 and SNP2 (Model 2 1)
# The specific model to be analyzed is specified by list.models=c(2,1)
fit < mbmdr(y=simSNP$Y,data=simSNP[,3:12],order=2,list.models=c(2,1),
family=binomial(link=logit),printStep1=TRUE)
print(fit)
# MBMDR analysis of the epistatic effect of SNP1 and SNP2, adjusted for variable X
# The specific model to be analyzed is specified by list.models=c(2,1)
# The adjustment statement is specified by adjust="covariates"
fit < mbmdr(y=simSNP$Y,data=simSNP[,3:12],order=2,list.models=c(2,1),
covar=simSNP$X,adjust="covariates",family=binomial(link=logit))
print(fit)
# MBMDR analysis of all 2nd order interactions restricted to a subset of snps
# (all possible 2nd order interactions among SNP1, SNP2 and SNP3 are explored,
# it may take some time)
# SNP1, SNP2 and SNP3 are placed in columns 3 to 5 of simSNP. This is specified
# by data=simSNP[,3:5]
# fit < mbmdr(y=simSNP$Y,data=simSNP[,3:5],order=2,family=binomial(link=logit),
# printStep1=TRUE)
# print(fit)
# MBMDR analysis of all possible 3rd order interactions (it may take some time)
# The order of the interactions to be explored is specified by order=3
# fit < mbmdr(y=simSNP$Y,data=simSNP[,3:12],order=3,family=binomial(link=logit))
# print(fit)
# MBMDR analysis of the 3rd order epistatic effect of SNP1, SNP2 and SNP3
# The specific model to be analyzed is specified by list.models=c(3,2,1)
# fit < mbmdr(y=simSNP$Y,data=simSNP[,3:12],order=3,list.models=c(3,2,1),
# family=binomial(link=logit),printStep1=TRUE)
# print(fit)
# Continuous outcome 
# load example data
data(simSNPcont)
# MBMDR analysis of all possible 2nd order interactions (it may take some time)
# The order of the interactions to be explored is specified by order=2
# fit < mbmdr(y=simSNPcont$Y,data=simSNPcont[,2:11],order=2)
# print(fit)
# MBMDR analysis of the epistatic effect of SNP1 and SNP2 (Model 2 1)
# The specific model to be analyzed is specified by list.models=c(2,1)
fit < mbmdr(y=simSNPcont$Y,data=simSNPcont[,2:11],order=2,
list.models=c(2,1),printStep1=TRUE)
print(fit)

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.
Please suggest features or report bugs with the GitHub issue tracker.
All documentation is copyright its authors; we didn't write any of that.