[
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