Differential Network

Share:

Description

Differential Network

Usage

1
2
3
4
5
6
7
diffnet_multisplit(x1, x2, b.splits = 50, frac.split = 1/2,
  screen.meth = "screen_bic.glasso", include.mean = FALSE,
  gamma.min = 0.05, compute.evals = "est2.my.ev3",
  algorithm.mleggm = "glasso_rho0", method.compquadform = "imhof",
  acc = 1e-04, epsabs = 1e-10, epsrel = 1e-10, show.warn = FALSE,
  save.mle = FALSE, verbose = TRUE, mc.flag = FALSE, mc.set.seed = TRUE,
  mc.preschedule = TRUE, mc.cores = getOption("mc.cores", 2L), ...)

Arguments

x1

Data-matrix sample 1. You might need to center and scale your data-matrix.

x2

Data-matrix sample 1. You might need to center and scale your data-matrix.

b.splits

Number of splits (default=50).

frac.split

Fraction train-data (screening) / test-data (cleaning) (default=0.5).

screen.meth

Screening procedure. Options: 'screen_bic.glasso' (default), 'screen_cv.glasso', 'screen_shrink' (not recommended), 'screen_mb'.

include.mean

Should sample specific means be included in hypothesis? Use include.mean=FALSE (default and recommended) which assumes mu1=mu2=0 and tests the hypothesis H0: Omega_1=Omega_2.

gamma.min

Tuning parameter in p-value aggregation of Meinshausen et al (2009). (Default=0.05).

compute.evals

Method to estimate the weights in the weighted-sum-of-chi2s distribution. The default and (currently) the only available option is the method 'est2.my.ev3'.

algorithm.mleggm

Algorithm to compute MLE of GGM. The algorithm 'glasso_rho' is the default and (currently) the only available option.

method.compquadform

Method to compute distribution function of weighted-sum-of-chi2s (default='imhof').

acc

See ?davies (default 1e-04).

epsabs

See ?imhof (default 1e-10).

epsrel

See ?imhof (default 1e-10).

show.warn

Should warnings be showed (default=FALSE)?

save.mle

If TRUE, MLEs (inverse covariance matrices for samples 1 and 2) are saved for all b.splits. The median aggregated inverse covariance matrix is provided in the output as 'medwi'. The default is save.mle=FALSE.

verbose

If TRUE, show output progress.

mc.flag

If TRUE use parallel execution for each b.splits via function mclapply of package parallel.

mc.set.seed

See mclapply. Default=TRUE

mc.preschedule

See mclapply. Default=TRUE

mc.cores

Number of cores to use in parallel execution. Defaults to mc.cores option if set, or 2 otherwise.

...

Additional arguments for screen.meth.

Details

Remark:

* If include.mean=FALSE, then x1 and x2 have mean zero and DiffNet tests the hypothesis H0: Omega_1=Omega_2. You might need to center x1 and x2. * If include.mean=TRUE, then DiffNet tests the hypothesis H0: mu_1=mu_2 & Omega_1=Omega_2 * However, we recommend to set include.mean=FALSE and to test equality of the means separately. * You might also want to scale x1 and x2, if you are only interested in differences due to (partial) correlations.

Value

list consisting of

ms.pval

p-values for all b.splits

ss.pval

single-split p-value

medagg.pval

median aggregated p-value

meinshagg.pval

meinshausen aggregated p-value (meinshausen et al 2009)

teststat

test statistics for b.splits

weights.nulldistr

estimated weights

active.last

active-sets obtained in last screening-step

medwi

median of inverse covariance matrices over b.splits

sig.last

constrained mle (covariance matrix) obtained in last cleaning-step

wi.last

constrained mle (inverse covariance matrix) obtained in last cleaning-step

Author(s)

n.stadler

Examples

 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
############################################################
##This example illustrates the use of Differential Network##
############################################################


##set seed
set.seed(1)

##sample size and number of nodes
n <- 40
p <- 10

##specifiy sparse inverse covariance matrices
gen.net <- generate_2networks(p,graph='random',n.nz=rep(p,2),
                              n.nz.common=ceiling(p*0.8))
invcov1 <- gen.net[[1]]
invcov2 <- gen.net[[2]]
plot_2networks(invcov1,invcov2,label.pos=0,label.cex=0.7)

##get corresponding correlation matrices
cor1 <- cov2cor(solve(invcov1))
cor2 <- cov2cor(solve(invcov2))

##generate data under null hypothesis (both datasets have the same underlying
## network)
library('mvtnorm')
x1 <- rmvnorm(n,mean = rep(0,p), sigma = cor1)
x2 <- rmvnorm(n,mean = rep(0,p), sigma = cor1)

##run diffnet (under null hypothesis)
dn.null <- diffnet_multisplit(x1,x2,b.splits=1,verbose=FALSE)
dn.null$ss.pval#single-split p-value

##generate data under alternative hypothesis (datasets have different networks)
x1 <- rmvnorm(n,mean = rep(0,p), sigma = cor1)
x2 <- rmvnorm(n,mean = rep(0,p), sigma = cor2)

##run diffnet (under alternative hypothesis)
dn.altn <- diffnet_multisplit(x1,x2,b.splits=1,verbose=FALSE)
dn.altn$ss.pval#single-split p-value
dn.altn$medagg.pval#median aggregated p-value

##typically we would choose a larger number of splits
# dn.altn <- diffnet_multisplit(x1,x2,b.splits=10,verbose=FALSE)
# dn.altn$ms.pval#multi-split p-values
# dn.altn$medagg.pval#median aggregated p-value
# plot(dn.altn)#histogram of single-split p-values

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.