inst/doc/FAMoS-EvaluationFunctions.R

## ----setup, include = FALSE, echo = FALSE-------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

## ----createdata, include = F, results='hide',warning=FALSE--------------------
library(FAMoS)

#setting data
true.p2 <- 3
true.p5 <- 2
sim.data <- cbind.data.frame(range = 1:10, 
                             y = true.p2^2 * (1:10)^2 - exp(true.p5 * (1:10)))

#define initial parameter values and corresponding test function
inits <- c(p1 = 3, p2 = 4, p3 = -2, p4 = 2, p5 = 0)

cost_function <- function(parms, binary, data){
  if(max(abs(parms)) > 5){
    return(NA)
  }
  with(as.list(c(parms)), {
    res <- p1*4 + p2^2*data$range^2 + p3*sin(data$range) + p4*data$range - exp(p5*data$range)
    diff <- sum((res - data$y)^2)
    
    #calculate AICC
    nr.par <- length(which(binary == 1))
    nr.data <- nrow(data)
    AICC <- diff + 2*nr.par + 2*nr.par*(nr.par + 1)/(nr.data - nr.par -1)
    
    return(AICC)
  })
}


#set swap set
swaps <- list(c("p1", "p5"))

#perform model selection
res <- famos(init.par = inits,
             fit.fn = cost_function,
             homedir = tempdir(),
             method = "swap",
             swap.parameters = swaps,
             init.model.type = c("p1", "p3"),
             optim.runs = 1,
             data = sim.data) 

## ----createdata2, eval=FALSE--------------------------------------------------
#  library(FAMoS)
#  
#  #setting data
#  true.p2 <- 3
#  true.p5 <- 2
#  sim.data <- cbind.data.frame(range = 1:10,
#                               y = true.p2^2 * (1:10)^2 - exp(true.p5 * (1:10)))
#  
#  #define initial parameter values and corresponding test function
#  inits <- c(p1 = 3, p2 = 4, p3 = -2, p4 = 2, p5 = 0)
#  
#  cost_function <- function(parms, binary, data){
#    if(max(abs(parms)) > 5){
#      return(NA)
#    }
#    with(as.list(c(parms)), {
#      res <- p1*4 + p2^2*data$range^2 + p3*sin(data$range) + p4*data$range - exp(p5*data$range)
#      diff <- sum((res - data$y)^2)
#  
#      #calculate AICC
#      nr.par <- length(which(binary == 1))
#      nr.data <- nrow(data)
#      AICC <- diff + 2*nr.par + 2*nr.par*(nr.par + 1)/(nr.data - nr.par -1)
#  
#      return(AICC)
#    })
#  }
#  
#  
#  #set swap set
#  swaps <- list(c("p1", "p5"))
#  
#  #perform model selection
#  res <- famos(init.par = inits,
#               fit.fn = cost_function,
#               homedir = tempdir(),
#               method = "swap",
#               swap.parameters = swaps,
#               init.model.type = c("p1", "p3"),
#               optim.runs = 1,
#               data = sim.data)

## ----famosperformance, echo = T, fig.width = 4, fig.align= "center", fig.height=6----
famos.performance(input = res$mrun, path = tempdir())

## ----sc.order, echo = T, fig.width = 4, fig.align= "center", fig.height=4-----
 fig.sc <- sc.order(input = tempdir(), mrun = res$mrun)

## ----sc.order2,echo = T, fig.width = 8, fig.align= "center", fig.height=4-----
 par(mfrow = c(1,2))
 fig.sc1 <- sc.order(input = tempdir(), mrun = res$mrun, colour.par = "p1")
 fig.sc2 <- sc.order(input = tempdir(), mrun = res$mrun, colour.par = "p5")


## ----aicc.weights,echo = T, fig.width = 4, fig.align= "center", fig.height=4----
fig.aicc <- aicc.weights(input = tempdir(), mrun = res$mrun)

Try the FAMoS package in your browser

Any scripts or data that you put into this service are public.

FAMoS documentation built on April 14, 2020, 5:43 p.m.