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 \times 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
#> n1e2 480.259 552.6765 605.5336 605.2785 663.4835 747.412
#> n1e3 1341.880 1584.8560 1817.1119 1755.0720 1923.7255 4458.305
#> n1e4 12227.928 15504.0695 18338.3115 17224.0770 19222.8105 104056.099
#> n1e5 248277.438 284915.2620 333091.8719 327406.7725 390166.0540 492460.706
#> neval cld
#> 100 a
#> 100 a
#> 100 b
#> 100 c
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 776.637 857.5115 1047.512 954.4555 1097.735 2311.881 100
#> p25 2995.186 3093.3480 3720.127 3245.1005 3945.950 7162.429 100
#> p100 23567.613 26633.9825 33190.404 31544.7910 37026.504 73363.918 100
#> p400 276768.597 329771.0900 417690.242 398333.6365 474940.140 737572.795 100
#> cld
#> a
#> a
#> b
#> c
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.