[R] nls.lm

Mike meyer 1101011 at gmx.net
Fri Oct 21 06:00:07 CEST 2016


Let's take a different view of the problem.
Given f=(f_1,...,f_m):R^n -> R^m we want to minimize ||f(x)||.

What distinguishes this from a general minimization problem is that you know the structure of the
objective function F(x)=||f(x)||² and have the individual constituents f_j.
Make use of that information as appropriate.

This is more general than trying to solve the system f(x)=0 or fitting a model to data.
In this more general setting notions such as underdetermined/overdetermined system do not apply.

The restricted view of model fitting serves only to confuse the issue.
For that reason it is (in my view) a bad idea to force the user to set up his problem in 
R-model notation.

Michael
unaffiliated


> Gesendet: Donnerstag, 20. Oktober 2016 um 15:26 Uhr
> Von: ProfJCNash <profjcnash at gmail.com>
> An: "S Ellison" <S.Ellison at LGCGroup.com>, "Mike meyer" <1101011 at gmx.net>
> Cc: "r-help at r-project.org" <r-help at r-project.org>, "Berend Hasselman" <bhh at xs4all.nl>
> Betreff: Re: [R] nls.lm
>
> From a statistician's point of view, "nonsense" may be OK, but there are other applications of R where
> (partial or non-unique) solutions may be needed.
> 
> Yesterday I raised the question of how nonlinear least squares could be adapted to underdetermined problems.
> Many folk are unaware of such possibilities, even in the linear case. In the nonlinear case, the m>n condition is
> far from adequate to provide appropriate warnings to users. What should we do to detect non-unique solutions?
> 
> My interest is in building better nonlinear least squares and optimization software, and I find software users
> (including R users) have some belief that those of us building the tools they use are magic wizards or fairy
> godmothers who have provided everything they need in bullet-proof packages. This is so far from reality. All of
> the tools I have worked with have weaknesses. To close the loopholes we need those "small reproducible examples",
> including cases like these, so that better diagnostics can be devised.
> 
> We also need discussion on what to present as diagnostics and how to do so for maximum benefit and least
> "get in the way". A two-way communication with users can aid immensely.
> 
> Sorry for the rant, but I'm in the midst of trying to prepare a unification of nls/nlmrt/minpack.lm and some
> of the effort is pretty messy, especially in the area of derivatives and diagnostics.
> 
> Below is a little script that tries Berend's problem. The nonlinear least squares "runs" but the output fails
> except for str(). The script will stop on failure at some points, so you need to paste some statements. I welcome
> similar scripts/examples to build the necessary tests for improved packages.
> 
> JN
> 
> Here's the script.
> 
> # try to solve undetermined system by nonlinear least squares
> X1 <- c(1,1)
> Y1 <- c(1,1)
> Z1 <- c(1,1)
> RHS1 <- c(3,4)
> X2 <- c(1,2)
> RHS2 <- c(3,6)
> mydata <- data.frame(X1, X2, Y1, Z1, RHS1, RHS2)
> require(nlmrt)
> st1 <- c(px=1,py=1,pz=1)
> st0 <- c(px=0,py=0,pz=0)
> sol10 <- nlxb(RHS1 ~ px*X1 + py*Y1 + pz*Z1, data=mydata, trace=1, start=st0)
> summary(sol10)
> print(sol10)
> str(sol10)
> sol11 <- nlxb(RHS1 ~ px*X1 + py*Y1 + pz*Z1, data=mydata, trace=1, start=st1)
> summary(sol11)
> print(sol11)
> str(sol11)
> ## try RHS2
> sol20 <- nlxb(RHS2 ~ px*X1 + py*Y1 + pz*Z1, data=mydata, trace=1, start=st0)
> summary(sol20)
> print(sol20)
> str(sol20)
> sol21 <- nlxb(RHS2 ~ px*X1 + py*Y1 + pz*Z1, data=mydata, trace=1, start=st1)
> summary(sol21)
> print(sol21)
> str(sol21)
> # change first column -- then we get solutions
> sol220 <- nlxb(RHS2 ~ px*X2 + py*Y1 + pz*Z1, data=mydata, trace=1, start=st0)
> summary(sol220)
> print(sol220)
> str(sol220)
> sol221 <- nlxb(RHS2 ~ px*X2 + py*Y1 + pz*Z1, data=mydata, trace=1, start=st1)
> summary(sol221)
> print(sol221)
> str(sol221)
> 
> 
> 
> On 16-10-20 07:05 AM, S Ellison wrote:
> >> How do you reply to a specific post on this board instead of the thread?
> > 
> > You can reply to the individual, as I just did.
> > 
> > But I strongly suggest that you don't. You would be much better advised to discontinue debate and follow the essential advice given by nls.lm, which - no matter whether couched in terms of count of residuals - is simply to make sure that you have more independent data than variables when seeking a unique numerical solution by non-linear least squares. If you don't you'll get nonsense.
> > 
> > 
> > S Ellison
> > 
> > 
> > 
> > 
> > 
> > *******************************************************************
> > This email and any attachments are confidential. Any use...{{dropped:8}}
> > 
> > ______________________________________________
> > R-help at 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