# Some environment vector
vec_env <- seq(-2, 2)
# Shape function
expr <- expression(
cmax * exp(
- exp(rho * (x - xopt) - 6) -
sigmagaus * (x - xopt)^2
))
# Theta
theta <- c(cmax = 1, xopt = 0.9, rho = 8, sigmagaus = 0.4)
# G, only for cmax and xopt
G <- matrix(c(0.1, 0.01,
0.01, 0.05),
ncol = 2)
# Computing V_gen
rn_vgen(theta = theta,
G_theta = G,
env = vec_env,
shape = expr,
fixed = c(3, 4))
# Note that fixed is set for the third and forth parameters than are not in G
# Applying some weighting according to a normal distribution
rn_vgen(theta = theta,
G_theta = G,
env = vec_env,
shape = expr,
fixed = c(3, 4),
wt_env = dnorm(vec_env))
# Setting average to FALSE allows to obtain the value for each environment
rn_vgen(theta = theta,
G_theta = G,
env = vec_env,
shape = expr,
fixed = c(3, 4),
average = FALSE)
# If a polynomial was used, it is possible to use the linear modeling rather having
# to compute integrals
theta <- c(a = 1.5, b = 0.5, c = -0.5)
X <- cbind(1, vec_env, (vec_env - mean(vec_env))^2)
G <- 0.1 * diag(3)
rn_vgen(theta = theta,
G_theta = G,
X = X)
# Should be very close to the computation with integration
rn_vgen(theta = theta,
G_theta = G,
env = vec_env,
shape = expression(a + b * x + c * x^2))
Run the code above in your browser using DataLab