All the tests were done on an Arch Linux x86_64 machine with an Intel(R) Core(TM) i7 CPU (1.90GHz).
We show the performance of computing empirical likelihood with
el_mean()
. We test the computation speed with simulated
data sets in two different settings: 1) the number of observations
increases with the number of parameters fixed, and 2) the number of
parameters increases with the number of observations fixed.
We fix the number of parameters at p = 10, and simulate the parameter
value and n × p
matrices using rnorm()
. In order to ensure convergence with
a large n, we set a large
threshold value using el_control()
.
library(ggplot2)
library(microbenchmark)
set.seed(3175775)
p <- 10
par <- rnorm(p, sd = 0.1)
ctrl <- el_control(th = 1e+10)
result <- microbenchmark(
n1e2 = el_mean(matrix(rnorm(100 * p), ncol = p), par = par, control = ctrl),
n1e3 = el_mean(matrix(rnorm(1000 * p), ncol = p), par = par, control = ctrl),
n1e4 = el_mean(matrix(rnorm(10000 * p), ncol = p), par = par, control = ctrl),
n1e5 = el_mean(matrix(rnorm(100000 * p), ncol = p), par = par, control = ctrl)
)
Below are the results:
result
#> Unit: microseconds
#> expr min lq mean median uq max neval
#> n1e2 437.826 474.669 513.7183 490.679 552.279 811.732 100
#> n1e3 1160.682 1374.436 1587.7349 1483.053 1669.360 5473.427 100
#> n1e4 10807.493 12900.803 14663.8662 15103.377 15942.154 19567.632 100
#> n1e5 162848.422 186437.025 218985.8928 215259.660 249810.099 339034.582 100
#> cld
#> a
#> a
#> b
#> c
autoplot(result)
This time we fix the number of observations at n = 1000, and evaluate empirical likelihood at zero vectors of different sizes.
n <- 1000
result2 <- microbenchmark(
p5 = el_mean(matrix(rnorm(n * 5), ncol = 5),
par = rep(0, 5),
control = ctrl
),
p25 = el_mean(matrix(rnorm(n * 25), ncol = 25),
par = rep(0, 25),
control = ctrl
),
p100 = el_mean(matrix(rnorm(n * 100), ncol = 100),
par = rep(0, 100),
control = ctrl
),
p400 = el_mean(matrix(rnorm(n * 400), ncol = 400),
par = rep(0, 400),
control = ctrl
)
)
result2
#> Unit: microseconds
#> expr min lq mean median uq max neval
#> p5 725.351 757.195 829.9413 794.6605 828.669 3724.539 100
#> p25 2860.449 2897.328 3122.2867 2928.5850 3003.845 10191.485 100
#> p100 23272.003 25779.696 27944.1674 26211.3495 30855.341 46677.677 100
#> p400 266378.920 292177.270 325752.7224 313094.7030 338693.101 499110.438 100
#> cld
#> a
#> a
#> b
#> c
autoplot(result2)
On average, evaluating empirical likelihood with a 100000×10 or 1000×400 matrix at a parameter value satisfying the convex hull constraint takes less than a second.