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

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

{quote}
I'm saying that we should let the optimizer try negative values for sigma if it 
wants to while it's in the middle of trying to find the optimal sigma.
{quote}

The point is that we cannot allow invalid parameters because, for those values 
(of the parameters), the objective function is, by definition of "invalid", 
undefined.

{quote}
[...] Even it it converges quicker [...]
{quote}

Well, actually it doesn't (cf. my mail on the "dev" ML).

{quote}
It just seems to me like POSITIVE_INFINITE is as far from the optimal as you 
can get, [...]
{quote}

Indeed, that's exactly the intention: it tells the optimizer to step back from 
this wrong value for sigma.
[Note that POSITIVE_INFINITY is not a value of sigma, it is the value of the 
objective function for any negative sigma.]

{quote}
If sigma is zero then the gaussian function is zero, [...]
{quote}

No, when sigma is strictly zero, there is no Gaussian anymore: the value at "b" 
(mean) is undefined.
Also, cf. http://en.wikipedia.org/wiki/Dirac_delta



> 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