## Set seed
set.seed(493825)
## We will assume that our observations of N, k1, and theta=(a,b,c) are
## distributed with mean mu_par and variance sigma_par
mu_par=c(N=10000,k1=0.35,A=3,B=1.5,C=0.1)
sigma_par=cbind(
c(100^2, 1, 0, 0, 0),
c( 1, 0.07^2, 0, 0, 0),
c( 0, 0, 0.5^2, 0.05, -0.001),
c( 0, 0, 0.05, 0.4^2, -0.002),
c( 0, 0, -0.001, -0.002, 0.02^2)
)
# Firstly, we make 500 observations
par_obs=rmnorm(500,mean=mu_par,varcov=sigma_par)
# Optimal holdout size and asymptotic and empirical confidence intervals
ohs=optimal_holdout_size(N=mean(par_obs[,1]),k1=mean(par_obs[,2]),
theta=colMeans(par_obs[,3:5]))$size
ci_a=ci_ohs(N=par_obs[,1],k1=par_obs[,2],theta=par_obs[,3:5],alpha=0.05,
seed=12345,mode="asymptotic")
ci_e=ci_ohs(N=par_obs[,1],k1=par_obs[,2],theta=par_obs[,3:5],alpha=0.05,
seed=12345,mode="empirical")
# Assess cover at various m
m_values=c(20,30,50,100,150,200,300,500,750,1000,1500)
ntrial=5000
alpha_trial=0.1 # use 90% confidence intervals
nstar_true=optimal_holdout_size(N=mu_par[1],k1=mu_par[2],
theta=mu_par[3:5])$size
## The matrices indicating cover take are included in this package but take
## around 30 minutes to generate. They are generated using the code below
## (including random seeds).
data(ci_cover_a_yn)
data(ci_cover_e_yn)
if (!exists("ci_cover_a_yn")) {
ci_cover_a_yn=matrix(NA,length(m_values),ntrial) # Entry [i,j] is 1 if ith
## asymptotic CI for jth value of m covers true nstar
ci_cover_e_yn=matrix(NA,length(m_values),ntrial) # Entry [i,j] is 1 if ith
## empirical CI for jth value of m covers true nstar
for (i in 1:length(m_values)) {
m=m_values[i]
for (j in 1:ntrial) {
# Set seed
set.seed(j*ntrial + i + 12345)
# Make m observations
par_obs=rmnorm(m,mean=mu_par,varcov=sigma_par)
ci_a=ci_ohs(N=par_obs[,1],k1=par_obs[,2],theta=par_obs[,3:5],
alpha=alpha_trial,mode="asymptotic")
ci_e=ci_ohs(N=par_obs[,1],k1=par_obs[,2],theta=par_obs[,3:5],
alpha=alpha_trial,mode="empirical",n_boot=500)
if (nstar_true>ci_a[1] & nstar_trueci_e[1] & nstar_trueRun the code above in your browser using DataLab