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 438.107 467.111 504.5707 484.027 543.483 643.230 100
#> n1e3 1134.205 1359.764 1544.2201 1447.153 1551.878 5808.608 100
#> n1e4 10451.783 12451.805 14423.6323 14777.522 15706.479 20832.022 100
#> n1e5 162681.421 182844.891 217144.2352 212064.073 246101.127 330112.434 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
#> p5 712.929 759.060 832.3009 787.6685 854.1625 3850.047
#> p25 2733.305 2796.123 3029.4899 2839.7885 2914.0220 10315.038
#> p100 21316.264 23767.950 25978.6599 24172.9855 28801.5385 44886.742
#> p400 239958.180 265454.307 299205.4828 286406.2430 313736.7190 481511.243
#> neval cld
#> 100 a
#> 100 a
#> 100 b
#> 100 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.