C# Probability Distribution Example

← All NMath Stats Code Examples

 

using System;

using CenterSpace.NMath.Core;
using CenterSpace.NMath.Stats;

namespace ProbabilityDistributionExample
{
  /// <summary>
  /// A .NET example in C# showing how to use the probability distribution classes.
  /// </summary>
  /// <remarks>
  /// NMath Stats provides classes for computing the probability density
  /// function (PDF), the cumulative distribution function (CDF), the inverse
  /// cumulative distribution function, and random variable moments for a
  /// variety of probability distributions, including normal (Gaussian), Poisson,
  /// chi-square, gamma, beta, Student's t, F, binomial, and negative binomial.
  /// </remarks>
  class ProbabilityDistributionExample
  {

    static void Main( string[] args )
    {
      // The distribution classes share a common interface, so once you
      // learn how to use one distribution class, it’s easy to use any of
      // the others. This code constructs an F distribution object with
      // degrees of freedom 9,24.
      int df1 = 9;
      int df2 = 24;
      var dist = new FDistribution( df1, df2 );

      Console.WriteLine();
      Console.WriteLine( dist );
      Console.WriteLine();

      // Pick a sample value for the F statistic.
      double fstat = 3.94;
      Console.WriteLine( "Sample F statistic = {0}", fstat );
      Console.WriteLine();

      // The PDF() method computes the probability density function
      // evaluated at a given value. The probability of
      // observing an F-statistic of 3.94 is given by:
      Console.WriteLine( "PDF = {0}", dist.PDF( fstat ) );

      // The CDF() method computes the cumulative density function
      // evaluated at a given value. Find the probability of
      // observing an F-statistic of 3.94 or less, and the probability
      // of observing an F-statistic greater than 3.94:
      Console.WriteLine( "CDF = {0}", dist.CDF( fstat ) );
      Console.WriteLine( "Upper tail probability = {0}", 1 - dist.CDF( fstat ) );
      Console.WriteLine();

      // The InverseCDF() computes the inverse cumulative density
      // function evaluated at a given value. Calculate left and right
      // critical values for 0.01 alpha level:
      double alpha = 0.01;
      Console.WriteLine( "Alpha = {0}", alpha );
      Console.WriteLine( "Left critical value = {0}", dist.InverseCDF( alpha ) );
      Console.WriteLine( "Right critical value = {0}", dist.InverseCDF( 1 - alpha ) );
      Console.WriteLine();

      // Properties are provided for getting the first four moments of a
      // distribution.
      Console.WriteLine( "Mean of distribution = {0}", dist.Mean );
      Console.WriteLine( "Variance of distribution = {0}", dist.Variance );
      Console.WriteLine( "Skewness of distribution = {0}", dist.Skewness );
      Console.WriteLine( "Kurtosis of distribution = {0}", dist.Kurtosis );
      Console.WriteLine();

      Console.WriteLine();
      Console.WriteLine( "Press Enter Key" );
      Console.Read();

    }  // Main

  }  // class

}  // namespace

← All NMath Stats Code Examples
Top