## ---- echo=FALSE,warning=FALSE,error=FALSE,message=FALSE----------------------
library(rstan)
library(EcoEnsemble)

## ----eval=FALSE---------------------------------------------------------------
#  inv_wish_st_mod <- stan_model(model_code="data {
#    int<lower=0> N;
#    real nu;
#    matrix[N,N] mat_cov;
#  }
#  parameters {
#    cov_matrix[N] Sigma;
#  }
#  model {
#    Sigma ~ inv_wishart(nu, mat_cov);
#  }
#  ")

## ----eval=FALSE---------------------------------------------------------------
#  fit.iw <- sampling(inv_wish_st_mod,data=list(N=4,nu=2*4,mat_cov=diag(4)))

## ----echo=FALSE---------------------------------------------------------------
load("data/ExploringPriors_invWishartDensities.RData")

## ----eval = FALSE-------------------------------------------------------------
#  ex.fit.iw <- extract(fit.iw)
#  plot(density(ex.fit.iw$Sigma[,1,1]),main="",xlab=expression(lambda),xlim=c(0,2))

## ----plotDensity, echo = FALSE------------------------------------------------
plot(invWishartDensity,main="",xlab=expression(lambda),xlim=c(0,2))

## ----eval = FALSE-------------------------------------------------------------
#  sd.2050 <- sqrt(33*ex.fit.iw$Sigma[,1,1])
#  plot(density(sqrt(33*ex.fit.iw$Sigma[,1,1])),main="",
#       xlab="standard deviation in 2050",xlim=c(0,5))

## ----plotSDDensity, echo = FALSE----------------------------------------------
plot(density(sd.2050),main="",xlab="standard deviation in 2050",xlim=c(0,5))

## -----------------------------------------------------------------------------
x <- seq(5,20,length.out=1000)
plot(x,colMeans(sapply(x, function(xs){dnorm(xs,tail(SSB_obs$Cod,n=1),sd.2050)})),
     type="l",axes=F,ylab="density",xlab="Cod in 2050 (1000 tonnes)")
labsx <- log(signif(exp(seq(5,20,length.out=7)),1))
axis(1,at=labsx,labels=c(exp(labsx)/1000))
axis(2)
abline(v=tail(SSB_obs$Cod,n=1))
abline(v=range(SSB_obs$Cod),lty=2)
box()

## -----------------------------------------------------------------------------
xs <- seq(0,5,0.001)
plot(xs,dgamma(xs,1,1),xlab=expression(pi[gamma,i]^2),ylab="density",type="l")

## -----------------------------------------------------------------------------
pis <- rgamma(1e5,1,1)
plot(density(sqrt(2 * pis)),xlab="Standard deviation",ylab="Density",main="")

## -----------------------------------------------------------------------------
xs <- seq(0,5,length.out=1000)
plot(xs,2*colMeans(sapply(xs, function(x){dnorm(x,0,sqrt(2*pis))})),
     type="l",axes=T,ylab="density",xlab="Difference of two models")

## ----eval=FALSE---------------------------------------------------------------
#  cor_pri_st <- stan_model(model_code = " functions{
#    real priors_cor_hierarchical_beta(matrix ind_st_cor, int N, matrix M){
#      real log_prior = 0;
#      for (i in 1:(N-1)){
#        for (j in (i+1):N){
#          log_prior += beta_lpdf(0.5*(ind_st_cor[i, j] + 1)| M[i, j], M[j, i] );
#        }
#      }
#      return log_prior;
#    }
#  }
#  data {
#  
#    vector[4] cor_p;
#  }
#  
#  parameters {
#    matrix <lower=0>[5,5] beta_pars;
#    corr_matrix[5] rho[4];
#  }
#  model {
#  
#    for (i in 1:4){
#      for (j in (i+1):5){
#        beta_pars[i,j] ~ gamma(cor_p[1],cor_p[2]);
#        beta_pars[j,i] ~ gamma(cor_p[3],cor_p[4]);
#      }
#    }
#    for(i in 1:4){
#      target += priors_cor_hierarchical_beta(rho[i],5,beta_pars);
#      diagonal(beta_pars) ~ std_normal();
#    }
#  }
#  ")
#  fit_cor <- sampling(cor_pri_st,data=list(cor_p=0.1 * c(1,1,1,1)),chains=4)
#  ex.fit <- extract(fit_cor)
#  def.par <- par(no.readonly=TRUE) #Old pars to reset afterwards
#  par(mfrow=c(2,2))
#  plot(density(ex.fit$beta_pars[,1,2]),xlab=expression(alpha[rho]),main="")
#  plot(density(log(ex.fit$beta_pars[,1,2]/ex.fit$beta_pars[,2,1])),main="",
#       xlab="Expected log odds")
#  plot(density(ex.fit$rho[,1,1,2]),xlab=expression(rho),main="")
#  xs <- seq(-1,1,length.out=100)
#  lines(xs,dbeta((xs+1)/2,2,2)/2,col="red")
#  plot(density(apply(ex.fit$rho[,,1,2],1,var)),xlim=c(0,0.35),main="",
#       xlab=expression(var(rho)))
#  par(def.par)

