當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。