<p>In <a href="https://github.com/mlpack/mlpack/pull/751#discussion_r73800197">src/mlpack/core/dists/gamma_distribution.cpp</a>:</p>
<pre style='color:#555'>&gt; @@ -53,6 +64,13 @@ void GammaDistribution::Train(const arma::mat&amp; rdata, const double tol)
&gt;    Train(logMeanxVec, meanLogxVec, meanxVec, tol);
&gt;  }
&gt;  
&gt; +// Fits an alpha and beta parameter according to observation probabilities.
&gt; +void GammaDistribution::Train(const arma::mat&amp; observations, 
&gt; +                              const arma::vec&amp; probabilities,
&gt; +                              const double tol)
&gt; +{
</pre>
<p>I implemented most of the changes. There's a bug in my code for the Train(observations, probabilities) function. I'll push that and the relevant test once it's fixed.</p>

<blockquote>
<p>Testing that could be done by generating points from a Gamma distribution, assigning them a random weight between, e.g., 0.9 and 1, and then generating points from a uniform distribution, and assigning those points a random weight between, e.g, 0.0 and 0.02. Then, call Train() with probabilities, and ensure the resulting trained Gamma distribution is close to the distribution that was used to generate points.</p>
</blockquote>

<p>My idea was to get a few points on the x axis and  use <code>GammaDistribution::Probability(x)</code> to estimate the pdf at those points, then use the points as observations and their probabilities as the probabilities vector.<br>
The problem is, that generates nan values during the approximation (the bug I'm speaking of). I'm not sure if my idea is bad or my code doesn't work. I'll figure it out :)</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">&mdash;<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/mlpack/mlpack/pull/751/files/9cb117f671f55186baddf38ce71107a2a3ae027f#r73800197">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AJ4bFMWTdkJ4T8K-Ozg7jNLdtqGdEEQ1ks5qdb_EgaJpZM4Jd7IK">mute the thread</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/AJ4bFMZQMRtCGkjG8KpY6IMStsTuun_zks5qdb_EgaJpZM4Jd7IK.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
  <link itemprop="url" href="https://github.com/mlpack/mlpack/pull/751/files/9cb117f671f55186baddf38ce71107a2a3ae027f#r73800197"></link>
  <meta itemprop="name" content="View Pull Request"></meta>
</div>
<meta itemprop="description" content="View this Pull Request on GitHub"></meta>
</div>

<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/mlpack/mlpack","title":"mlpack/mlpack","subtitle":"GitHub repository","main_image_url":"https://assets-cdn.github.com/images/modules/aws/aws-bg.jpg","avatar_image_url":"https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png","action":{"name":"Open in GitHub","url":"https://github.com/mlpack/mlpack"}},"updates":{"snippets":[{"icon":"PERSON","message":"@mentekid in #751: I implemented most of the changes. There's a bug in my code for the Train(observations, probabilities) function. I'll push that and the relevant test once it's fixed.\r\n\r\n\u003e Testing that could be done by generating points from a Gamma distribution, assigning them a random weight between, e.g., 0.9 and 1, and then generating points from a uniform distribution, and assigning those points a random weight between, e.g, 0.0 and 0.02. Then, call Train() with probabilities, and ensure the resulting trained Gamma distribution is close to the distribution that was used to generate points.\r\n\r\nMy idea was to get a few points on the x axis and  use `GammaDistribution::Probability(x)` to estimate the pdf at those points, then use the points as observations and their probabilities as the probabilities vector.\r\nThe problem is, that generates nan values during the approximation (the bug I'm speaking of). I'm not sure if my idea is bad or my code doesn't work. I'll figure it out :)"}],"action":{"name":"View Pull Request","url":"https://github.com/mlpack/mlpack/pull/751/files/9cb117f671f55186baddf38ce71107a2a3ae027f#r73800197"}}}</script>