[ 
https://issues.apache.org/jira/browse/MATH-519?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12997370#comment-12997370
 ] 

Gilles commented on MATH-519:
-----------------------------

{quote}
I'm assuming that the value that results from passing in a negative sigma is 
closer to the optimal than POSITIVE infinity or NaN [...]
{quote}

POSITIVE_INFINITY or NaN are the returned values of the objective function and 
its gradient, specially chosen because they are quite likely to be different 
from the actual values of the function and its gradient; it's not "sigma" that 
is assumed to infinity or NaN.

If you think is that we can accept a negative sigma as the result of the 
fitting, I don't agree. In the case of the Gaussian, it's by "chance" that a 
semantically invalid parameter (negative sigma) would still be usable (as it is 
being squared before use).
In most case you cannot expect such a forgiving situation. For example, if you 
want to fit "a" in the following function:
{noformat}
  log(a * x)
{noformat}
no invalid values for "a" are usable.
The "Gaussian" class should not be unsafe (no validation of sigma) just because 
of its particular use here.
[Moreover the workaround is useful in showing users how to setup a fitting of a 
function that can raise an exception.]

{quote}
[...] and that this will result in faster convergence.
{quote}

Did you try?


> GaussianFitter Unexpectedly Throws NotStrictlyPositiveException
> ---------------------------------------------------------------
>
>                 Key: MATH-519
>                 URL: https://issues.apache.org/jira/browse/MATH-519
>             Project: Commons Math
>          Issue Type: Bug
>    Affects Versions: 3.0
>            Reporter: Ole Ersoy
>             Fix For: 3.0
>
>         Attachments: GaussianFitter.java, GaussianFitter2Test.java
>
>   Original Estimate: 4h
>  Remaining Estimate: 4h
>
> Running the following:
>       double[] observations = 
>       { 
>                       1.1143831578403364E-29, 
>                        4.95281403484594E-28, 
>                        1.1171347211930288E-26, 
>                        1.7044813962636277E-25, 
>                        1.9784716574832164E-24, 
>                        1.8630236407866774E-23, 
>                        1.4820532905097742E-22, 
>                        1.0241963854632831E-21, 
>                        6.275077366673128E-21, 
>                        3.461808994532493E-20, 
>                        1.7407124684715706E-19, 
>                        8.056687953553974E-19, 
>                        3.460193945992071E-18, 
>                        1.3883326374011525E-17, 
>                        5.233894983671116E-17, 
>                        1.8630791465263745E-16, 
>                        6.288759227922111E-16, 
>                        2.0204433920597856E-15, 
>                        6.198768938576155E-15, 
>                        1.821419346860626E-14, 
>                        5.139176445538471E-14, 
>                        1.3956427429045787E-13, 
>                        3.655705706448139E-13, 
>                        9.253753324779779E-13, 
>                        2.267636001476696E-12, 
>                        5.3880460095836855E-12, 
>                        1.2431632654852931E-11 
>       };
>   
>       GaussianFitter g = 
>               new GaussianFitter(new LevenbergMarquardtOptimizer());
>       
>       for (int index = 0; index < 27; index++)
>       {
>               g.addObservedPoint(index, observations[index]);
>       }
>               g.fit();
> Results in:
> org.apache.commons.math.exception.NotStrictlyPositiveException: -1.277 is 
> smaller than, or equal to, the minimum (0)
>       at 
> org.apache.commons.math.analysis.function.Gaussian$Parametric.validateParameters(Gaussian.java:184)
>       at 
> org.apache.commons.math.analysis.function.Gaussian$Parametric.value(Gaussian.java:129)
> I'm guessing the initial guess for sigma is off.  

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to