WDistributions.mjs

import Uniform from './uniform.mjs'
import Normal from './normal.mjs'
import Binomial from './binomial.mjs'
import Studentt from './studentt.mjs'


/**
 * 計算Uniform、Normal、Binomial、Studentt分佈參數
 *
 * 因原版distributions使用cephes時未用compiled方式來支援瀏覽器, 且cephes內有使用node的Buffer, 需配合node polyfill編譯才能給前端瀏覽器使用
 *
 * Fork: {@link https://github.com/AndreasMadsen/distributions distributions}
 *
 * Unit Test: {@link https://github.com/yuda-lyu/wsemi/blob/master/test/distri.test.js Github}
 *
 * @returns {Object} 回傳各分佈初始化函數
 * @example
 *
 * //import wd from './src/WDistributions.mjs'
 * //import wd from './dist/w-distributions.umd.js'
 * //import wd from 'w-distributions'
 *
 * async function test() {
 *     let r
 *
 *     let normal = await wd.Normal(1,2) //mean=1,std deviation=2
 *
 *     r = normal.pdf(1)
 *     console.log(r)
 *     // => 0.19947114020071632
 *
 *     r = normal.cdf(1)
 *     console.log(r)
 *     // => 0.5
 *
 *     r = normal.inv(1)
 *     console.log(r)
 *     // => Infiniy
 *
 *     r = normal.mean()
 *     console.log(r)
 *     // => 1
 *
 *     r = normal.median()
 *     console.log(r)
 *     // => 1
 *
 *     r = normal.variance()
 *     console.log(r)
 *     // => 4
 *
 *     //compare with: https://stattrek.com/online-calculator/t-distribution.aspx
 *
 *     let studentt = await wd.Studentt(34) //degrees of freedom=34
 *
 *     r = studentt.inv(0.95) //one or two sided test p-values=0.95
 *     console.log(r)
 *     // => 1.6909242551868549
 *
 *     studentt = await wd.Studentt(4) //degrees of freedom=4
 *
 *     r = studentt.inv(0.05) //one or two sided test p-values=0.05
 *     console.log(r)
 *     // => -2.1318467863266504
 *
 * }
 * test()
 *     .catch((err) => {
 *         console.log(err)
 *     })
 *
 */
function WDistributions() {
    return {
        Uniform,
        Normal,
        Binomial,
        Studentt,
    }
}


export default WDistributions()