mathnet-numerics icon indicating copy to clipboard operation
mathnet-numerics copied to clipboard

Negative Binomial parameter wrong

Open colinfang opened this issue 10 years ago • 5 comments

        /// <summary>
        /// Initializes a new instance of the <see cref="NegativeBinomial"/> class.
        /// </summary>
        /// <param name="r">The number of failures (r) until the experiment stopped. Range: r ≥ 0.</param>
        /// <param name="p">The probability (p) of a trial resulting in success. Range: 0 ≤ p ≤ 1.</param>
        public NegativeBinomial(double r, double p)
        {
            if (!IsValidParameterSet(r, p))
            {
                throw new ArgumentException(Resources.InvalidDistributionParameters);
            }

            _random = SystemRandomSource.Default;
            _p = p;
            _trials = r;
        }

So here p is said to be success chance.

However, here:

 /// <summary>
        /// Gets the mean of the distribution.
        /// </summary>
        public double Mean
        {
            get { return _trials*(1.0 - _p)/_p; }
        }

According to wiki, it should be _trials * _p / (1 - _p) if we follow the description of the parameter.

It seems throughout the code we interpret _p as 1 - _p

colinfang avatar Nov 04 '14 17:11 colinfang

Also could someone check the Sample method? It produces non-sense as well.

colinfang avatar Nov 04 '14 17:11 colinfang

Thanks for pointing this out, will have a look at it.

Sample: the actual sampling distribution shape is indeed not currently verified in the unit tests (commented out, also Poisson and ConwayMaxwellPoisson). We must cover all of them properly.

cdrnet avatar Nov 06 '14 13:11 cdrnet

I finally had a quick first look at this - the talk page at that wikipedia article is quite interesting, there seems to be a lot of confusion, mostly on slightly different definitions of the parameters and the support. And yes, there seems to be a mismatch between our implementation and its own inline documentation.

cdrnet avatar Dec 25 '14 22:12 cdrnet

Related: #455

cdrnet avatar Dec 07 '16 06:12 cdrnet

The description was partially fixed in 9fbd27f53d2b9c84, however the description in the F# interface is still wrong.

Arlofin avatar Sep 29 '22 01:09 Arlofin