Skip to content

Concept for copula extension to Math.Net Numerics

License

Notifications You must be signed in to change notification settings

kacisse/CopulaBuild

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Math.NET Numerics - Copula Module Concept

This solution is a concept implementation for expansions to Math.NET Numerics, with the aim to facilitate the creation of random samples via copulas. When finished it is intended to be integrated and merged into the main library. Until then changes can be tracked here. All additions made here are under the same license as the original library, i.e. the MIT license. Currently implemented copulas are

  • Gaussian Copula, - creation from Pearson linear, Spearman and Kendall rank correlation possible
  • t Copula, - creation from Pearson linear, Spearman and Kendall rank correlation possible
  • Clayton Copula, - bivariate, creation currently only from Kendalls Tau

In addition to standard constructors the creation of the copulas is implemented via a step builder pattern. For example one can create a t copula by

var tCopula = tCopula.Builder()
            .SetDFreedom(4.5)
            .SetCorrelationType(CorrelationType.PearsonLinear)
            .SetRho(rho)
            .Build();

Similarly for archimedean copulas:

var claytonCopula = ClaytonCopula.Builder()
            .SetCorrelationType(RankCorrelationType.KendallRank)
            .SetRho(corr)
            .Build();

Math.NET Numerics

Math.NET Numerics is an opensource numerical library for .Net, Silverlight and Mono.

Math.NET Numerics is the numerical foundation of the Math.NET initiative, aiming to provide methods and algorithms for numerical computations in science, engineering and every day use. Covered topics include special functions, linear algebra, probability models, random numbers, statistics, interpolation, integration, regression, curve fitting, integral transforms (FFT) and more.

In addition to the core .NET package (which is written entirely in C#), Numerics specifically supports F# with idiomatic extension modules and maintains mathematical data structures like BigRational that originated in the F# PowerPack. If a performance boost is needed, the managed-code provider backing its linear algebra routines and decompositions can be exchanged with wrappers for optimized native implementations such as Intel MKL.

Math.NET Numerics is covered under the terms of the MIT/X11 license. You may therefore link to it and use it in both opensource and proprietary software projects. We accept contributions!

Current Version

Math.NET Numerics Version Math.NET Numerics
MKL Native Provider Version MKL Native Provider
OpenBLAS Native Provider Version OpenBLAS Native Provider
Data Extensions Version Data Extensions

Installation Instructions

The recommended way to get Math.NET Numerics is to use NuGet. The following packages are provided and maintained in the public NuGet Gallery.

Core Package:

  • MathNet.Numerics - core package, including .Net 4, .Net 3.5 and portable/PCL builds.
  • MathNet.Numerics.FSharp - optional extensions for a better F# experience. BigRational.
  • MathNet.Numerics.Signed - strong-named version of the core package (not recommended).
  • MathNet.Numerics.FSharp.Signed - strong-named version of the F# package (not recommended).

Alternative Provider Packages (optional):

  • MathNet.Numerics.MKL.Win-x86 - Native Intel MKL Linear Algebra provider (Windows/32-bit).
  • MathNet.Numerics.MKL.Win-x64 - Native Intel MKL Linear Algebra provider (Windows/64-bit).

Data/IO Packages for reading and writing data (optional):

  • MathNet.Numerics.Data.Text - Text-based matrix formats like CSV and MatrixMarket.
  • MathNet.Numerics.Data.Matlab - MATLAB Level-5 matrix file format.

Platform Support and Dependencies

Supported Platforms:

  • .Net 4.0, .Net 3.5 and Mono: Windows, Linux and Mac.
  • PCL Portable Profiles 7, 47, 78, 259 and 328: Windows 8, Silverlight 5, Windows Phone/SL 8, Windows Phone 8.1.
  • Xamarin: Android, iOS

For full details, dependencies and platform discrepancies see Platform Compatibility.

Building Math.NET Numerics

Windows (.Net): AppVeyor build status
Linux (Mono): Travis Build Status

You can build Math.NET Numerics with an IDE like VisualStudio or Xamarin, with MsBuild or with FAKE.

MsBuild/XBuild:

restore.cmd (or restore.sh)
msbuild MathNet.Numerics.sln

FAKE:

build.cmd Build    # build from the Windows console with .Net
./build.sh Build   # build from Bash, with Mono on Linux/Mac or .Net on Windows
./build.sh Test    # build and run unit tests

See Build & Tools for full details on how to build, generate documentation or even create a full release.

About

Concept for copula extension to Math.Net Numerics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 100.0%