If it is possible, I think you will need to get the expression for
Puro.fun2 and then (essentially manually) put it into nls (or perhaps
better nlmrt or minpack.lm which have better numerics and allow bounds;
nlmrt even has masks or temporarily fixed parameters, but I need to
writa a vignette about that). That is, I believe you essentially need to
do the analytic derivatives to get what you want.

There is also an experimental nls14 on r-forge in the optimizer project,
which Duncan Murdoch and I have been working on. It even includes all-R
replacements for D and deriv (I don't think Duncan implemented deriv3
though). It is, however,
experimental, and we welcome people trying it and letting us know of
bugs and glitches. Note that nlmrt and nls14 try to use analytic
derivatives for the Jacobian of the nonlinear least squares, while nls()
uses numeric approximations. When it works, nls() is generally more
efficient, but it is much more fragile -- trade-offs abound.

Best, JN



On 14-09-19 06:00 AM, r-help-requ...@r-project.org wrote:
> Date: Thu, 18 Sep 2014 13:33:24 +0000
> From: "Riley, Steve" <steve.ri...@pfizer.com>
> To: "r-help@r-project.org" <r-help@r-project.org>
> Subject: [R] Extract model from deriv3 or nls
> Message-ID:
>       <941f9c738e7abb459a4306d21d7177cbc8598...@ndhamrexde03.amer.pfizer.com>
>       
> Content-Type: text/plain; charset="UTF-8"
> 
> Hello!
> 
> I am trying to figure out how to extract the model equation when using deriv3 
> with nls.
> 
> Here is my example:
> #
> #             Generate derivatives
> #
> Puro.fun2 <- deriv3(expr = ~(Vmax + VmaxT*state) * conc/(K + Kt * state + 
> conc),
>                     name = c("Vmax","VmaxT","K","Kt"),
>                     function.arg = function(conc, state, Vmax, VmaxT, K, Kt) 
> NULL)
> #
> #             Fit model using derivative function
> #
> Puro.fit1 <- nls(rate ~ Puro.fun2(conc, state == "treated", Vmax, VmaxT, K, 
> Kt),
>                  data = Puromycin,
>                  start = c(Vmax = 160, VmaxT = 47, K = 0.043, Kt = 0.05))
> 
> Normally I would use summary(Puro.fit1)$formula to extract the model but 
> because I am implementing deriv3, the following gets returned:
> 
>> > summary(Puro.fit1)$formula
> rate ~ Puro.fun2(conc, state == "treated", Vmax, VmaxT, K, Kt)
> 
> What I would like to do is find something that returns:
> 
> rate ~ (Vmax + VmaxT*state) * conc/(K + Kt * state + conc)
> 
> Is there a way to extract this? Please advise. Thanks for your time.
> 
> Steve
> 860-441-3435

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to