Skip to content

Commit

Permalink
Merge pull request #116 from openpharma/113
Browse files Browse the repository at this point in the history
Allow factors
  • Loading branch information
wlandau authored Jul 8, 2024
2 parents 7710bbb + 18c5e97 commit 1f1f231
Show file tree
Hide file tree
Showing 25 changed files with 1,044 additions and 1,225 deletions.
2 changes: 1 addition & 1 deletion DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Package: brms.mmrm
Title: Bayesian MMRMs using 'brms'
Version: 1.0.1.9002
Version: 1.0.1.9003
Authors@R: c(
person(
given = c("William", "Michael"),
Expand Down
2 changes: 2 additions & 0 deletions NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,9 @@ importFrom(purrr,map_dbl)
importFrom(purrr,map_df)
importFrom(rlang,is_formula)
importFrom(rlang,warn)
importFrom(stats,"contrasts<-")
importFrom(stats,as.formula)
importFrom(stats,contr.treatment)
importFrom(stats,median)
importFrom(stats,model.matrix)
importFrom(stats,rbinom)
Expand Down
3 changes: 2 additions & 1 deletion NEWS.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
# brms.mmrm 1.0.1.9002 (development)
# brms.mmrm 1.0.1.9003 (development)

* Add `brm_marginal_grid()`.
* Show posterior samples of `sigma` in `brm_marginal_draws()` and `brm_marginal_summaries()`.
* Allow `outcome = "response"` with `reference_time = NULL`. Sometimes raw response is analyzed but the data has no baseline time point.
* Preserve factors in `brm_data()` and encourage ordered factors for the time variable (#113).

# brms.mmrm 1.0.1

Expand Down
10 changes: 7 additions & 3 deletions R/brm_archetype.R
Original file line number Diff line number Diff line change
Expand Up @@ -113,9 +113,13 @@ brm_data_validate.brms_mmrm_archetype <- function(data) {
!anyDuplicated(mapping$variable),
message = "mapping$variable must have all unique values"
)
groups <- attr(data, "brm_levels_group")
subgroups <- attr(data, "brm_levels_subgroup")
times <- attr(data, "brm_levels_time")
groups <- brm_levels(data[[attr(data, "brm_group")]])
subgroups <- if_any(
is.null(attr(data, "brm_subgroup")),
character(0L),
brm_levels(data[[attr(data, "brm_subgroup")]])
)
times <- brm_levels(data[[attr(data, "brm_time")]])
n_group <- length(groups)
n_subgroup <- length(subgroups)
n_time <- length(times)
Expand Down
12 changes: 5 additions & 7 deletions R/brm_archetype_average_cells.R
Original file line number Diff line number Diff line change
Expand Up @@ -174,8 +174,8 @@ brm_archetype_average_cells <- function(
archetype_average_cells <- function(data, prefix) {
group <- attr(data, "brm_group")
time <- attr(data, "brm_time")
levels_group <- attr(data, "brm_levels_group")
levels_time <- attr(data, "brm_levels_time")
levels_group <- brm_levels(data[[attr(data, "brm_group")]])
levels_time <- brm_levels(data[[attr(data, "brm_time")]])
n_time <- length(levels_time)
matrix <- NULL
for (name_group in levels_group) {
Expand All @@ -194,7 +194,6 @@ archetype_average_cells <- function(data, prefix) {
names_group <- rep(levels_group, each = n_time)
names_time <- rep(levels_time, times = length(levels_group))
names <- paste0(prefix, paste(names_group, names_time, sep = "_"))
names <- brm_levels(names)
colnames(matrix) <- names
interest <- tibble::as_tibble(as.data.frame(matrix))
mapping <- tibble::tibble(
Expand All @@ -209,9 +208,9 @@ archetype_average_cells_subgroup <- function(data, prefix) {
group <- attr(data, "brm_group")
subgroup <- attr(data, "brm_subgroup")
time <- attr(data, "brm_time")
levels_group <- attr(data, "brm_levels_group")
levels_subgroup <- attr(data, "brm_levels_subgroup")
levels_time <- attr(data, "brm_levels_time")
levels_group <- brm_levels(data[[group]])
levels_subgroup <- brm_levels(data[[subgroup]])
levels_time <- brm_levels(data[[time]])
n_group <- length(levels_group)
n_subgroup <- length(levels_subgroup)
n_time <- length(levels_time)
Expand Down Expand Up @@ -243,7 +242,6 @@ archetype_average_cells_subgroup <- function(data, prefix) {
prefix,
paste(names_group, names_subgroup, names_time, sep = "_")
)
names <- brm_levels(names)
colnames(matrix) <- names
interest <- tibble::as_tibble(as.data.frame(matrix))
mapping <- tibble::tibble(
Expand Down
12 changes: 5 additions & 7 deletions R/brm_archetype_average_effects.R
Original file line number Diff line number Diff line change
Expand Up @@ -178,8 +178,8 @@ brm_archetype_average_effects <- function(
archetype_average_effects <- function(data, prefix) {
group <- attr(data, "brm_group")
time <- attr(data, "brm_time")
levels_group <- attr(data, "brm_levels_group")
levels_time <- attr(data, "brm_levels_time")
levels_group <- brm_levels(data[[group]])
levels_time <- brm_levels(data[[time]])
reference <- attr(data, "brm_reference_group")
n_time <- length(levels_time)
matrix <- NULL
Expand All @@ -203,7 +203,6 @@ archetype_average_effects <- function(data, prefix) {
names_group <- rep(levels_group, each = n_time)
names_time <- rep(levels_time, times = length(levels_group))
names <- paste0(prefix, paste(names_group, names_time, sep = "_"))
names <- brm_levels(names)
colnames(matrix) <- names
interest <- tibble::as_tibble(as.data.frame(matrix))
mapping <- tibble::tibble(
Expand All @@ -218,9 +217,9 @@ archetype_average_effects_subgroup <- function(data, prefix) {
group <- attr(data, "brm_group")
subgroup <- attr(data, "brm_subgroup")
time <- attr(data, "brm_time")
levels_group <- attr(data, "brm_levels_group")
levels_subgroup <- attr(data, "brm_levels_subgroup")
levels_time <- attr(data, "brm_levels_time")
levels_group <- brm_levels(data[[group]])
levels_subgroup <- brm_levels(data[[subgroup]])
levels_time <- brm_levels(data[[time]])
reference <- attr(data, "brm_reference_group")
n_group <- length(levels_group)
n_subgroup <- length(levels_subgroup)
Expand Down Expand Up @@ -258,7 +257,6 @@ archetype_average_effects_subgroup <- function(data, prefix) {
prefix,
paste(names_group, names_subgroup, names_time, sep = "_")
)
names <- brm_levels(names)
colnames(matrix) <- names
interest <- tibble::as_tibble(as.data.frame(matrix))
mapping <- tibble::tibble(
Expand Down
12 changes: 5 additions & 7 deletions R/brm_archetype_cells.R
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,8 @@ brm_archetype_cells <- function(
archetype_cells <- function(data, prefix) {
group <- attr(data, "brm_group")
time <- attr(data, "brm_time")
levels_group <- attr(data, "brm_levels_group")
levels_time <- attr(data, "brm_levels_time")
levels_group <- brm_levels(data[[group]])
levels_time <- brm_levels(data[[time]])
matrix <- NULL
for (name_group in levels_group) {
for (name_time in levels_time) {
Expand All @@ -158,7 +158,6 @@ archetype_cells <- function(data, prefix) {
names_group <- rep(levels_group, each = length(levels_time))
names_time <- rep(levels_time, times = length(levels_group))
names <- paste0(prefix, paste(names_group, names_time, sep = "_"))
names <- brm_levels(names)
colnames(matrix) <- names
interest <- tibble::as_tibble(as.data.frame(matrix))
mapping <- tibble::tibble(
Expand All @@ -173,9 +172,9 @@ archetype_cells_subgroup <- function(data, prefix) {
group <- attr(data, "brm_group")
subgroup <- attr(data, "brm_subgroup")
time <- attr(data, "brm_time")
levels_group <- attr(data, "brm_levels_group")
levels_subgroup <- attr(data, "brm_levels_subgroup")
levels_time <- attr(data, "brm_levels_time")
levels_group <- brm_levels(data[[group]])
levels_subgroup <- brm_levels(data[[subgroup]])
levels_time <- brm_levels(data[[time]])
n_group <- length(levels_group)
n_subgroup <- length(levels_subgroup)
n_time <- length(levels_time)
Expand All @@ -197,7 +196,6 @@ archetype_cells_subgroup <- function(data, prefix) {
prefix,
paste(names_group, names_subgroup, names_time, sep = "_")
)
names <- brm_levels(names)
colnames(matrix) <- names
interest <- tibble::as_tibble(as.data.frame(matrix))
mapping <- tibble::tibble(
Expand Down
12 changes: 5 additions & 7 deletions R/brm_archetype_effects.R
Original file line number Diff line number Diff line change
Expand Up @@ -171,8 +171,8 @@ brm_archetype_effects <- function(
archetype_effects <- function(data, prefix) {
group <- attr(data, "brm_group")
time <- attr(data, "brm_time")
levels_group <- attr(data, "brm_levels_group")
levels_time <- attr(data, "brm_levels_time")
levels_group <- brm_levels(data[[group]])
levels_time <- brm_levels(data[[time]])
reference <- attr(data, "brm_reference_group")
matrix <- NULL
for (name_group in levels_group) {
Expand All @@ -188,7 +188,6 @@ archetype_effects <- function(data, prefix) {
names_group <- rep(levels_group, each = length(levels_time))
names_time <- rep(levels_time, times = length(levels_group))
names <- paste0(prefix, paste(names_group, names_time, sep = "_"))
names <- brm_levels(names)
colnames(matrix) <- names
interest <- tibble::as_tibble(as.data.frame(matrix))
mapping <- tibble::tibble(
Expand All @@ -203,9 +202,9 @@ archetype_effects_subgroup <- function(data, prefix) {
group <- attr(data, "brm_group")
subgroup <- attr(data, "brm_subgroup")
time <- attr(data, "brm_time")
levels_group <- attr(data, "brm_levels_group")
levels_subgroup <- attr(data, "brm_levels_subgroup")
levels_time <- attr(data, "brm_levels_time")
levels_group <- brm_levels(data[[group]])
levels_subgroup <- brm_levels(data[[subgroup]])
levels_time <- brm_levels(data[[time]])
reference <- attr(data, "brm_reference_group")
n_group <- length(levels_group)
n_subgroup <- length(levels_subgroup)
Expand Down Expand Up @@ -233,7 +232,6 @@ archetype_effects_subgroup <- function(data, prefix) {
prefix,
paste(names_group, names_subgroup, names_time, sep = "_")
)
names <- brm_levels(names)
colnames(matrix) <- names
interest <- tibble::as_tibble(as.data.frame(matrix))
mapping <- tibble::tibble(
Expand Down
14 changes: 6 additions & 8 deletions R/brm_archetype_successive_cells.R
Original file line number Diff line number Diff line change
Expand Up @@ -189,10 +189,10 @@ brm_archetype_successive_cells <- function(
archetype_successive_cells <- function(data, prefix) {
group <- attr(data, "brm_group")
time <- attr(data, "brm_time")
levels_group <- attr(data, "brm_levels_group")
levels_time <- attr(data, "brm_levels_time")
levels_group <- brm_levels(data[[group]])
levels_time <- brm_levels(data[[time]])
n_time <- length(levels_time)
data_first <- data[data[[time]] == data[[time]][1L], ]
data_first <- data[data[[time]] == levels_time[1L], ]
matrix_group <- NULL
for (name in levels_group) {
matrix_group <- cbind(
Expand All @@ -205,7 +205,6 @@ archetype_successive_cells <- function(data, prefix) {
names_group <- rep(levels_group, each = n_time)
names_time <- rep(levels_time, times = length(levels_group))
names <- paste0(prefix, paste(names_group, names_time, sep = "_"))
names <- brm_levels(names)
colnames(matrix) <- names
interest <- tibble::as_tibble(as.data.frame(matrix))
mapping <- tibble::tibble(
Expand All @@ -220,9 +219,9 @@ archetype_successive_cells_subgroup <- function(data, prefix) {
group <- attr(data, "brm_group")
subgroup <- attr(data, "brm_subgroup")
time <- attr(data, "brm_time")
levels_group <- attr(data, "brm_levels_group")
levels_subgroup <- attr(data, "brm_levels_subgroup")
levels_time <- attr(data, "brm_levels_time")
levels_group <- brm_levels(data[[group]])
levels_subgroup <- brm_levels(data[[subgroup]])
levels_time <- brm_levels(data[[time]])
n_group <- length(levels_group)
n_subgroup <- length(levels_subgroup)
n_time <- length(levels_time)
Expand All @@ -244,7 +243,6 @@ archetype_successive_cells_subgroup <- function(data, prefix) {
prefix,
paste(names_group, names_subgroup, names_time, sep = "_")
)
names <- brm_levels(names)
colnames(matrix) <- names
interest <- tibble::as_tibble(as.data.frame(matrix))
mapping <- tibble::tibble(
Expand Down
12 changes: 5 additions & 7 deletions R/brm_archetype_successive_effects.R
Original file line number Diff line number Diff line change
Expand Up @@ -179,8 +179,8 @@ brm_archetype_successive_effects <- function(
archetype_successive_effects <- function(data, prefix) {
group <- attr(data, "brm_group")
time <- attr(data, "brm_time")
levels_group <- attr(data, "brm_levels_group")
levels_time <- attr(data, "brm_levels_time")
levels_group <- brm_levels(data[[group]])
levels_time <- brm_levels(data[[time]])
reference <- attr(data, "brm_reference_group")
n_time <- length(levels_time)
data_first <- data[data[[time]] == data[[time]][1L], ]
Expand All @@ -198,7 +198,6 @@ archetype_successive_effects <- function(data, prefix) {
names_group <- rep(levels_group, each = n_time)
names_time <- rep(levels_time, times = length(levels_group))
names <- paste0(prefix, paste(names_group, names_time, sep = "_"))
names <- brm_levels(names)
colnames(matrix) <- names
interest <- tibble::as_tibble(as.data.frame(matrix))
mapping <- tibble::tibble(
Expand All @@ -213,9 +212,9 @@ archetype_successive_effects_subgroup <- function(data, prefix) {
group <- attr(data, "brm_group")
subgroup <- attr(data, "brm_subgroup")
time <- attr(data, "brm_time")
levels_group <- attr(data, "brm_levels_group")
levels_subgroup <- attr(data, "brm_levels_subgroup")
levels_time <- attr(data, "brm_levels_time")
levels_group <- brm_levels(data[[group]])
levels_subgroup <- brm_levels(data[[subgroup]])
levels_time <- brm_levels(data[[time]])
reference <- attr(data, "brm_reference_group")
n_group <- length(levels_group)
n_subgroup <- length(levels_subgroup)
Expand All @@ -242,7 +241,6 @@ archetype_successive_effects_subgroup <- function(data, prefix) {
prefix,
paste(names_group, names_subgroup, names_time, sep = "_")
)
names <- brm_levels(names)
colnames(matrix) <- names
interest <- tibble::as_tibble(as.data.frame(matrix))
mapping <- tibble::tibble(
Expand Down
Loading

0 comments on commit 1f1f231

Please sign in to comment.