[R] least square fit with non-negativity constraints for absorption spectra fitting
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
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
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
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