Description Usage Arguments Value Examples
View source: R/smooth_profile_function.R
Smooths existing profiles by refitting bad estimates. To this end, smooth.profile checks for neighbouring points that have an unusual large difference in log-likelihood and spikes, i.e. points that have higher values than both of the neighbouring points
| 1 2 3 4 5 | 
| which.par | A vector containing the names of all parameters for which the respective profiles should be smoothed. Alternatively, supplying "all.par" smooths all existing profiles. | 
| fit.fn | A cost function. Has to take the complete parameter vector as an input (needs to be names  | 
| threshold | A numeric value determining the minimal difference between two neighbouring points that leads to refitting. Alternatively, threshold can be set to "auto" (default), which chooses a minimal difference automatically (this is calculated by dividing the difference between maximal and minimal values by the number of profile points). | 
| spike.min | A numeric value determining the minimal difference for detecting spikes. Default to 0.01. | 
| do.not.fit | The names of the parameter that are not to be fitted. Can only be supplied if a single profile is smoothed | 
| homedir | The directory to which the results should be saved to. Default 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  | 
| 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  | 
| 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. | 
| future.off | Logical. If TRUE,  | 
| ... | Additional parameters that can be passed along to  | 
NULL. Saves the refitted profiles in the folder "Profiles-Result/Tables/".
| 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 35 36 37 38 39 40 41 42 43 | #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)
  })
}
#create profiles
res <- create.profile(which.par = "p1",
                      par.names = inits,
                      range = list(seq(0, 2, 0.2)),
                      fit.fn = cost_function,
                      homedir = getwd(),
                      delete.old = TRUE,
                      x.vals = x.values,
                      y.vals = y.values,
                      sd.y = sd.y.values)
#add noise to profile
res[,1] <-  res[,1] + runif(n = nrow(res), min = 0, max = 5)
saveRDS(res, paste0(getwd(), "/Profile-Results/Tables/p1.rds"))
#smooth profile
smooth.profile(which.par = "p1",
               fit.fn = cost_function,
               homedir = getwd(),
               optim.runs = 1,
               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.