Description Usage Arguments Value Examples
View source: R/create_profile_function.R
Calculating the Profile Likelihood
1 2 3 4 5 |
which.par |
Name of the parameter that a profile should be obtained for. If multiple profiles are supposed to be calculated, a vector can be passed along as well. Alternatively, supplying "all.par" calculates the profiles for all available parameters. |
par.names |
A vector containing the names and initial values for all available parameters. |
range |
A list containing the respective ranges for which the profile should be calculated. |
fit.fn |
A cost function. Has to take the complete parameter vector as an input (needs to be names |
bind.old |
Logical. If TRUE, previously calculated values will also be added to the profile if available. Default to FALSE. |
delete.old |
Logical. If TRUE, the individual point-wise fits created by |
do.not.fit |
A named vector containing the values of the parameters that should not be fitted. Default to NULL. |
homedir |
The directory to which the results should be saved to. |
optim.runs |
The number of times that each model will be fitted by |
random.borders |
The ranges from which the random initial parameter conditions for all |
refit |
If TRUE, previously fitted ranges will be fitted again and results will be overwritten according to the value set in |
save.rel.diff |
A numeric value indicating a relative threshold when to overwrite a pre-existing result. Default to 0, which means that results get overwritten if an improvement is made. |
con.tol |
The absolute convergence tolerance of each fitting run (see Details). Default is set to 0.1. |
control.optim |
Control parameters passed along to |
parscale.pars |
Logical. If TRUE (default), the |
future.off |
Logical. If TRUE, |
... |
Additional parameters that can be passed along to |
A list containing the respective profile values for every specified parameter.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #create data with standard deviation of 1
x.values <- 1:7
y.values <- 9 * x.values^2 - exp(2 * x.values)
sd.y.values <- rep(1,7)
#define initial parameter values
inits <- c(p1 = 3, p2 = 4, p3 = -2, p4 = 2, p5 = 0)
#define cost function that returns the negative log-likelihood
cost_function <- function(parms, x.vals, y.vals, sd.y){
# restrict the search range to -5 to +5
if(max(abs(parms)) > 5){
return(NA)
}
with(as.list(c(parms)), {
res <- p1*4 + p2*x.vals + p3^2*x.vals^2 + p4*sin(x.vals) - exp(p5*x.vals)
diff <- sum((res - y.vals)^2/sd.y)
})
}
#perform model selection
res <- create.profile(which.par = "all.par",
par.names = inits,
range = list(seq(0, 2, 0.1),
seq(0, 5, 1),
seq(2.9, 3.1, 0.01),
seq(0, 3, 0.1),
seq(1.999999, 2.000001, 0.0000001)),
fit.fn = cost_function,
optim.runs = 1,
delete.old = TRUE,
x.vals = x.values,
y.vals = y.values,
sd.y = sd.y.values)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.