[R] Global curve fitting/shared parameters with nls() alternatives
Martin Maechler
m@ech|er @end|ng |rom @t@t@m@th@ethz@ch
Fri Nov 8 15:09:12 CET 2019
>>>>> James Wagstaff
>>>>> on Fri, 8 Nov 2019 13:20:41 +0000 writes:
> Dear Bert Thanks for getting back to me. Yes that is
> exactly the sort of problem I am trying to solve. I am
> aware of the option of hard coding the experimental groups
> as you suggested, but was hoping for an easy out of the
> box approach as I have many groups! Thanks James
If I understand correctly,
nlme :: nlsList() is exactly what you want.
No need to install anything, as 'nlme' is among the formally
'Recommended' packages and hence is part of every
(non-handicapped) R installation.
Best,
Martin Maechler
ETH Zurich and R Core Team
> On Tue, 5 Nov 2019 at 20:28, Bert Gunter
> <bgunter.4567 using gmail.com> wrote:
>> A simplified example of what you wish to do might help to
>> clarify here.
>>
>> Here's my guess. Feel free to dismiss if I'm off base.
>>
>> Suppose your model is: y = exp(a*x) + b
>>
>> and you wish the b to be constant but the a to vary
>> across expts. Then can you not combine the data from both
>> into single x, y vectors, add a variable expt that takes
>> the value 1 for expt1 and 2 for expt 2 and fit the single
>> model:
>>
>> y = (expt ==1)*(exp(a1*x) + b) + (expt == 2)* (exp(a2*x)
>> + b)
>>
>> This would obtain separate estimates of a1 and a2 but a
>> single estimate of b .
>>
>> There are probably better ways to do this, but I've done
>> hardly any nonlinear model fitting (so warning!) and can
>> only offer this brute force approach; so wait for someone
>> to suggest something better before trying it.
>>
>> Cheers, Bert
>>
>>
>> On Tue, Nov 5, 2019 at 9:12 AM James Wagstaff
>> <wagstaff.james using gmail.com> wrote:
>>
>>> Hello I am trying to determine least-squares estimates
>>> of the parameters of a nonlinear model, where I expect
>>> some parameters to remain constant across experiments,
>>> and for others to vary. I believe this is typically
>>> referred to as global curve fitting, or the presence of
>>> shared/nested parameters. The "[]" syntax in the
>>> stats::nls() function is an extremely convenient
>>> solution (
>>>
>>> https://r.789695.n4.nabble.com/How-to-do-global-curve-fitting-in-R-td4712052.html
>>> ), but in my case I seem to need the
>>> Levenberg-Marquardt/Marquardt solvers such as
>>> nlsr::nlxb() and minpack.lm::nlsLM. I can not find any
>>> examples/documentation explaining a similar syntax for
>>> these tools. Is anyone aware of a nls-like tool with
>>> this functionality, or an alternative approach? Best
>>> wishes James Wagstaff
>>>
>>> [[alternative HTML version deleted]]
>>>
>>> ______________________________________________
>>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and
>>> more, see 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.
>>>
>>
> --
> James Wagstaff
> +447910113349
> [[alternative HTML version deleted]]
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and
> more, see 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.
More information about the R-help
mailing list