commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Romeo Palijan (JIRA)" <>
Subject [jira] Commented: (MATH-296) LoessInterpolator.smooth() not working correctly
Date Wed, 07 Oct 2009 17:00:31 GMT


Romeo Palijan commented on MATH-296:

Yes. I think that is correct. No influence on the approximation coefficients but still getting
normalized (getting approximation values). 

Here is an except from the userguide for the R-limma package, which uses the loessFit function
for some operations:

??Any spot quality weights found in RG will be used in the normalization by default. This
means for example that spots with zero weight (flagged out) will not influence the normalization
of other spots. The use of spot quality weights will not however result in any spots
being removed from the data object. Even spots with zero weight will be normalized and will
appear in the output object, such spots will simply not have any influence on the other spots.??

However I am not sure how to handle the bandwidth. Example: if you have a bandwidth of 0.3,
how do you compute the relevant points?
1. Find the 30% in the complete set and the use only the weighted ones inside this set
2. Look at all weighted ones and use 30% of them

To me the first one sounds like the logical one but I am not sure.

> LoessInterpolator.smooth() not working correctly
> ------------------------------------------------
>                 Key: MATH-296
>                 URL:
>             Project: Commons Math
>          Issue Type: Bug
>    Affects Versions: 2.0
>         Environment: Java 1.6 on Vista
>            Reporter: Romeo Palijan
>             Fix For: 2.1
>         Attachments: math-296-test.patch, math-296.patch
> I have been comparing LoessInterpolator.smooth output with the loessFit output from R
(, probably the most widely used loess implementation) and have had strangely
different numbers. I have created a small set to test the difference and something seems to
be wrong with the smooth method but I do no know what and I do not understand the code.
> *Example 1*
> |x-input: |1.5| 3.0| 6| 8| 12|13| 22| 24|28|31|
> |y-input: |3.1|6.1|3.1|2.1|1.4|5.1|5.1|6.1|7.1|7.2|
> |Output LoessInterpolator.smooth():|NaN|NaN|NaN|NaN|NaN|NaN|NaN|NaN|NaN|NaN|
> |Output from loessFit() from R: |3.191178027520974|3.0407201231474037|2.7089538903778636|2.7450823274490297|4.388011000549519|4.60078952381848|5.2988217587114805|5.867536388457898|6.7797794777879705|7.444888598397342|
> *Example 2 (same x-values, y-values just floored)*
> |x-input: |1.5| 3.0| 6| 8| 12|13| 22| 24|28|31|
> |y-input: |3|6|3|2|1|5|5|6|7|7|
> |Output LoessInterpolator.smooth(): |3|6|3|2|0.9999999999999005|5.0000000000001705|5|5.999999999999972|7|6.999999999999967|
> |Output from loessFit() from R: |3.091423927353068|2.9411521572524237|2.60967950675505|2.7421759322272248|4.382996912300442|4.646774316632562|5.225153658563424|5.768301917477015|6.637079139313073|7.270482144410326|
> As you see the output is practically the replicated y-input.
> At this point this funtionality is critical for us but I could not find any other suitable
java-implementation. Help. Maybe this strange behaviour gives someone a clue?

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message