upSample2 {CNPBayes} | R Documentation |
Restore model of down-sampled to original dimension.
upSample2(orig.data, model, up_sample = TRUE)
orig.data |
a |
model |
model fit to the down-sampled data |
up_sample |
logical. If TRUE, model is restored to the original dimension. |
library(tidyverse) library(dplyr) set.seed(123) k <- 3 nbatch <- 3 means <- matrix(c(-1.2, -1, -0.8, -0.2, 0, 0.2, 0.8, 1, 1.2), nbatch, k, byrow = FALSE) sds <- matrix(0.1, nbatch, k) N <- 1500 truth <- simulateBatchData(N = N, batch = rep(letters[1:3], length.out = N), theta = means, sds = sds, p = c(1/5, 1/3, 1 - 1/3 - 1/5)) ## ## Make a tibble: required plate, plate.index, batch_orig ## full.data <- tibble(medians=y(truth), plate=batch(truth), batch_orig=as.character(batch(truth))) %>% mutate(plate.index=as.integer(factor(plate, levels=unique(plate)))) ## Below, we down-sample to 500 observations ## Required: batch_orig, batch_index partial.data <- downSample(full.data, size=500) ## ## Required: a mapping from plate to batch ## select <- dplyr::select summarize <- dplyr::summarize plate.mapping <- partial.data %>% select(c(plate, batch_index)) %>% group_by(plate) %>% summarize(batch_index=unique(batch_index)) ## Fit a model as per usual to the down-sampled data mp <- McmcParams(iter=200, burnin=10) hp <- HyperparametersMultiBatch(k=3) model <- MultiBatchModel2(dat=partial.data$medians, batches=partial.data$batch_index, mp=mp, hp=hp) model <- posteriorSimulation(model) ## ## Add the batching used for the down-sampled data to the full data ## full.data2 <- left_join(full.data, plate.mapping, by="plate") ## ## Estimate probabilities for each individual in the full data ## model.full <- upSample2(full.data2, model)