You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I stumbled over a minor inconsistency in sofa_cardio that assigns incorrect scores, most likely due to a floating point issue. See the following reprex with the latest main branch.
Local .Rprofile detected at /Users/patrick/projects/ricu-package/.Rprofile
devtools::load_all()
#> ℹ Loading ricu#> #> ── ricu 0.6.0 ──────────────────────────────────────────────────────────────────#> #> The following data sources are configured to be attached:#> (the environment variable `RICU_SRC_LOAD` controls this)#> #> ✔ mimic: 26 of 26 tables available#> ✔ mimic_demo: 25 of 25 tables available#> ✔ eicu: 31 of 31 tables available#> ✔ eicu_demo: 31 of 31 tables available#> ✔ hirid: 5 of 5 tables available#> ✔ aumc: 7 of 7 tables available#> ✔ miiv: 31 of 31 tables available#> ✖ sic: 7 of 8 tables available#> #> ────────────────────────────────────────────────────────────────────────────────src="mimic_demo"map= load_concepts("map", src=src)
#> ── Loading 1 concept ───────────────────────────────────────────────────────────#> • map ◯ removed 22 (0.14%) of rows due to `NA` values ◯ removed 13 (0.08%) of rows due to out of range entries#> ────────────────────────────────────────────────────────────────────────────────dopa60= load_concepts("dopa60", src=src)
#> ── Loading 1 concept ───────────────────────────────────────────────────────────#> • dopa60• dopa_rate ◯ removed 2788 (5.21%) of rows due to `NA` values• dopa_dur#> ────────────────────────────────────────────────────────────────────────────────norepi60= load_concepts("norepi60", src=src)
#> ── Loading 1 concept ───────────────────────────────────────────────────────────#> • norepi60• norepi_rate ◯ removed 3482 (2.62%) of rows due to `NA` values ◯ removed 12 (0.01%) of rows due to out of range entries• norepi_dur#> ────────────────────────────────────────────────────────────────────────────────dobu60= load_concepts("dobu60", src=src)
#> ── Loading 1 concept ───────────────────────────────────────────────────────────#> • dobu60• dobu_rate ◯ removed 240 (6.77%) of rows due to `NA` values• dobu_dur#> ────────────────────────────────────────────────────────────────────────────────epi60= load_concepts("epi60", src=src)
#> ── Loading 1 concept ───────────────────────────────────────────────────────────#> • epi60• epi_rate• epi_dur#> ────────────────────────────────────────────────────────────────────────────────# Get sofa_cardio as currently implemented ----------------------------------------input= mget(c("map", "dopa60", "norepi60", "dobu60", "epi60"))
cur= sofa_cardio(input)
# Recalculate with a function that adjusts for floating point imprecision ---------sofa_cardio_upd<-function(..., interval=NULL) {
score_calc<-function(map, dopa, norepi, dobu, epi) {
eps<-.Machine$double.eps^0.5
fifelse(
is_true(dopa>15+eps|epi>0.1+eps|norepi>0.1+eps), 4L, fifelse(
is_true(dopa>5+eps| (epi>0+eps&epi<=0.1+eps) |
(norepi>0+eps&norepi<=0.1+eps)), 3L, fifelse(
is_true((dopa>0+eps&dopa<=5+eps) |dobu>0+eps), 2L, fifelse(
is_true(map<70), 1L, 0L
))))
}
cnc<- c("map", "dopa60", "norepi60", "dobu60", "epi60")
dat<- collect_dots(cnc, interval, ..., merge_dat=TRUE)
dat<-dat[, c("sofa_cardio") := score_calc(
get("map"), get("dopa60"), get("norepi60"), get("dobu60"), get("epi60")
)]
#dat <- rm_cols(dat, cnc, by_ref = TRUE) <---- keep variables to investigate diffsdat
}
upd= sofa_cardio_upd(input)
# Compare the results obtained with each method -------------------------------------# We can see that the results are not equal
setequal(cur, upd)
#> [1] FALSE# There is a difference in 6 rows, which should have been classified as 3 but were 4.# The updated function gets it right. comb= merge(upd, cur, by= c("icustay_id", "charttime"), suffixes= c(".upd", ".cur"))
setnames(comb, c("sofa_cardio.cur", "sofa_cardio.upd"), c("cur", "upd"))
as.data.frame(comb[cur!=upd])
#> icustay_id charttime map dopa60 norepi60 dobu60 epi60 upd cur#> 1 203766 82 hours 81.0 6 0.1 NA NA 3 4#> 2 223177 29 hours 75.5 4 0.1 NA NA 3 4#> 3 241562 -1 hours 78.5 NA 0.1 NA NA 3 4#> 4 248755 49 hours 65.0 NA 0.1 NA NA 3 4#> 5 248755 104 hours 63.0 NA 0.1 NA NA 3 4#> 6 248755 105 hours 61.0 NA 0.1 NA NA 3 4
I stumbled over a minor inconsistency in
sofa_cardio
that assigns incorrect scores, most likely due to a floating point issue. See the following reprex with the latestmain
branch.Local
.Rprofile
detected at/Users/patrick/projects/ricu-package/.Rprofile
Created on 2024-04-11 with reprex v2.1.0
The text was updated successfully, but these errors were encountered: