Skip to content

Commit 626ee20

Browse files
author
Craig Gower-Page
authored
Support Logical Events (#439)
1 parent 016d639 commit 626ee20

File tree

2 files changed

+68
-1
lines changed

2 files changed

+68
-1
lines changed

R/SurvivalQuantities.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,7 @@ brierScore.SurvivalQuantities <- function(
371371
event_col <- extractVariableNames(object@data@survival)$event
372372
groups <- as.character(object@data@survival@data[[subject_col]])
373373
orig_times <- object@data@survival@data[[time_col]]
374-
events <- object@data@survival@data[[event_col]]
374+
events <- as.numeric(object@data@survival@data[[event_col]])
375375

376376
pred_mat <- matrix(
377377
ncol = length(times),

tests/testthat/test-brierScore.R

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,3 +238,70 @@ test_that("reverse_km_event_first() and reverse_km_cen_first() work as expected"
238238
extract_prodlim(mod, new_times)
239239
)
240240
})
241+
242+
243+
244+
test_that("brierScore() works on logical events #438", {
245+
set.seed(739)
246+
simjdat <- SimJointData(
247+
design = list(
248+
SimGroup(75, "Arm-A", "Study-X"),
249+
SimGroup(75, "Arm-B", "Study-X")
250+
),
251+
survival = SimSurvivalExponential(
252+
lambda = 1 / 100,
253+
time_max = 2000
254+
),
255+
longitudinal = SimLongitudinalRandomSlope(
256+
times = c(0, 1, 100, 200, 250, 300, 350),
257+
intercept = 30,
258+
sigma = 3,
259+
slope_mu = c(1, 3),
260+
slope_sigma = 0.2,
261+
link_dsld = 0
262+
),
263+
.silent = TRUE
264+
)
265+
dat_os <- simjdat@survival
266+
dat_lm <- simjdat@longitudinal
267+
268+
jm <- JointModel(
269+
survival = SurvivalExponential(
270+
lambda = prior_lognormal(log(1 / 100), 1 / 100)
271+
)
272+
)
273+
274+
jdat <- DataJoint(
275+
subject = DataSubject(
276+
data = dat_os,
277+
subject = "subject",
278+
arm = "arm",
279+
study = "study"
280+
),
281+
survival = DataSurvival(
282+
data = dat_os,
283+
formula = Surv(time, event) ~ cov_cat + cov_cont
284+
)
285+
)
286+
287+
mp <- sampleStanModel(
288+
jm,
289+
data = jdat,
290+
iter_sampling = 100,
291+
iter_warmup = 150,
292+
chains = 2,
293+
refresh = 0,
294+
parallel_chains = 1
295+
)
296+
297+
t_grid <- c(1, 30, 45, 60, 425, 750)
298+
sq <- SurvivalQuantities(
299+
mp,
300+
grid = GridFixed(times = t_grid),
301+
type = "surv"
302+
)
303+
expected <- brierScore(sq)
304+
sq@data@survival@data$event <- as.logical(sq@data@survival@data$event)
305+
actual <- brierScore(sq)
306+
expect_equal(actual, expected)
307+
})

0 commit comments

Comments
 (0)