当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R selfStart 构建自启动非线性模型


R语言 selfStart 位于 stats 包(package)。

说明

构建self-starting非线性模型,用于nls等。通过函数initial从数据计算近似参数值,此类模型是“self-starting”,即不需要start参数,例如, nls()

用法

selfStart(model, initial, parameters, template)

参数

model

定义非线性模型的函数对象或 ~ expression 形式的非线性 formula 对象。

initial

一个函数对象,接受参数mCall,data, 和LHS, ...,分别表示对函数的匹配调用model,一个 DataFrame ,用于解释其中的变量mCall,以及调用中模型公式左侧的表达式nls。该函数应返回参数的初始值model。这...被使用nls()通过其controltrace对于以下情况的参数initial()本身调用nls()就像它对十个 self-starting 非线性模型所做的那样Rstats包。

parameters

一个字符向量,指定 model 右侧的术语,应为其计算初始估计值。作为 namevec 参数传递给 deriv 函数。

template

返回对象的调用序列的可选原型,作为 function.arg 参数传递给 deriv 函数。默认情况下,生成的模板在调用序列中首先是 model 中的协变量,最后是 model 中的参数。

细节

nls() 为这些self-starting 模型调用getInitialinitial 函数。

这个函数是通用的;可以编写方法函数来处理特定类的对象。

"selfStart"function 对象,用于通过将 deriv 应用于 model 公式的右侧而获得的 formula 方法。将 initial 属性(由 initial 参数定义)添加到函数中,以自动计算模型中参数的起始估计值。

例子

## self-starting logistic model

## The "initializer" (finds initial values for parameters from data):
initLogis <- function(mCall, data, LHS, ...) {
    xy <- sortedXyData(mCall[["x"]], LHS, data)
    if(nrow(xy) < 4)
        stop("too few distinct input values to fit a logistic model")
    z <- xy[["y"]]
    ## transform to proportion, i.e. in (0,1) :
    rng <- range(z); dz <- diff(rng)
    z <- (z - rng[1L] + 0.05 * dz)/(1.1 * dz)
    xy[["z"]] <- log(z/(1 - z))		# logit transformation
    aux <- coef(lm(x ~ z, xy))
    pars <- coef(nls(y ~ 1/(1 + exp((xmid - x)/scal)),
                     data = xy,
                     start = list(xmid = aux[[1L]], scal = aux[[2L]]),
                     algorithm = "plinear", ...))
    setNames(pars [c(".lin", "xmid", "scal")],
             mCall[c("Asym", "xmid", "scal")])
}

mySSlogis <- selfStart(~ Asym/(1 + exp((xmid - x)/scal)),
                       initial = initLogis,
                       parameters = c("Asym", "xmid", "scal"))

getInitial(weight ~ mySSlogis(Time, Asym, xmid, scal),
           data = subset(ChickWeight, Chick == 1))


# 'first.order.log.model' is a function object defining a first order
# compartment model
# 'first.order.log.initial' is a function object which calculates initial
# values for the parameters in 'first.order.log.model'
#
# self-starting first order compartment model
## Not run: 
SSfol <- selfStart(first.order.log.model, first.order.log.initial)

## End(Not run)

## Explore the self-starting models already available in R's  "stats":
pos.st <- which("package:stats" == search())
mSS <- apropos("^SS..", where = TRUE, ignore.case = FALSE)
(mSS <- unname(mSS[names(mSS) == pos.st]))
fSS <- sapply(mSS, get, pos = pos.st, mode = "function")
all(sapply(fSS, inherits, "selfStart"))  # -> TRUE

## Show the argument list of each self-starting function:
str(fSS, give.attr = FALSE)

作者

José Pinheiro and Douglas Bates

也可以看看

nlsgetInitial

以下每个都是"selfStart"模型(带示例)SSasymp , SSasympOff , SSasympOrig , SSbiexp , SSfol , SSfpl , SSgompertz , SSlogis , SSmicmen , SSweibull

此外,封装 nlme nlsList

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Construct Self-starting Nonlinear Models。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。