## ----echo=FALSE, fig.dim = c(7,6)---------------------------------------------
def.par <- par(no.readonly=TRUE) #old pars
load("data/ExploringPriors_HierBetaDensities.RData")
par(mfrow=c(2,2))
plot(beta_marginal,xlab=expression(alpha[rho]),main="")
plot(expected_log_odds,main="",xlab="Expected log odds")
plot(rho_density,xlab=expression(rho),main="")
xs <- seq(-1,1,length.out=100)
lines(xs,dbeta((xs+1)/2,2,2)/2,col="red")
plot(rho_var_density,xlim=c(0,0.35),main="",xlab=expression(var(rho)))

## ----eval=FALSE---------------------------------------------------------------
#  st_mod1 <- stan_model(model_code = "data {
#    vector[4] gam_p;
#  }
#  parameters {
#    vector [5] log_sha_st_var[4];
#    vector[5] gamma_mean;
#    vector<lower=0> [5] gamma_var;
#  }
#  model {
#    gamma_mean ~ normal(gam_p[1],gam_p[2]);
#    gamma_var ~ inv_gamma(gam_p[3],gam_p[4]);
#    for (i in 1:4){
#      log_sha_st_var[i] ~ normal(gamma_mean,sqrt(gamma_var));
#  
#    }
#  }
#  generated quantities{
#    vector[5] sha_st_var[4];
#    for (i in 1:4){
#      sha_st_var[i] = exp(log_sha_st_var[i]);
#    }
#  }
#  ")
#  test.fit_norm <- sampling(st_mod1,data=list(gam_p=c(-3,1,8,4)),chains=4)
#  ex.fit <- extract(test.fit_norm)
#  def.par <- par(no.readonly=TRUE) #old pars
#  par(mfrow=c(2,2))
#  plot(density(ex.fit$gamma_mean[,1]),main="",xlab=expression(mu[pi]))
#  plot(density(ex.fit$gamma_var[,1]),xlim=c(0,1),main="",xlab=expression(sigma[pi]^2))
#  plot(density(ex.fit$sha_st_var[,1,1]),xlim=c(0,1),main="",xlab=expression(pi["k,i"]^2))
#  plot(density(apply(ex.fit$sha_st_var[,,1],1,var)),xlim=c(0,0.2),
#       xlab=expression(var(pi["k,i"]^2)) ,main="")
#  par(def.par)

## ----echo = FALSE,fig.dim=c(7, 6)---------------------------------------------
load("data/ExploringPriors_HierGammaDensities.RData")
par(mfrow=c(2,2))
plot(gamma_mean,main="",xlab=expression(mu[pi]))
plot(gamma_var,xlim=c(0,1),main="",xlab=expression(sigma[pi]^2))
plot(sha_st_var,xlim=c(0,1),main="",xlab=expression(pi["k,i"]^2))
plot(sha_st_var_var,xlim=c(0,0.2),xlab=expression(var(pi["k,i"]^2)) ,main="")

## -----------------------------------------------------------------------------
hist(rbeta(1e5,2,2)*2 - 1,probability = T,xlab=expression(r["k,i"]),main="")

## -----------------------------------------------------------------------------
plot(density(rgamma(1e5,1,10)),xlim=c(0,0.5), main="",xlab=expression(pi[eta]^2))

## -----------------------------------------------------------------------------
plot(density(sqrt(rgamma(1e5,1,10))),xlim=c(0,0.5), main="",xlab=expression(pi[eta]))

## -----------------------------------------------------------------------------
hist(rbeta(1e5,2,2)*2 - 1,probability = T,xlab=expression(r["k,i"]),main="")

## ----eval=FALSE,fig.dim=c(7,6)------------------------------------------------
#  priors <- EnsemblePrior(4,
#                          ind_st_params =IndSTPrior("hierarchical",list(-3,1,8,4),
#                                                    list(0.1,0.1,0.1,0.1),AR_params=c(2,2)),
#                          ind_lt_params = IndLTPrior("lkj",list(1,1),1),
#                          sha_st_params = ShaSTPrior("lkj",list(1,10),1,AR_params=c(2,2)),
#                          sha_lt_params = 5
#  )
#  prior_density <- prior_ensemble_model(priors, M = 4)
#  samples <- sample_prior(observations = list(SSB_obs, Sigma_obs),
#               simulators = list(list(SSB_ewe, Sigma_ewe,"EwE"),
#                     list(SSB_fs ,  Sigma_fs,"FishSums"),
#                     list(SSB_lm ,  Sigma_lm,"LeMans"),
#                     list(SSB_miz, Sigma_miz,"mizer")),
#               priors=priors,
#               sam_priors = prior_density)
#  plot(samples)

## ----echo =FALSE,fig.dim=c(7,6)-----------------------------------------------
knitr::include_graphics("data/p_priors.png")

