|
a |
|
b/CountDataSet1.R |
|
|
1 |
CountDataSet1 <- function (n, p, K, param, sdsignal, drate) |
|
|
2 |
{ |
|
|
3 |
if (n < 4 * K) |
|
|
4 |
stop("We require n to be at least 4*K.") |
|
|
5 |
q0 <- rexp(p, rate = 1/25) |
|
|
6 |
|
|
|
7 |
isDE <- runif(p)< drate #runif(p) |
|
|
8 |
classk <- matrix(NA, nrow = K, ncol = p) |
|
|
9 |
for (k in 1:K) { |
|
|
10 |
lfc <- rnorm(p, sd = sdsignal) |
|
|
11 |
classk[k, ] <- ifelse(isDE, q0 * exp(lfc), q0) |
|
|
12 |
} |
|
|
13 |
truesf <- runif(n) * 2 + 0.2 |
|
|
14 |
truesfte <- runif(n) * 2 + 0.2 |
|
|
15 |
conds <- sample(c(rep(1:K, 4), sample(1:K, n - 4 * K, replace = TRUE))) |
|
|
16 |
condste <- sample(c(rep(1:K, 4), sample(1:K, n - 4 * K, replace = TRUE))) |
|
|
17 |
x <- xte <- matrix(NA, nrow = n, ncol = p) |
|
|
18 |
for (i in 1:n) { |
|
|
19 |
for (k in 1:K) { |
|
|
20 |
if (conds[i] == k) |
|
|
21 |
x[i, ] <- rnbinom(p, mu = truesf[i] * classk[k, |
|
|
22 |
], size = param) |
|
|
23 |
if (condste[i] == k) |
|
|
24 |
xte[i, ] <- rnbinom(p, mu = truesfte[i] * classk[k, |
|
|
25 |
], size = param) |
|
|
26 |
} |
|
|
27 |
} |
|
|
28 |
rm <- apply(x, 2, sum) == 0 |
|
|
29 |
return(list(x = x[, !rm], xte = xte[, !rm], y = conds, yte = condste, |
|
|
30 |
truesf = truesf, truesfte = truesfte, dkg=classk)) |
|
|
31 |
} |