To prevent performance regressions, compare them here, including benchmarks against other packages:
library(fromo)
library(RollingWindow)
library(roll)
library(RcppRoll)
library(microbenchmark)
library(moments)
library(RcppParallel)
# keep this constant for comparison
setThreadOptions(numThreads = 2)
print(Sys.info())
## sysname release version
## "Linux" "4.4.0-137-generic" "#163-Ubuntu SMP Mon Sep 24 13:14:43 UTC 2018"
## nodename machine login
## "2d2df85a7b70" "x86_64" "unknown"
## user effective_user
## "docker" "docker"
print(sessionInfo())
## R version 3.5.2 (2018-12-20)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Debian GNU/Linux buster/sid
##
## Matrix products: default
## BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.8.0
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.8.0
##
## locale:
## [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 LC_MONETARY=en_US.UTF-8
## [6] LC_MESSAGES=en_US.UTF-8 LC_PAPER=en_US.UTF-8 LC_NAME=C LC_ADDRESS=C LC_TELEPHONE=C
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
##
## attached base packages:
## [1] utils methods base
##
## other attached packages:
## [1] RcppParallel_4.4.2 RcppRoll_0.3.0 roll_1.1.2 RollingWindow_0.2 microbenchmark_1.4-6 moments_0.14 dplyr_0.7.8
## [8] ggplot2_3.1.0 knitr_1.21 fromo_0.1.3.6796
##
## loaded via a namespace (and not attached):
## [1] Rcpp_1.0.0 bindr_0.1.1 magrittr_1.5 grDevices_3.5.2 tidyselect_0.2.5 munsell_0.5.0 colorspace_1.3-2 R6_2.3.0 rlang_0.3.0.1
## [10] stringr_1.3.1 plyr_1.8.4 tools_3.5.2 grid_3.5.2 gtable_0.2.0 xfun_0.4 withr_2.1.2 stats_3.5.2 lazyeval_0.2.1
## [19] assertthat_0.2.0 tibble_1.4.2 crayon_1.3.4 bindrcpp_0.2.2 formatR_1.5 purrr_0.2.5 graphics_3.5.2 glue_1.3.0 evaluate_0.12
## [28] stringi_1.2.4 compiler_3.5.2 pillar_1.3.1 scales_1.0.0 pkgconfig_2.0.2
set.seed(12345)
x <- rnorm(1e+05)
xpos <- runif(length(x)) + 1
xm <- matrix(x, ncol = 1)
xmps <- matrix(xpos, ncol = 1)
w <- runif(length(x))
dumbk <- function(x) {
c(kurtosis(x) - 3, skewness(x), sd(x), mean(x),
length(x))
}
checkit <- microbenchmark(sum(x), mean(x), sd(x), skewness(x),
kurtosis(x), sd3(x), skew4(x), kurt5(x), dumbk(x))
print(checkit)
## Unit: microseconds
## expr min lq mean median uq max neval cld
## sum(x) 76 76 78 76 77 105 100 a
## mean(x) 153 154 158 155 156 249 100 a
## sd(x) 312 315 565 322 339 23243 100 ab
## skewness(x) 6867 6892 6949 6900 6946 7532 100 c
## kurtosis(x) 6763 6798 6991 6805 6854 19361 100 c
## sd3(x) 684 686 694 689 696 736 100 b
## skew4(x) 6701 6715 6809 6725 6779 9134 100 c
## kurt5(x) 12305 12333 12437 12349 12456 13447 100 d
## dumbk(x) 14147 14195 14596 14213 14283 31997 100 e
resdf <- checkit
gc()
## used (Mb) gc trigger (Mb) max used (Mb)
## Ncells 1747239 93 3.5e+06 186 2.3e+06 124
## Vcells 3588564 27 2.2e+07 168 3.4e+07 262
# weights
slow_sd <- function(x, w) {
n0 <- length(x)
mu <- weighted.mean(x, w = w)
sg <- sqrt(sum(w * (x - mu)^2)/(n0 - 1))
c(sg, mu, n0)
}
checkit <- microbenchmark(cent_moments(x, max_order = 4,
wts = w, na_rm = TRUE, normalize_wts = FALSE),
sd3(x, wts = w), slow_sd(x, w))
print(checkit)
## Unit: microseconds
## expr min lq mean median uq max neval cld
## cent_moments(x, max_order = 4, wts = w, na_rm = TRUE, normalize_wts = FALSE) 14061 14257 14978 14651 15537 18682 100 c
## sd3(x, wts = w) 1007 1036 1095 1058 1133 1395 100 a
## slow_sd(x, w) 943 1024 1726 1757 1893 6646 100 b
resdf <- rbind(resdf, checkit)
gc()
## used (Mb) gc trigger (Mb) max used (Mb)
## Ncells 1748655 93 3.5e+06 186 2.3e+06 124
## Vcells 3594655 28 1.4e+07 107 3.4e+07 262
set.seed(12345)
x1 <- runif(10000)
x2 <- runif(length(x1))
checkit <- microbenchmark(as.centsums(x1, 1), as.centsums(x1,
2), as.centsums(x1, 3), as.centsums(x1, 4))
print(checkit)
## Unit: microseconds
## expr min lq mean median uq max neval cld
## as.centsums(x1, 1) 74 75 77 77 79 84 100 a
## as.centsums(x1, 2) 111 113 118 116 119 274 100 b
## as.centsums(x1, 3) 729 735 754 749 764 914 100 c
## as.centsums(x1, 4) 1279 1322 1339 1330 1365 1433 100 d
resdf <- rbind(resdf, checkit)
gc()
## used (Mb) gc trigger (Mb) max used (Mb)
## Ncells 1749140 94 3.5e+06 186 2.3e+06 124
## Vcells 3618419 28 1.4e+07 107 3.4e+07 262
# join them together
max_ord <- 6L
obj1 <- as.centsums(x1, max_ord)
obj2 <- as.centsums(x2, max_ord)
obj3 <- as.centsums(c(x1, x2), max_ord)
checkit <- microbenchmark(c(obj1, obj2), obj3 %-% obj1)
print(checkit)
## Unit: microseconds
## expr min lq mean median uq max neval cld
## c(obj1, obj2) 14 15 17 15 15 190 100 b
## obj3 %-% obj1 10 11 12 11 12 85 100 a
resdf <- rbind(resdf, checkit)
gc()
## used (Mb) gc trigger (Mb) max used (Mb)
## Ncells 1749819 94 3.5e+06 186 2.3e+06 124
## Vcells 3619708 28 1.4e+07 107 3.4e+07 262
max_ord <- 6L
rs1 <- cent_sums(x1, max_ord)
rs2 <- cent_sums(x2, max_ord)
rs3 <- cent_sums(c(x1, x2), max_ord)
checkit <- microbenchmark(join_cent_sums(rs1, rs2),
unjoin_cent_sums(rs3, rs2), unjoin_cent_sums(rs3,
rs1))
print(checkit)
## Unit: microseconds
## expr min lq mean median uq max neval cld
## join_cent_sums(rs1, rs2) 2.1 2.1 2.4 2.2 2.4 19.1 100 a
## unjoin_cent_sums(rs3, rs2) 2.0 2.1 2.2 2.2 2.3 2.9 100 a
## unjoin_cent_sums(rs3, rs1) 2.0 2.1 2.2 2.2 2.3 5.7 100 a
resdf <- rbind(resdf, checkit)
gc()
## used (Mb) gc trigger (Mb) max used (Mb)
## Ncells 1749898 94 3.5e+06 186 2.3e+06 124
## Vcells 3620471 28 1.4e+07 107 3.4e+07 262
set.seed(54321)
x1 <- matrix(rnorm(100 * 4), ncol = 4)
x2 <- matrix(rnorm(100 * 4), ncol = 4)
max_ord <- 2L
# join them together
mobj1 <- as.centcosums(x1, max_ord)
mobj2 <- as.centcosums(x2, max_ord)
mobj3 <- as.centcosums(rbind(x1, x2), max_ord)
alt3 <- c(mobj1, mobj2)
# unjoin them, with this one weird operator:
alt2 <- mobj3 %-% mobj1
alt1 <- mobj3 %-% mobj2
checkit <- microbenchmark(as.centcosums(x1, max_ord),
mobj3 %-% mobj1)
print(checkit)
## Unit: microseconds
## expr min lq mean median uq max neval cld
## as.centcosums(x1, max_ord) 55 58 60 58 59 170 100 b
## mobj3 %-% mobj1 17 18 19 18 19 34 100 a
resdf <- rbind(resdf, checkit)
gc()
## used (Mb) gc trigger (Mb) max used (Mb)
## Ncells 1750017 94 3.5e+06 186 2.3e+06 124
## Vcells 3601115 28 1.4e+07 107 3.4e+07 262
set.seed(4422)
x <- rnorm(10000)
xpos <- runif(length(x)) + 1
xm <- matrix(x, ncol = 1)
xmps <- matrix(xpos, ncol = 1)
w <- runif(length(x))
dumb_zscore <- function(x, window) {
altz <- sapply(seq_along(x), function(iii) {
rowi <- max(1, iii - window + 1)
xrang <- x[rowi:iii]
(x[iii] - mean(xrang))/sd(xrang)
}, simplify = TRUE)
}
# run fun on each wins sized window...
silly_fun <- function(x, wins, fun, ...) {
xout <- rep(NA, length(x))
for (iii in seq_along(x)) {
xout[iii] <- fun(x[max(1, iii - wins + 1):iii],
...)
}
xout
}
wins <- 250
checkit <- microbenchmark(silly_fun(x, wins, sum, na.rm = FALSE),
silly_fun(x, wins, mean, na.rm = FALSE), running_sum(x,
wins), running_mean(x, wins), roll::roll_sum(xm,
wins), roll::roll_mean(xm, wins), roll::roll_sd(xm,
wins), RollingWindow::RollingSum(x, wins, na_method = "ignore"),
RollingWindow::RollingSum(x, wins), RollingWindow::RollingMean(x,
wins), RollingWindow::RollingStd(x, wins),
RcppRoll::roll_sum(xm, n = wins, align = "right",
fill = NA), RcppRoll::roll_mean(xm, n = wins,
align = "right", fill = NA), RcppRoll::roll_sd(xm,
n = wins, align = "right", fill = NA), running_sd(x,
wins, na_rm = FALSE, restart_period = 50000L),
running_sd(x, wins, na_rm = TRUE, restart_period = 1000L),
running_sd3(x, wins), running_skew(x, wins), running_skew4(x,
wins), running_kurt(x, wins), running_kurt5(x,
wins), running_tstat(x, wins), running_zscored(x,
wins), running_sharpe(x, wins), running_apx_median(x,
wins), running_centered(x, wins), running_scaled(x,
wins))
print(checkit)
## Unit: microseconds
## expr min lq mean median uq max neval cld
## silly_fun(x, wins, sum, na.rm = FALSE) 17074 18585 23216 20422 25782 118441 100 f
## silly_fun(x, wins, mean, na.rm = FALSE) 45077 48352 52609 51511 55202 78306 100 g
## running_sum(x, wins) 72 78 150 82 88 6792 100 a
## running_mean(x, wins) 69 76 82 78 86 123 100 a
## roll::roll_sum(xm, wins) 94 111 136 123 146 591 100 a
## roll::roll_mean(xm, wins) 102 117 139 135 156 203 100 a
## roll::roll_sd(xm, wins) 360 404 442 433 468 651 100 a
## RollingWindow::RollingSum(x, wins, na_method = "ignore") 251 280 381 301 328 7353 100 a
## RollingWindow::RollingSum(x, wins) 113 135 220 155 185 6095 100 a
## RollingWindow::RollingMean(x, wins) 146 167 251 183 217 5747 100 a
## RollingWindow::RollingStd(x, wins) 228 260 287 280 311 364 100 a
## RcppRoll::roll_sum(xm, n = wins, align = "right", fill = NA) 1645 1741 1864 1833 1944 2720 100 b
## RcppRoll::roll_mean(xm, n = wins, align = "right", fill = NA) 1649 1742 1854 1809 1945 2686 100 b
## RcppRoll::roll_sd(xm, n = wins, align = "right", fill = NA) 7964 8422 9973 8737 9353 17622 100 d
## running_sd(x, wins, na_rm = FALSE, restart_period = 50000L) 118 126 134 133 140 171 100 a
## running_sd(x, wins, na_rm = TRUE, restart_period = 1000L) 147 154 165 162 172 219 100 a
## running_sd3(x, wins) 302 320 398 332 347 6436 100 a
## running_skew(x, wins) 5068 5228 5516 5370 5743 7533 100 c
## running_skew4(x, wins) 5109 5359 5574 5522 5839 7166 100 c
## running_kurt(x, wins) 8217 8566 9025 8791 9352 15300 100 d
## running_kurt5(x, wins) 8758 9105 9555 9383 9952 13361 100 d
## running_tstat(x, wins) 357 378 397 392 413 470 100 a
## running_zscored(x, wins) 325 342 363 354 375 515 100 a
## running_sharpe(x, wins) 325 341 362 358 377 463 100 a
## running_apx_median(x, wins) 17657 18354 19319 19005 20045 25674 100 e
## running_centered(x, wins) 1095 1153 1210 1187 1278 1584 100 ab
## running_scaled(x, wins) 321 338 360 354 374 476 100 a
resdf <- rbind(resdf, checkit)
gc()
## used (Mb) gc trigger (Mb) max used (Mb)
## Ncells 1757929 94 3.5e+06 186 3.5e+06 186
## Vcells 3181449 24 1.4e+07 107 3.4e+07 262
library(readr)
FAKE_IT <- FALSE
if (FAKE_IT) {
resdf <- readr::read_csv("timings.csv")
# print(resdf)
} else {
readr::write_csv(resdf, "timings.csv")
}
Can we see them here? load all the timing data to check.
library(magrittr)
library(dplyr)
library(readr)
library(tidyr)
library(knitr)
mysernum <- as.character(packageVersion("fromo"))
allt <- data.frame(fname = dir(".", "*.csv"), stringsAsFactors = FALSE) %>%
dplyr::filter(grepl("^timings_\\d.+\\d+.csv$",
fname)) %>% group_by(fname) %>% mutate(tims = list(readr::read_csv(fname))) %>%
ungroup() %>% tidyr::unnest() %>% mutate(sernum = gsub("^timings_(.+).csv$",
"\\1", fname)) %>% dplyr::select(-fname) %>% rbind(resdf %>%
dplyr::mutate(sernum = mysernum)) %>% group_by(sernum,
expr) %>% summarize(meantime = mean(time, na.rm = TRUE)) %>%
ungroup() %>% group_by(sernum) %>% mutate(sumx_time = median(ifelse(grepl("^sum\\(x\\)$",
expr), meantime, NA), na.rm = TRUE)) %>% ungroup() %>%
mutate(normalized = meantime/sumx_time) %>% arrange(sernum) %>%
group_by(expr) %>% mutate(first_norm = first(normalized),
last_norm = last(normalized)) %>% ungroup() %>%
mutate(relchange = normalized/first_norm, last_status = last_norm/first_norm) %>%
mutate(exgrp = ifelse(grepl("^(roll|RollingWindow|RcppRoll)::",
expr), "brand_x", ifelse(grepl("^running_",
expr), "running", "summarizing")))
library(ggplot2)
ph <- allt %>% dplyr::filter(!grepl("brand_x", exgrp)) %>%
ggplot(aes(sernum, normalized, group = expr, color = expr)) +
geom_line() + geom_point() + scale_y_log10() +
guides(colour = FALSE) + theme(axis.text.x = element_text(angle = -90,
hjust = 0)) + facet_grid(exgrp ~ ., scales = "free") +
labs(x = "release", y = "mean time taken, relative to sum(x)",
title = "fromo microbenchmark timings, lasagna")
print(ph)
ph <- allt %>% dplyr::filter(!grepl("brand_x", exgrp)) %>%
ggplot(aes(sernum, relchange, group = expr, color = expr)) +
geom_line() + geom_point() + scale_y_log10() +
guides(colour = FALSE) + theme(axis.text.x = element_text(angle = -90,
hjust = 0)) + facet_grid(exgrp ~ ., scales = "free") +
labs(x = "release", y = "normalized time taken, relative to first iteration",
title = "fromo microbenchmark timings, spaghetti")
print(ph)
ph <- allt %>% dplyr::filter(!grepl("brand_x", exgrp)) %>%
ggplot(aes(sernum, relchange)) + geom_boxplot(aes(group = sernum),
alpha = 0.7) + stat_summary(aes(group = "1", color = "mean"),
fun.y = mean, geom = "line") + scale_y_log10() +
theme(axis.text.x = element_text(angle = -90, hjust = 0)) +
facet_grid(exgrp ~ ., scales = "free") + labs(x = "release",
y = "normalized time taken, relative to first iteration",
color = "stat", title = "fromo microbenchmark timings, boxplots")
print(ph)
allt %>% dplyr::filter(!grepl("brand_x", exgrp)) %>%
select(expr, sernum, relchange, last_status) %>%
tidyr::spread(key = "sernum", value = "relchange") %>%
arrange(desc(last_status)) %>% select(-last_status) %>%
head(n = 50) %>% kable()
|expr | 0.1.3.3001| 0.1.3.3200| 0.1.3.3330| 0.1.3.3400| 0.1.3.4000| 0.1.3.4100| 0.1.3.4200| 0.1.3.4300| 0.1.3.4400| 0.1.3.4500| 0.1.3.4510| 0.1.3.5000| 0.1.3.5010| 0.1.3.5020| 0.1.3.6000| 0.1.3.6100| 0.1.3.6200| 0.1.3.6300| 0.1.3.6500| 0.1.3.6510| 0.1.3.6520| 0.1.3.6530| 0.1.3.6540| 0.1.3.6550| 0.1.3.6560| 0.1.3.6600| 0.1.3.6660| 0.1.3.6661| 0.1.3.6662| 0.1.3.6665| 0.1.3.6666| 0.1.3.6667| 0.1.3.6668| 0.1.3.6701| 0.1.3.6704| 0.1.3.6790| 0.1.3.6793| 0.1.3.6794| 0.1.3.6796| |:----------------------------------------------------------------------------|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:|----------:| |running_sum(x, wins) | 1| NA| NA| NA| 2.72| 2.18| 1.95| NA| 2.02| 2.53| 2.74| 2.45| 3.23| 3.72| 2.50| 2.70| 2.74| 2.74| 2.79| 2.74| 2.76| 2.76| 2.84| 2.70| 2.77| 3.31| 2.76| 2.74| 3.29| 3.14| 2.80| 3.10| 2.85| 3.17| 2.78| 1.96| 2.10| 2.02| 3.83| |running_centered(x, wins) | 1| 0.93| 0.91| 0.91| 1.01| 0.98| 0.92| NA| 0.94| 0.84| 0.91| 0.87| 1.08| 1.06| 0.94| 1.04| 0.95| 0.95| 1.56| 1.61| 1.94| 1.86| 2.03| 2.05| 2.02| 2.04| 1.96| 1.89| 1.82| 1.94| 2.03| 1.83| 1.80| 0.99| 1.45| 1.58| 1.74| 1.66| 2.03| |running_skew(x, wins) | NA| NA| NA| NA| NA| 1.00| 1.09| NA| 1.16| 1.05| 1.18| 1.04| 1.17| 1.18| 1.05| 1.18| 1.13| 1.13| 1.29| 1.29| 1.36| 1.35| 1.39| 1.38| 1.34| 1.39| 1.93| 1.93| 1.72| 1.75| 1.70| 1.19| 1.17| 1.04| 1.43| 1.60| 1.68| 1.65| 1.79| |running_kurt(x, wins) | NA| NA| NA| NA| NA| 1.00| 0.91| NA| 0.97| 0.85| 0.95| 0.86| 0.97| 0.96| 0.86| 0.96| 0.92| 0.92| 1.05| 1.02| 1.06| 1.08| 1.09| 1.08| 1.06| 1.09| 1.04| 1.03| 0.97| 0.95| 0.93| 0.95| 0.92| 0.86| 1.26| 1.43| 1.50| 1.43| 1.65| |running_kurt5(x, wins) | 1| 0.94| 0.91| 0.91| 1.01| 1.03| 0.93| NA| 1.00| 0.90| 0.98| 0.89| 1.13| 1.13| 1.01| 1.13| 1.09| 1.09| 1.13| 1.11| 1.11| 1.12| 1.09| 1.09| 1.10| 1.12| 1.05| 1.05| 0.96| 0.94| 0.92| 0.97| 0.94| 0.88| 1.26| 1.41| 1.45| 1.45| 1.61| |running_skew4(x, wins) | 1| 0.94| 0.89| 0.89| 1.02| 1.03| 0.92| NA| 0.97| 0.87| 0.96| 0.86| 1.17| 1.18| 1.04| 1.17| 1.13| 1.13| 1.15| 1.13| 1.16| 1.19| 1.19| 1.16| 1.13| 1.17| 1.62| 1.61| 1.41| 1.45| 1.40| 0.99| 0.98| 0.87| 1.18| 1.34| 1.40| 1.36| 1.49| |running_apx_median(x, wins) | 1| 0.92| 0.90| 0.90| 1.06| 1.09| 0.93| NA| 1.00| 0.89| 1.00| 0.88| 1.05| 1.05| 0.93| 1.05| 1.02| 1.02| 1.04| 1.00| 1.02| 1.03| 1.01| 1.01| 1.01| 1.04| 1.01| 1.01| 1.01| 1.08| 0.99| 1.08| 1.06| 1.06| 1.14| 1.25| 1.31| 1.27| 1.39| |sd(x) | 1| 1.02| 1.01| 1.01| 1.01| 1.01| 1.03| 0.99| 1.01| 1.02| 1.00| 1.02| 1.02| 1.02| 1.04| 1.02| 0.69| 0.69| 1.01| 0.99| 0.99| 1.00| 1.30| 1.49| 0.99| 1.04| 1.00| 1.03| 0.77| 0.75| 0.78| 0.73| 0.95| 0.75| 0.79| 0.74| 0.78| 0.74| 1.25| |sd3(x, wts = w) | 1| 0.94| 0.94| 0.94| 0.96| 0.97| 0.90| 0.90| 0.95| 0.90| 0.97| 0.83| 1.63| 1.56| 1.50| 1.54| 1.07| 1.07| 1.07| 1.05| 1.04| 1.06| 1.03| 1.10| 1.05| 0.97| 0.97| 0.92| 0.96| 0.94| 0.86| 0.93| 0.78| 0.81| 0.71| 0.79| 0.81| 0.79| 1.08| |as.centcosums(x1, max_ord) | 1| 0.93| 1.02| 1.02| 0.96| 1.24| 0.98| 1.02| 0.98| 0.87| 1.13| 0.85| 1.12| 1.16| 0.83| 0.93| 0.92| 0.92| 1.06| 0.91| 1.07| 0.93| 0.94| 0.96| 0.98| 0.95| 1.00| 0.86| 0.87| 0.91| 0.91| 0.92| 0.93| 0.88| 0.78| 0.91| 0.99| 0.92| 1.03| |sum(x) | 1| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| |mean(x) | 1| 1.02| 1.00| 1.00| 1.01| 1.01| 1.01| 1.01| 1.01| 1.06| 0.97| 1.03| 1.02| 1.00| 1.05| 1.02| 1.00| 1.00| 1.00| 0.98| 0.98| 0.99| 1.02| 1.01| 0.98| 1.01| 0.97| 1.02| 1.00| 1.01| 1.03| 0.97| 0.99| 1.00| 1.01| 0.98| 1.02| 0.98| 0.99| |unjoin_cent_sums(rs3, rs1) | 1| 1.21| 0.97| 0.97| 0.91| 1.34| 0.88| 0.99| 0.97| 0.99| 0.98| 0.85| 1.10| 1.19| 0.99| 1.11| 1.09| 1.09| 1.08| 1.04| 0.94| 1.05| 0.92| 1.20| 1.12| 1.00| 1.03| 0.90| 1.08| 0.99| 1.22| 1.00| 1.01| 1.06| 0.91| 0.96| 1.15| 1.00| 0.98| |join_cent_sums(rs1, rs2) | 1| 1.12| 0.96| 0.96| 1.02| 1.25| 1.12| 0.97| 1.10| 1.03| 1.05| 0.93| 1.02| 1.14| 1.01| 1.11| 1.16| 1.16| 1.11| 1.03| 1.13| 1.04| 1.06| 1.25| 1.05| 1.08| 1.15| 1.05| 1.16| 0.97| 1.18| 1.02| 1.03| 1.09| 0.90| 0.98| 1.11| 0.99| 0.98| |cent_moments(x, max_order = 4, wts = w, na_rm = TRUE, normalize_wts = FALSE) | 1| 0.93| 0.94| 0.94| 1.01| 1.07| 0.96| 0.95| 1.02| 0.96| 1.06| 0.91| 1.04| 1.01| 0.97| 1.00| 0.96| 0.96| 1.02| 1.00| 1.01| 1.03| 0.98| 1.04| 1.01| 1.03| 1.03| 1.00| 0.90| 0.86| 0.79| 0.86| 0.84| 0.87| 0.78| 0.87| 0.89| 0.86| 0.96| |mobj3 %-% mobj1 | 1| 0.93| 1.03| 1.03| 0.97| 1.30| 0.95| 1.04| 0.98| 0.88| 1.17| 0.83| 1.12| 1.14| 0.88| 0.89| 0.93| 0.93| 1.05| 0.91| 1.05| 0.92| 0.94| 0.99| 1.03| 0.93| 0.98| 0.84| 0.82| 0.89| 0.86| 0.86| 0.88| 0.83| 0.77| 0.84| 0.90| 0.85| 0.94| |kurt5(x) | 1| 1.02| 1.00| 1.00| 1.09| 1.10| 1.07| 1.06| 1.12| 1.09| 1.08| 1.08| 1.15| 1.16| 1.12| 1.14| 1.09| 1.09| 1.15| 1.12| 1.11| 1.12| 1.11| 1.14| 1.12| 1.14| 1.05| 1.04| 0.95| 0.92| 0.88| 0.98| 0.97| 0.99| 0.95| 0.98| 1.00| 0.96| 0.93| |kurtosis(x) | 1| 1.00| 1.00| 1.00| 1.06| 1.06| 1.03| 1.00| 1.05| 1.04| 1.03| 1.03| 1.04| 1.07| 1.04| 1.04| 1.04| 1.04| 1.05| 1.03| 1.01| 1.03| 1.06| 1.09| 1.05| 1.06| 1.05| 1.02| 0.92| 0.91| 0.90| 0.92| 0.92| 0.93| 0.95| 0.92| 0.95| 0.92| 0.91| |skew4(x) | 1| 1.01| 1.01| 1.01| 1.07| 1.07| 1.06| 1.05| 1.10| 1.08| 1.07| 1.09| 1.14| 1.14| 1.12| 1.13| 1.09| 1.09| 1.16| 1.14| 1.13| 1.13| 1.15| 1.16| 1.12| 1.15| 1.77| 1.76| 1.59| 1.55| 1.51| 1.01| 1.00| 1.01| 0.98| 1.00| 1.03| 0.99| 0.90| |dumbk(x) | 1| 1.03| 1.01| 1.01| 1.04| 1.04| 1.01| 0.99| 1.04| 1.02| 1.02| 1.02| 1.04| 1.04| 1.03| 1.03| 0.96| 0.96| 1.04| 1.02| 1.02| 1.02| 1.02| 1.04| 1.02| 1.05| 1.03| 1.02| 0.89| 0.89| 0.89| 0.89| 0.89| 0.90| 0.89| 0.90| 0.92| 0.89| 0.90| |skewness(x) | 1| 1.00| 1.00| 1.00| 1.06| 1.07| 1.04| 1.01| 1.06| 1.05| 1.03| 1.03| 1.06| 1.08| 1.06| 1.05| 0.98| 0.98| 1.08| 1.03| 1.03| 1.04| 1.04| 1.06| 1.03| 1.06| 1.04| 1.03| 0.90| 0.89| 0.88| 0.90| 0.89| 0.90| 0.88| 0.90| 0.92| 0.88| 0.89| |c(obj1, obj2) | 1| 1.29| 0.97| 0.97| 0.93| 0.98| 1.04| 0.87| 0.95| 0.85| 0.85| 0.81| 0.89| 0.88| 0.83| 0.96| 0.93| 0.93| 0.88| 1.01| 0.87| 0.91| 0.92| 0.90| 0.91| 1.01| 1.03| 0.94| 0.87| 0.89| 1.37| 0.90| 0.90| 0.92| 0.80| 0.84| 0.92| 0.87| 0.87| |as.centsums(x1, 4) | 1| 0.84| 0.86| 0.86| 0.92| 0.99| 0.91| 0.89| 0.93| 0.86| 0.90| 0.84| 0.95| 0.95| 0.96| 0.95| 0.92| 0.92| 0.96| 0.96| 0.97| 0.98| 1.00| 0.91| 0.97| 0.94| 0.93| 0.90| 0.82| 0.80| 0.70| 0.84| 0.84| 0.85| 0.75| 0.84| 0.83| 0.87| 0.85| |unjoin_cent_sums(rs3, rs2) | 1| 0.86| 0.75| 0.75| 0.87| 1.05| 0.95| 0.77| 0.78| 0.82| 0.84| 0.73| 0.81| 0.99| 0.78| 0.92| 0.93| 0.93| 0.86| 0.86| 0.81| 0.87| 0.84| 1.03| 0.83| 0.88| 1.05| 0.82| 0.92| 0.84| 1.08| 0.87| 0.83| 0.91| 0.72| 0.83| 0.92| 0.85| 0.85| |sd3(x) | 1| 1.03| 1.01| 1.01| 1.03| 1.03| 1.02| 1.00| 1.02| 1.01| 0.99| 1.00| 1.77| 1.80| 1.71| 1.76| 1.34| 1.34| 1.33| 1.30| 1.31| 1.31| 1.31| 1.35| 1.01| 1.01| 1.00| 0.99| 1.00| 0.98| 0.97| 1.00| 0.80| 0.83| 0.76| 0.82| 0.83| 0.81| 0.85| |obj3 %-% obj1 | 1| 1.53| 0.96| 0.96| 0.91| 0.97| 1.00| 0.87| 1.00| 0.85| 0.85| 0.79| 0.92| 0.95| 0.90| 0.90| 0.96| 0.96| 0.97| 1.02| 0.92| 0.91| 0.83| 0.90| 0.91| 0.98| 1.04| 0.86| 0.87| 0.89| 1.41| 0.88| 0.92| 0.89| 0.78| 0.84| 0.91| 0.86| 0.85| |as.centsums(x1, 2) | 1| 0.82| 0.81| 0.81| 0.81| 0.88| 0.80| 0.78| 0.81| 0.77| 0.78| 0.72| 1.38| 1.38| 1.41| 1.38| 0.98| 0.98| 0.99| 0.98| 0.99| 1.02| 0.99| 0.94| 0.83| 0.82| 0.83| 0.78| 0.79| 0.80| 0.71| 0.79| 0.80| 0.79| 0.72| 0.80| 0.78| 0.81| 0.83| |as.centsums(x1, 3) | 1| 0.85| 0.86| 0.86| 0.91| 0.96| 0.89| 0.87| 0.92| 0.84| 0.89| 0.83| 0.95| 0.95| 0.96| 0.94| 0.91| 0.91| 0.99| 0.97| 0.99| 1.00| 1.00| 0.93| 0.97| 0.96| 1.54| 1.46| 1.35| 1.31| 1.17| 0.84| 0.83| 0.83| 0.75| 0.84| 0.82| 0.85| 0.82| |silly_fun(x, wins, mean, na.rm = FALSE) | 1| 0.91| 0.89| 0.89| 0.94| 0.94| 0.88| NA| 0.92| 0.82| 0.90| 0.80| 0.92| 0.88| 0.79| 0.88| 0.76| 0.76| 0.88| 0.88| 0.87| 0.89| 0.88| 0.87| 0.89| 0.92| 0.86| 0.90| 0.66| 0.71| 0.59| 0.67| 0.64| 0.65| 0.59| 0.65| 0.66| 0.66| 0.72| |running_sum(x, wins, robust = FALSE) | NA| 1.00| 0.66| 0.66| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| |silly_fun(x, wins, sum, na.rm = FALSE) | 1| 0.92| 0.90| 0.90| 0.90| 0.90| 0.82| NA| 0.87| 0.77| 0.87| 0.76| 0.86| 0.88| 0.76| 0.83| 0.67| 0.67| 0.86| 0.84| 0.84| 0.85| 0.87| 0.86| 0.84| 0.86| 0.82| 0.86| 0.49| 0.60| 0.49| 0.54| 0.53| 0.53| 0.46| 0.51| 0.56| 0.55| 0.60| |running_sd3(x, wins) | NA| NA| NA| NA| 1.00| 1.04| 0.86| NA| 0.95| 0.78| 0.88| 0.80| 2.14| 2.03| 1.88| 2.05| 2.03| 2.03| 1.56| 1.46| 1.85| 1.60| 1.76| 1.69| 1.44| 1.59| 1.43| 1.35| 1.47| 1.47| 1.22| 1.33| 1.23| 0.53| 0.40| 0.46| 0.47| 0.46| 0.59| |running_tstat(x, wins) | 1| 0.92| 0.94| 0.94| 0.99| 1.01| 0.82| NA| 0.86| 0.80| 0.90| 0.76| 1.23| 1.23| 1.10| 1.14| 1.18| 1.18| 1.13| 1.13| 1.43| 1.50| 1.48| 1.44| 1.33| 1.28| 1.28| 1.35| 1.19| 1.38| 1.16| 1.31| 1.21| 0.55| 0.44| 0.50| 0.52| 0.51| 0.55| |running_scaled(x, wins) | 1| 0.94| 0.91| 0.91| 0.98| 1.03| 0.88| NA| 0.92| 0.79| 0.88| 0.79| 1.19| 1.19| 1.08| 1.19| 1.15| 1.15| 1.15| 1.15| 1.53| 1.47| 1.48| 1.53| 1.27| 1.40| 1.31| 1.31| 1.14| 1.25| 1.09| 1.20| 1.12| 0.72| 0.41| 0.46| 0.48| 0.47| 0.51| |running_sharpe(x, wins) | 1| 0.99| 0.90| 0.90| 0.98| 1.02| 0.84| NA| 0.90| 0.79| 0.88| 0.77| 1.20| 1.19| 1.05| 1.11| 1.13| 1.13| 1.11| 1.08| 1.55| 1.42| 1.40| 1.44| 1.28| 1.31| 1.29| 1.34| 1.12| 1.29| 1.11| 1.26| 1.19| 0.52| 0.40| 0.45| 0.47| 0.46| 0.51| |running_zscored(x, wins) | 1| 0.90| 0.88| 0.88| 1.01| 0.98| 0.80| NA| 0.89| 0.77| 0.84| 0.78| 1.20| 1.17| 1.02| 1.14| 1.10| 1.10| 1.15| 1.09| 1.47| 1.41| 1.44| 1.42| 1.28| 1.29| 1.25| 1.26| 1.09| 1.29| 1.07| 1.20| 1.12| 0.51| 0.39| 0.44| 0.47| 0.44| 0.49| |running_sum(x, wins, robust = TRUE) | NA| 1.00| 0.48| 0.48| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| NA| |slow_sd(x, w) | 1| 0.94| 0.89| 0.89| 0.47| 0.49| 0.48| 0.47| 0.48| 0.47| 0.55| 0.44| 0.48| 0.47| 0.49| 0.46| 0.54| 0.54| 0.48| 0.47| 0.46| 0.46| 0.45| 0.49| 0.46| 0.49| 0.47| 0.46| 0.42| 0.41| 0.39| 0.39| 0.40| 0.40| 0.37| 0.40| 0.43| 0.41| 0.45| |running_mean(x, wins) | 1| 0.92| 0.59| 0.59| 0.46| 0.47| 0.53| NA| 0.56| 0.66| 0.72| 0.52| 0.59| 0.59| 0.53| 0.70| 0.59| 0.59| 0.81| 0.77| 0.60| 0.71| 0.63| 0.70| 0.59| 0.62| 0.71| 0.60| 0.60| 0.64| 0.54| 0.60| 0.59| 0.60| 0.53| 0.80| 1.14| 0.82| 0.45| |as.centsums(x1, 1) | 1| 0.81| 0.82| 0.82| 0.85| 0.92| 0.85| 0.81| 0.87| 0.83| 0.85| 0.77| 0.87| 0.85| 0.93| 0.87| 0.35| 0.35| 0.36| 0.35| 0.36| 0.36| 0.36| 0.34| 0.35| 0.36| 0.35| 0.34| 0.34| 0.34| 0.31| 0.34| 0.34| 0.34| 0.30| 0.34| 0.33| 0.35| 0.35| |running_sd(x, wins, na_rm = TRUE, restart_period = 1000L) | NA| NA| NA| NA| 1.00| 1.03| 0.87| NA| 0.87| 0.76| 0.87| 0.75| 1.17| 1.08| 1.07| 0.96| 0.89| 0.89| 1.20| 1.24| 1.69| 1.79| 1.71| 1.64| 1.51| 1.52| 1.48| 1.61| 1.24| 1.41| 1.20| 1.31| 1.29| 0.43| 0.29| 2.34| 2.49| 2.49| 0.34| |running_sd(x, wins, na_rm = FALSE, restart_period = 50000L) | NA| NA| NA| NA| 1.00| 1.03| 0.86| NA| 0.90| 0.85| 0.92| 0.83| 1.07| 1.06| 1.07| 1.02| 1.00| 1.00| 1.30| 1.35| 1.94| 2.04| 1.90| 1.90| 1.77| 1.74| 1.73| 1.81| 1.50| 1.71| 1.43| 1.55| 1.52| 0.42| 0.28| 0.31| 0.33| 0.32| 0.33|
allt %>% dplyr::filter(!grepl("brand_x", exgrp)) %>%
select(-sernum, -relchange, -meantime, -sumx_time,
-normalized) %>% distinct(expr, .keep_all = TRUE) %>%
arrange(desc(last_status)) %>% head(n = 20) %>%
kable()
|expr | first_norm| last_norm| last_status|exgrp | |:----------------------------------------------------------------------------|----------:|---------:|-----------:|:-----------| |running_sum(x, wins) | 0.51| 1.94| 3.83|running | |running_centered(x, wins) | 7.68| 15.58| 2.03|running | |running_skew(x, wins) | 39.66| 71.05| 1.79|running | |running_kurt(x, wins) | 70.61| 116.25| 1.65|running | |running_kurt5(x, wins) | 76.25| 123.07| 1.61|running | |running_skew4(x, wins) | 48.07| 71.80| 1.49|running | |running_apx_median(x, wins) | 179.28| 248.85| 1.39|running | |sd(x) | 5.82| 7.27| 1.25|summarizing | |sd3(x, wts = w) | 13.06| 14.10| 1.08|summarizing | |as.centcosums(x1, max_ord) | 0.75| 0.77| 1.03|summarizing | |sum(x) | 1.00| 1.00| 1.00|summarizing | |mean(x) | 2.07| 2.04| 0.99|summarizing | |unjoin_cent_sums(rs3, rs1) | 0.03| 0.03| 0.98|summarizing | |join_cent_sums(rs1, rs2) | 0.03| 0.03| 0.98|summarizing | |cent_moments(x, max_order = 4, wts = w, na_rm = TRUE, normalize_wts = FALSE) | 200.65| 192.94| 0.96|summarizing | |mobj3 %-% mobj1 | 0.26| 0.24| 0.94|summarizing | |kurt5(x) | 173.12| 160.21| 0.93|summarizing | |kurtosis(x) | 98.46| 90.06| 0.91|summarizing | |skew4(x) | 97.66| 87.71| 0.90|summarizing | |dumbk(x) | 209.85| 188.01| 0.90|summarizing |
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.