# "multivariate curve resolution"... a NMF using ALS?

**URL:** <https://discourse.julialang.org/t/multivariate-curve-resolution-a-nmf-using-als/3274>\
**Category:** Statistics\
**Tags:** question, statistics\
**Created:** [April 19, 2017, 2:19am UTC](https://discourse.julialang.org/t/multivariate-curve-resolution-a-nmf-using-als/3274 "2017-04-19T02:19:06Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![charlesll](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/charlesll/32/3255_2.png) [@charlesll](https://discourse.julialang.org/u/charlesll)\
**Post date:** [April 19, 2017, 2:19am UTC](https://discourse.julialang.org/t/multivariate-curve-resolution-a-nmf-using-als/3274/1 "2017-04-19T02:19:06Z")

</div>

Dear all,

I am using Julia and the JuliaStats ecosystem together with SciKit-learn (thanks PyCall) to perform component analysis and blind-source separation in various Raman and also XAFS spectra of glasses with varying chemical compositions.

Reading papers, I learned that people call this field “Chemometrics”, and several commercial packages are available to do so (e.g., [http://www.eigenvector.com/software/pls\_toolbox.htm](http://www.eigenvector.com/software/pls_toolbox.htm))… In particular, several authors refer to a technic called “multivariate curve resolution” (MCR), which aims at extracting endmembers components and associated concentrations from spectra of mixed chemical components.

I usually perform component extraction using the NMF package in JuliaStats, with using the ALS method in particular… From the descriptions in the papers (in particular, see [Principles and methodologies in self-modeling curve resolution - ScienceDirect](http://www.sciencedirect.com/science/article/pii/S0169743903002077)), I understood that MCR uses an ALS algorithm with a non-negative constrain… So its seems to me that MCR-ALS and NMF-ALS are similar…

I therefore wanted to know if people in the JuliaStats community have some know knowledge about MCR. Is it just a NMF performed using an ALS algorithm, or is it something different? Do somebody have any additional knowledge about Chemometrics? Is it just a name given to the application of usual stat/ML technics (PCA, PLS, NMF, ICA…) to spectroscopic/chemical data or is there additional things making Chemometrics specific?

Thanks in advance!

Best,  
Charles.

---

<div class="post-metadata">

**Author:** ![charlesll](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/charlesll/32/3255_2.png) [@charlesll](https://discourse.julialang.org/u/charlesll)\
**Post date:** [May 18, 2017, 7:02am UTC](https://discourse.julialang.org/t/multivariate-curve-resolution-a-nmf-using-als/3274/2 "2017-05-18T07:02:06Z")

</div>

So I will reply to myself on this topic, in case someone is interested.

It turns out that the “MCR” technic is a NMF technic performed most of the time using an ALS algorithm, but with specific conditions: closure (sum of the component fractions = 1), uni-modality (components vary in a logical way along a chemical profil, for instance), and of course non-negativity.

So it is quite easy to use Julia NMF algorithm to implement such chemometric technic.

A good paper to read about that is

de Juan, A., and R. Tauler (2006), Multivariate Curve Resolution (MCR) from 2000: Progress in Concepts and Applications, Critical Reviews in Analytical Chemistry, 36(3–4), 163–176, doi:10.1080/10408340600970005.

Best,  
C.
