Hybrid imputation method
Performs the imputation of missing values assuming that the missing values are both MAR and MNAR. It is assumed that the MNAR missing values are left-censored, more precisely, only rows (proteins/peptides) with a mean value below a censoring threshold are considered to contain left-censored missing data. The method relies on a estimation of the left-censoring threshold that is further used to distinguish rows (proteins/peptides) that contain left-censored missing data from those lines who contain random missing data.
impute.MAR.MNAR(dataSet.mvs, model.selector, method.MAR = "KNN", method.MNAR = "QRILC")
dataSet.mvs |
A data matrix containing missing values. |
model.selector |
Vector containing the flag indicators allowing the selection of the appropriate method for the imputation of missing data: the rows (peptides/proteins) corresponding to "1" in the model.selector vector are treated using a MAR specific method while the ones corresponding to "0" are treated using a MNAR specific method. |
method.MAR |
The method employed for the imputation of MAR/MCAR missing data. Possible values: |
method.MNAR |
The method employed for the imputation of the left-censored missing data. |
Data matrix containing complete abundances
The method makes the assumption that rows (peptides/proteins) with a mean value lower than the censoring threshold are not affected my a random missingness mechanism. In reality, a random missingness mechanism could affect also rows (peptides/proteins) which are below the censoring threshold.
Cosmin Lazar
exprsDataObj = generate.ExpressionData(nSamples1 = 6, nSamples2 = 6,
meanSamples = 0, sdSamples = 0.2,
nFeatures = 1000, nFeaturesUp = 50, nFeaturesDown = 50,
meanDynRange = 20, sdDynRange = 1,
meanDiffAbund = 1, sdDiffAbund = 0.2)
exprsData = exprsDataObj[[1]]
# insert 15% missing data with 100% missing not at random
m.THR = quantile(exprsData, probs = 0.15)
sd.THR = 0.1
MNAR.rate = 100
exprsData.MD.obj = insertMVs(exprsData,m.THR,sd.THR,MNAR.rate)
exprsData.MD = exprsData.MD.obj[[2]]
# run model.Selector
m.s = model.Selector(exprsData.MD)
# perform MAR-MNAR imputation
exprsData.MAR.imputed = impute.MAR.MNAR(exprsData.MD, m.s,
method.MAR = "KNN", method.MNAR = "QRILC")
## The function is currently defined as
function (dataSet.mvs, model.selector, method.MAR = "KNN", method.MNAR = "QRILC")
{
switch(method.MAR, MLE = {
dataSet.MCAR.imputed = impute.MAR(dataSet.mvs, model.selector,
method = "MLE")
}, SVD = {
dataSet.MCAR.imputed = impute.MAR(dataSet.mvs, model.selector,
method = "SVD")
}, KNN = {
dataSet.MCAR.imputed = impute.MAR(dataSet.mvs, model.selector,
method = "KNN")
})
switch(method.MNAR, QRILC = {
dataSet.complete.obj = impute.QRILC(dataSet.MCAR.imputed,
tune.sigma = 0.3)
dataSet.complete = dataSet.complete.obj[[1]]
}, MinDet = {
dataSet.complete = impute.MinDet(dataSet.MCAR.imputed)
}, MinProb = {
dataSet.complete = impute.MinProb(dataSet.MCAR.imputed)
})
return(dataSet.complete)
}Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.