Become an expert in R — Interactive courses, Cheat Sheets, certificates and more!
Get Started for Free

fnSubset

Call fnFull with variable and fixed parameters


Description

Combine variable parameters with with fixed parameters and pass to fnFull. Useful for optimizing over a subset of parameters without writing a separate function. Values are combined by name if available. Otherwise, xFull is constructed by position (the default).

Usage

fnSubset(x, fnFull, xFixed, xFull=c(x, xFixed), ...)

Arguments

x

Variable parameters to be passed to fnFull.

fnFull

Function whose first argument has length = length(xFull).

xFixed

Parameter values to be combined with x to construct the first argument for a call to fnFull.

xFull

Prototype initial argument for fnFull.

...

Optional arguments passed to fnFull.

Details

This function first confirms that length(x) + length(xFixed) == length(xFull). Next,

  • If xFull has names, match at least xFixed by name.

  • Else xFull = c(x, xFixes), the default.

Finally, call fnFull(xFull, ...).

Value

value returned by fnFull

Author(s)

Spencer Graves

See Also

Examples

##
## Example with 'optim'
##
fn <- function(x) (x[2]-2*x[1])^2
# note: true minimum is 0 on line 2*x[1] == x[2]
fullEst <- optim(par=c(1,1), method="BFGS", fn=fn)
fullEst$par
# par = c(0.6, 1.2) at minimum (not convex)

# Fix the last component to 4 
est4 <- optim(par=1, fn=fnSubset, method="BFGS", fnFull=fn, xFixed=4)
est4$par
# now there is a unique minimun x[1] = 2

# Fix the first component
fnSubset(x=1, fnFull=fn, xFixed=c(a=4), xFull=c(a=1, b=2))
# After substitution:  xFull = c(a=4, b=1),
# so fn = (1 - 2*4)^2 = (-7)^2 = 49

est4. <- optim(par=1, fn=fnSubset, method="BFGS",
               fnFull=fn, xFixed=c(a=4), 
               xFull=c(a=1, b=2))
est4.$par
# At optimum: xFull=c(a=4, b=8),
# so fn = (8 - 2*4)^2 = 0

##
## Example with 'maxLik'
##
fn2max <- function(x) -(x[2]-2*x[1])^2
# -> need to have a maximum
max4 <- maxLik(fnSubset, start=1, fnFull=fn2max, xFixed=4)
summary(max4)
# Similar result using fixed parameters in maxNR, called by maxLik 
max4. <- maxLik(fn2max, start=c(1, 4), fixed=2)
summary(max4.)

maxLik

Maximum Likelihood Estimation and Related Tools

v1.4-8
GPL (>= 2)
Authors
Ott Toomet <otoomet@gmail.com>, Arne Henningsen <arne.henningsen@gmail.com>, with contributions from Spencer Graves and Yves Croissant
Initial release
2021-03-22

We don't support your browser anymore

Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.