# \donttest{
# Generate Poisson data
set.seed(2025)
# Generate 3 source datasets (100 x 100 with different missing rates)
n1 <- 100; p1 <- 100; r <- 2
source_list <- list()
F_s <- matrix(runif(n1 * r, min = -2, max = 2), n1, r)
B_s <- matrix(runif(p1 * r, min = -2, max = 2), p1, r)
M_s <- F_s %*% t(B_s)
for (s in 1:3) {
X_s <- matrix(rpois(n1 * p1, exp(M_s)), n1, p1)
# Add missing values (10%, 12%, 14% for sources 1-3)
missing_rate <- 0.1 + (s - 1) * 0.02
n_missing <- floor(n1 * p1 * missing_rate)
missing_idx <- sample(n1 * p1, n_missing)
X_s[missing_idx] <- NA
source_list[[s]] <- X_s
}
# Target data (50 x 50, complete)
n0 <- 50; p0 <- 50
M_target_true <- M_s[1:n0, 1:p0]
X_target <- matrix(rpois(n0 * p0, exp(M_target_true)), n0, p0)
# Run transGFM_multi with AD method
result_AD <- transGFM_multi(
source_data_list = source_list,
target_data = X_target,
r = 2,
data_type = "count",
method = "AD",
lambda_seq = seq(0, 5, by = 1),
K_cv = 3,
verbose = FALSE
)
# Run transGFM_multi with DA method
result_DA <- transGFM_multi(
source_data_list = source_list,
target_data = X_target,
r = 2,
data_type = "count",
method = "DA",
verbose = FALSE
)
# Compare results
print(paste("AD method error:", relative_error(result_AD$M_trans, M_target_true)))
print(paste("DA method error:", relative_error(result_DA$M_trans, M_target_true)))
# }
Run the code above in your browser using DataLab