[ 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