Asif Wazir
2010-Apr-12 16:05 UTC
[R] How to derive function for parameters in Self start model in nls
Dear all i want to fit the self start model in nls. i have two question. i have a function, (asfr ~ I(((a*b)/c))+ ((c/age)^3/2)+ exp((-b^2)*(c/age)+(age/c)-2) i am wondering how to build the selfstart model. there is lost of example, (i.e. SSgompertz, SSmicman, SSweibull, etc). my question is, how to derive the function of parameters. and also which model to use for get the initials values. In the following example's the red color coding requires the explanation?? thanks SSgompertz function (x, Asym, b2, b3) { .expr2 <- b3^x .expr4 <- exp(-b2 * .expr2) .value <- Asym * .expr4 .actualArgs <- as.list(match.call()[c("Asym", "b2", "b3")]) if (all(unlist(lapply(.actualArgs, is.name)))) { .grad <- array(0, c(length(.value), 3L), list(NULL, c("Asym", "b2", "b3"))) .grad[, "Asym"] <- .expr4 .grad[, "b2"] <- -Asym * (.expr4 * .expr2) .grad[, "b3"] <- -Asym * (.expr4 * (b2 * (b3^(x - 1) * x))) dimnames(.grad) <- list(NULL, .actualArgs) attr(.value, "gradient") <- .grad } .value attr(,"initial") function (mCall, data, LHS) { xy <- sortedXyData(mCall[["x"]], LHS, data) if (nrow(xy) < 4) { stop("too few distinct input values to fit the Gompertz model") } xyL <- xy xyL$y <- log(abs(xyL$y)) pars <- NLSstAsymptotic(xyL) pars <- coef(nls(y ~ exp(-b2 * b3^x), data = xy, algorithm = "plinear", start = c(b2 = pars[["b1"]], b3 = exp(-exp(pars[["lrc"]]))))) val <- pars[c(3, 1, 2)] names(val) <- mCall[c("Asym", "b2", "b3")] val } Cheers -- Muhammad Asif Wazir Ph.D student Institut für Statistik und Decision Support Systems (ISDS). University of Vienna, Austria cell: 00436509092298 [[alternative HTML version deleted]]