selfStart package:stats R Documentation _C_o_n_s_t_r_u_c_t _S_e_l_f-_s_t_a_r_t_i_n_g _N_o_n_l_i_n_e_a_r _M_o_d_e_l_s _D_e_s_c_r_i_p_t_i_o_n: Construct self-starting nonlinear models. _U_s_a_g_e: selfStart(model, initial, parameters, template) _A_r_g_u_m_e_n_t_s: model: a function object defining a nonlinear model or a nonlinear formula object of the form '~expression'. initial: a function object, taking three arguments: 'mCall', 'data', and 'LHS', representing, respectively, a matched call to the function 'model', a data frame in which to interpret the variables in 'mCall', and the expression from the left-hand side of the model formula in the call to 'nls'. This function should return initial values for the parameters in 'model'. parameters: a character vector specifying the terms on the right hand side of 'model' for which initial estimates should be calculated. Passed as the 'namevec' argument to the 'deriv' function. template: an optional prototype for the calling sequence of the returned object, passed as the 'function.arg' argument to the 'deriv' function. By default, a template is generated with the covariates in 'model' coming first and the parameters in 'model' coming last in the calling sequence. _D_e_t_a_i_l_s: This function is generic; methods functions can be written to handle specific classes of objects. _V_a_l_u_e: a function object of class '"selfStart"', for the 'formula' method obtained by applying 'deriv' to the right hand side of the 'model' formula. An 'initial' attribute (defined by the 'initial' argument) is added to the function to calculate starting estimates for the parameters in the model automatically. _A_u_t_h_o_r(_s): Jose Pinheiro and Douglas Bates _S_e_e _A_l_s_o: 'nls' _E_x_a_m_p_l_e_s: ## self-starting logistic model SSlogis <- selfStart(~ Asym/(1 + exp((xmid - x)/scal)), function(mCall, data, LHS) { xy <- sortedXyData(mCall[["x"]], LHS, data) if(nrow(xy) < 4) { stop("Too few distinct x values to fit a logistic") } z <- xy[["y"]] if (min(z) <= 0) { z <- z + 0.05 * max(z) } # avoid zeroes z <- z/(1.05 * max(z)) # scale to within unit height xy[["z"]] <- log(z/(1 - z)) # logit transformation aux <- coef(lm(x ~ z, xy)) parameters(xy) <- list(xmid = aux[1], scal = aux[2]) pars <- as.vector(coef(nls(y ~ 1/(1 + exp((xmid - x)/scal)), data = xy, algorithm = "plinear"))) value <- c(pars[3], pars[1], pars[2]) names(value) <- mCall[c("Asym", "xmid", "scal")] value }, c("Asym", "xmid", "scal")) # '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)