[R] least square fit with non-negativity constraints for absorption spectra fitting

2006-07-14 Thread Xu, Xiuli \(NIH/NHLBI\) [E]
I would really appreciate it if someone can give suggestions on how to
do spectra fitting in R using ordinary least square fitting and
non-negativity constraints. The lm() function works well for ordinary
least square fitting, but how to specify non-negativity constraints? It
wouldn't make sense if the fitting coefficients coming out as negative
in absorption spectra deconvolution.

Thanks. 

Xiuli

__
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html


Re: [R] least square fit with non-negativity constraints for absorption spectra fitting

2006-07-14 Thread Joerg van den Hoff
Xu, Xiuli (NIH/NHLBI) [E] wrote:
 I would really appreciate it if someone can give suggestions on how to
 do spectra fitting in R using ordinary least square fitting and
 non-negativity constraints. The lm() function works well for ordinary
 least square fitting, but how to specify non-negativity constraints? It
 wouldn't make sense if the fitting coefficients coming out as negative
 in absorption spectra deconvolution.
 
 Thanks. 
 
 Xiuli
 

I'm not sure, but would presume that constraints could not be imposed on 
a linear least squares fit. maybe someone can correct me.

if you move to `nls', i.e. non-linear least squares fitting, you should 
be able to transform your model function. say, you want some parameter 
`a' to stay positive. then you could e.g. substitute

`a = exp(b)' in the model function and fit `b' without constraints in 
the new model and calculate `a' afterwards (which obviously is 
guaranteed now to be positive). note that error estimates would than 
have to be computed by gaussian error propagation from `b' to `a'.


joerg

__
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html


Re: [R] least square fit with non-negativity constraints for absorption spectra fitting

2006-07-14 Thread Prof Brian Ripley
On Fri, 14 Jul 2006, Joerg van den Hoff wrote:

 Xu, Xiuli (NIH/NHLBI) [E] wrote:
  I would really appreciate it if someone can give suggestions on how to
  do spectra fitting in R using ordinary least square fitting and
  non-negativity constraints. The lm() function works well for ordinary
  least square fitting, but how to specify non-negativity constraints? It
  wouldn't make sense if the fitting coefficients coming out as negative
  in absorption spectra deconvolution.
  
  Thanks. 
  
  Xiuli
  
 
 I'm not sure, but would presume that constraints could not be imposed on 
 a linear least squares fit. maybe someone can correct me.

They can, and you get a simple quadratic programming problem.  So quadprog 
could be used to solve this one, but optim(methods=L-BFGS-B) may be as 
easy (and is pretty efficient on this class of QP problems).

S-PLUS has a function nnls.fit() for 'non-negative least squares'.

 if you move to `nls', i.e. non-linear least squares fitting, you should 
 be able to transform your model function. say, you want some parameter 
 `a' to stay positive. then you could e.g. substitute
 
 `a = exp(b)' in the model function and fit `b' without constraints in 
 the new model and calculate `a' afterwards (which obviously is 
 guaranteed now to be positive). note that error estimates would than 
 have to be computed by gaussian error propagation from `b' to `a'.

The problem here is that a = 0 is a possible (and indeed plausible) value.

See MASS4 p.227 for nnls.fit and alternatives for use in R.  The MASS3 
ch08 script had an example of a regression with non-negative slope:

data(whiteside)
attach(whiteside)
Gas - Gas[Insul==Before]
Temp - -Temp[Insul==Before]
#nnls.fit(cbind(1, -1, Temp), Gas)
# can use box-constrained optimizer
fn - function(par) sum((Gas - par[1] - par[2]*Temp)^2)
optim(rep(0,2), fn, lower=c(-Inf,0), method=L-BFGS-B)$par
rm(Gas, Temp)
detach()


-- 
Brian D. Ripley,  [EMAIL PROTECTED]
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel:  +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UKFax:  +44 1865 272595

__
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html


Re: [R] least square fit with non-negativity constraints for absorption spectra fitting

2006-07-14 Thread Lu Yuefeng
Were you doing blind deconvolution or the spectrum basis are assummed to be
known?

As for blind deconvolution, alternatively you might consider alternating
least square, non-negative matrix factorization, or independent component
analysis + alternating least square as the post-processing.

yfl

On 7/11/06, Xu, Xiuli (NIH/NHLBI) [E] [EMAIL PROTECTED] wrote:

 I would really appreciate it if someone can give suggestions on how to
 do spectra fitting in R using ordinary least square fitting and
 non-negativity constraints. The lm() function works well for ordinary
 least square fitting, but how to specify non-negativity constraints? It
 wouldn't make sense if the fitting coefficients coming out as negative
 in absorption spectra deconvolution.

 Thanks.

 Xiuli

 __
 R-help@stat.math.ethz.ch mailing list
 https://stat.ethz.ch/mailman/listinfo/r-help
 PLEASE do read the posting guide!
 http://www.R-project.org/posting-guide.html


[[alternative HTML version deleted]]

__
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html