Nothing
context("Calculating PoGO.")
suppressWarnings(library(dplyr))
suppressWarnings(library(tidyr))
test_that("PoGO is calculated correctly in calc_ES().", {
A <- c(20, 20, 26, 25, 22, 23)
B <- c(28, 25, 24, 27, 30, 30, 29)
PoGO_calculated <- 100 * (mean(B) - mean(A)) / (25 - mean(A))
PoGO1 <- PoGO(A_data = A, B_data = B, goal = 25)
PoGO2 <- calc_ES(A_data = A, B_data = B, ES = "PoGO", goal = 25)
PoGO_increase <- PoGO(A_data = A, B_data = B, goal = 25, improvement = "increase")
PoGO_decrease <- PoGO(A_data = A, B_data = B, goal = 25, improvement = "decrease")
expect_equal(PoGO_calculated, PoGO1$Est)
expect_equal(PoGO1, PoGO2)
expect_equal(PoGO_increase, PoGO_decrease)
expect_error(calc_ES(A_data = A, B_data = B, ES = "PoGO"))
expect_error(calc_ES(A_data = A, B_data = B, ES = "PoGO", goal = NULL))
})
test_that("PoGO can be calculated correctly in batch_calc_ES().", {
data("McKissick")
expect_error(batch_calc_ES(McKissick,
grouping = Case_pseudonym,
condition = Condition,
outcome = Outcome,
ES = c("PoGO"),
improvement = "decrease",
scale = "count",
format = "long"))
McKissick_goal <- McKissick %>% dplyr::mutate(goal = 10)
expect_error(batch_calc_ES(McKissick_goal,
grouping = Case_pseudonym,
condition = Condition,
outcome = Outcome,
ES = c("PoGO"),
improvement = "decrease",
scale = "count",
format = "long"))
expect_error(batch_calc_ES(McKissick_goal,
grouping = Case_pseudonym,
condition = Condition,
outcome = Outcome,
ES = "parametric",
improvement = "decrease",
scale = "count",
format = "long"))
expect_error(batch_calc_ES(McKissick_goal,
grouping = Case_pseudonym,
condition = Condition,
outcome = Outcome,
ES = "all",
improvement = "decrease",
scale = "count",
format = "long"))
Mck_est1 <-
batch_calc_ES(McKissick_goal,
grouping = Case_pseudonym,
condition = Condition,
outcome = Outcome,
ES = "PoGO",
goal = goal,
improvement = "decrease",
scale = "count",
format = "long")
Mck_est2 <-
batch_calc_ES(McKissick_goal,
grouping = Case_pseudonym,
condition = Condition,
outcome = Outcome,
ES = "PoGO",
goal = 10,
improvement = "increase",
scale = "percentage",
format = "long")
Mck_est_calculated <-
McKissick_goal %>%
group_by(Case_pseudonym, Condition) %>%
summarise(
Outcome = mean(Outcome),
goal = mean(goal),
.groups = "drop"
) %>%
pivot_wider(names_from = Condition, values_from = Outcome) %>%
mutate(Est = 100 * (B - A) / (goal - A)) %>%
select(Case_pseudonym, Est)
expect_equal(Mck_est1, Mck_est2)
expect_equal(select(Mck_est1, Case_pseudonym, Est), Mck_est_calculated)
})
test_that("PoGO results are conceptually correct.", {
data("Schmidt2012")
gl <- 17
Schmidt2012_goals <-
Schmidt2012 %>%
group_by(Case, Behavior) %>%
mutate(
goal_fixed = gl,
goal_mean = mean(Outcome[Trt==1]),
goal_var = rpois(1, lambda = 18)
)
# Fixed variable returns same result as common goal
PoGO_fixed <-
batch_calc_ES(
Schmidt2012_goals,
grouping = c(Case, Behavior),
condition = Trt,
baseline_phase = "0",
outcome = Outcome,
ES = "PoGO",
goal = goal_fixed
)
PoGO_common <-
batch_calc_ES(
Schmidt2012_goals,
grouping = c(Case, Behavior),
condition = Trt,
baseline_phase = "0",
outcome = Outcome,
ES = "PoGO",
goal = gl
)
expect_identical(PoGO_fixed, PoGO_common)
# PoGO with zero goal is the same as -LRRi
PoGO_zero <-
batch_calc_ES(
Schmidt2012_goals,
grouping = c(Case, Behavior),
condition = Trt,
baseline_phase = "0",
# intervention_phase = "1",
outcome = Outcome,
ES = c("PoGO","LRRi"),
goal = 0,
bias_correct = FALSE,
pct_change = TRUE,
confidence = NULL
)
PoGO_zero %>%
dplyr::filter(ES %in% c("PoGO","Pct_Change_i")) %>%
group_by(Case, Behavior) %>%
summarise(Est = sum(Est), .groups = "drop") %>%
summarise(Est = max(abs(Est))) %>%
pull(Est) %>%
expect_lt(1e-8)
PoGO_mean <-
batch_calc_ES(
Schmidt2012_goals,
grouping = c(Case, Behavior),
condition = Trt,
baseline_phase = "0",
outcome = Outcome,
ES = "PoGO",
goal = goal_mean,
bias_correct = FALSE,
pct_change = TRUE
) %>%
mutate(
hundred = 100
)
expect_equal(PoGO_mean$Est, PoGO_mean$hundred)
PoGO_var <-
batch_calc_ES(
Schmidt2012_goals,
grouping = c(Case, Behavior),
condition = Trt,
baseline_phase = "0",
outcome = Outcome,
ES = "PoGO",
goal = goal_var,
bias_correct = FALSE,
pct_change = TRUE
)
PoGO_signs <-
Schmidt2012_goals %>%
group_by(Case, Behavior, Trt) %>%
summarise(
across(c(Outcome, goal_var), mean),
.groups = "drop_last"
) %>%
summarise(
base = Outcome[Trt==0],
outcome_diff = diff(Outcome),
goal_var = mean(goal_var),
.groups = "drop"
) %>%
mutate(
PoGO_sign = sign(goal_var - base) * sign(outcome_diff)
) %>%
left_join(PoGO_var, by = c("Case", "Behavior"))
expect_true(all(sign(PoGO_signs$Est) == PoGO_signs$PoGO_sign))
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.