How get plot from nls in R?

前端 未结 4 1879
野的像风
野的像风 2020-12-30 17:17

In R I use nls to do a nonlinear least-squares fit. How then do I plot the model function using the values of the coefficients that the fit provided?

(Yes, this is a

4条回答
  •  有刺的猬
    2020-12-30 18:02

    I know what you want (I'm a Scientist). This isn't it, but at least shows how to use 'curve' to plot your fitting function over any range, and the curve will be smooth. Using the same data set as above:

    nonlinFit <- nls(density ~ a - b*exp(-c*conc), data = DNase1, start = list(a=1, b=1, c=1) )

    fitFnc <- function(x) predict(nonlinFit, list(conc=x))

    curve(fitFnc, from=.5, to=10)

    or,

    curve(fitFnc, from=8.2, to=8.4)

    or,

    curve(fitFnc, from=.1, to=50) # well outside the data range

    or whatever (without setting up a sequence of evaluation points first).

    I'm a rudimentary R programmer, so I don't know how to implement (elegantly) something like ReplaceAll ( /. ) in Mathematica that one would use to replace occurrences of the symbolic parameters in the model, with the fitted parameters. This first step works although it looks horrible:

    myModel <- "a - b*exp(-c*conc)"

    nonlinFit <- nls(as.formula(paste("density ~", myModel)), data = DNase1, start = list(a=1, b=1, c=1) )

    It leaves you with a separate 'model' (as a character string), that you might be able to make use of with the fitted parameters ... cleanly (NOT digging out a, b, c) would simply use nonlinFit ... not sure how though.

提交回复
热议问题