Goal: Replicate simulation in Section 4.1 of Wang & Shi (2014) [GGPFR].

20 replicates per setting.

Model:

GGPFR also uses “squared exponential” covariance structure for fitting. Basis dimension for \(\beta_0(t)\) chosen as in the article.

Results

Boxplots show results for each of the 20 replicates per combination of settings.

Results: RMSE

plot of chunk unnamed-chunk-3plot of chunk unnamed-chunk-3plot of chunk unnamed-chunk-3

Mean RMSEs:

group_by(tbl_df(res), n, g, alg) %>%
    filter(n==60) %>%
    summarise(beta0 = mean(rmse_beta0), 
              nu = mean(rmse_nu),
              eta = mean(rmse_eta)) 
## Source: local data frame [6 x 6]
## Groups: n, g
## 
##    n  g   alg  beta0     nu    eta
## 1 60 21 ggpfr 0.2171 0.3068 0.3714
## 2 60 21  pffr 0.2222 0.3140 0.3824
## 3 60 41 ggpfr 0.1858 0.2713 0.3263
## 4 60 41  pffr 0.1675 0.2929 0.3355
## 5 60 61 ggpfr 0.1603 0.2569 0.2977
## 6 60 61  pffr 0.1474 0.2794 0.3110

Results in Wang/Shi for rmse_eta are different, they get mean RMSEs 0.3193, 0.2639, 0.2387 for \(n=60; g=20, 40, 60\)….

Results: CIs

Approximate CIs for \(\eta_i(t)\). Nominal level: 90%

plot of chunk unnamed-chunk-5plot of chunk unnamed-chunk-5plot of chunk unnamed-chunk-5

Arrows connect results on same data.

Mean Coverage:

group_by(tbl_df(res), n, g, alg) %>%
    summarise(coverage = mean(cover_eta)) 
## Source: local data frame [12 x 4]
## Groups: n, g
## 
##     n  g   alg coverage
## 1  30 21 ggpfr   0.5829
## 2  30 21  pffr   0.7767
## 3  30 41 ggpfr   0.6521
## 4  30 41  pffr   0.8024
## 5  30 61 ggpfr   0.6274
## 6  30 61  pffr   0.8143
## 7  60 21 ggpfr   0.7438
## 8  60 21  pffr   0.8085
## 9  60 41 ggpfr   0.7834
## 10 60 41  pffr   0.8335
## 11 60 61 ggpfr   0.7906
## 12 60 61  pffr   0.8755

Results: Computation times

n_obs is number of curves n times number of points per curve g.

Computation times for GGPFR given for a single run using pre-specified number of basis functions for estimating \(\beta_0(t)\). Since BIC-based selection of the basis dimension requires \(k\) runs for selecting between \(k\) candidate numbers of basis functions, actual computation times in practical applications will increase roughly \(k\)-fold.

plot of chunk unnamed-chunk-7plot of chunk unnamed-chunk-7

Median times (minutes):

group_by(tbl_df(res), n, g, alg) %>%
    summarise(time = median(time)/60) 
## Source: local data frame [12 x 4]
## Groups: n, g
## 
##     n  g   alg    time
## 1  30 21 ggpfr   4.522
## 2  30 21  pffr   1.485
## 3  30 41 ggpfr 177.321
## 4  30 41  pffr   4.318
## 5  30 61 ggpfr 279.166
## 6  30 61  pffr   5.916
## 7  60 21 ggpfr  19.987
## 8  60 21  pffr   5.782
## 9  60 41 ggpfr 466.838
## 10 60 41  pffr  24.653
## 11 60 61 ggpfr 510.688
## 12 60 61  pffr  39.042

Computational Details:

Using pffr() from refundDevel at r177 on R-3.1.0 with mgcv_1.8-3. Using MATLAB 7.12.0.635 (R2011a) 64-bit (glnxa64). Simulations ran on a server with 32 Quad-Core AMD Opterons 8384 (2.6 GHz).