1 | var B = require("./base");
|
2 | var J = require("jStat").jStat;
|
3 |
|
4 | var S = {
|
5 |
|
6 | runif:function(n, a, b) { return B.calls(n, J.uniform.sample, a, b); },
|
7 | dunif:J.uniform.pdf,
|
8 | punif:J.uniform.cdf,
|
9 | qunif:J.uniform.inv,
|
10 |
|
11 | rnorm:function(n, mean, sd) { return B.calls(n, J.normal.sample, mean, sd); },
|
12 | dnorm:J.normal.pdf,
|
13 | pnorm:J.normal.cdf,
|
14 | qnorm:J.normal.inv,
|
15 |
|
16 | rpois:function(n, l) { return B.calls(n, J.poisson.sample, l); },
|
17 | dpois:J.poisson.pdf,
|
18 | ppois:J.poisson.cdf,
|
19 | qpois:J.poisson.inv,
|
20 |
|
21 | rf:function(n, df1, df2) { return B.calls(n, J.centralF.sample, df1, df2); },
|
22 | df:J.centralF.pdf,
|
23 | pf:J.centralF.cdf,
|
24 | qf:J.centralF.inv,
|
25 |
|
26 | rt:function(n, dof) { return B.calls(n, J.studentt.sample, dof); },
|
27 | dt:J.studentt.pdf,
|
28 | pt:J.studentt.cdf,
|
29 | qt:J.studentt.inv,
|
30 |
|
31 | rbeta:function(n, alpha, beta) { return B.calls(n, J.beta.sample, alpha, beta); },
|
32 | beta:J.beta.pdf,
|
33 | pbeta:J.beta.cdf,
|
34 | qbeta:J.beta.inv,
|
35 |
|
36 | rcauchy:function(n, local, scale) { return B.calls(n, J.cauchy.sample, local, scale); },
|
37 | dcauchy:J.cauchy.pdf,
|
38 | pcauchy:J.cauchy.cdf,
|
39 | qcauchy:J.cauchy.inv,
|
40 |
|
41 | rchisq:function(n, dof) { return B.calls(n, J.chisquare.sample, dof); },
|
42 | dchisq:J.chisquare.pdf,
|
43 | pchisq:J.chisquare.cdf,
|
44 | qchisq:J.chisquare.inv,
|
45 |
|
46 | rexp:function(n, rate) { return B.calls(n, J.exponential.sample, rate); },
|
47 | dexp:J.exponential.pdf,
|
48 | pexp:J.exponential.cdf,
|
49 | qexp:J.exponential.inv,
|
50 |
|
51 | rgamma:function(n, shape, scale) { return B.calls(n, J.gamma.sample, shape, scale); },
|
52 | dgamma:J.gamma.pdf,
|
53 | pgamma:J.gamma.cdf,
|
54 | qgamma:J.gamma.inv,
|
55 |
|
56 | rinvgamma:function(n, shape, scale) { return B.calls(n, J.invgamma.sample, shape, scale); },
|
57 | dinvgamma:J.invgamma.pdf,
|
58 | pinvgamma:J.invgamma.cdf,
|
59 | qinvgamma:J.invgamma.inv,
|
60 |
|
61 | rlognormal:function(n, mu, sigma) { return B.calls(n, J.dlognormal.sample, mu, sigma); },
|
62 | lognormal:J.lognormal.pdf,
|
63 | plognormal:J.lognormal.cdf,
|
64 | qlognormal:J.lognormal.inv,
|
65 |
|
66 | rpareto:function(n, scale, shape) { return B.calls(n, J.pareto.sample, scale, shape); },
|
67 | dpareto:J.pareto.pdf,
|
68 | ppareto:J.pareto.cdf,
|
69 | qpareto:J.pareto.inv,
|
70 |
|
71 | rweibull:function(n, scale, shape) { return B.calls(n, J.weibull.sample, scale, shape); },
|
72 | dweibull:J.weibull.pdf,
|
73 | pweibull:J.weibull.cdf,
|
74 | qweibull:J.weibull.inv,
|
75 |
|
76 | rtriangular:function(n, a, b, c) { return B.calls(n, J.triangular.sample, a, b, c); },
|
77 | dtriangular:J.triangular.pdf,
|
78 | ptriangular:J.triangular.cdf,
|
79 | qtriangular:J.triangular.inv,
|
80 |
|
81 | rkumaraswamy:function(n, alpha, beta) { return B.calls(n, J.kumaraswamy.sample, alpha, beta); },
|
82 | dkumaraswamy:J.kumaraswamy.pdf,
|
83 | pkumaraswamy:J.kumaraswamy.cdf,
|
84 | qkumaraswamy:J.kumaraswamy.inv,
|
85 |
|
86 |
|
87 | qcdf:function(cdf, q, N, p) {
|
88 | for (var i=0; i<=N; i++) {
|
89 | if (cdf(i, N, p) > q) return i;
|
90 | }
|
91 | return N;
|
92 | },
|
93 | rcdf:function(cdf, n, N, p) {
|
94 | var a = [];
|
95 | for (var i=0; i<n; i++) {
|
96 | var q = Math.random();
|
97 | a.push(cdf(q, N, p));
|
98 | }
|
99 | return a;
|
100 | },
|
101 |
|
102 | dbinom:J.binomial.pdf,
|
103 | pbinom:J.binomial.cdf,
|
104 | qbinom:function(q, N, p) { return S.qcdf(S.pbinom, q, N, p); },
|
105 | rbinom:function(n, N, p) { return S.rcdf(S.qbinom, n, N, p); },
|
106 |
|
107 | dnbinom:J.negbin.pdf,
|
108 | pnbinom:J.negbin.cdf,
|
109 | qnbinom:function(q, N, p) { return S.qcdf(S.pnbinom, q, N, p); },
|
110 | rnbinom:function(n, N, p) { return S.rcdf(S.qnbinom, n, N, p); },
|
111 |
|
112 | dhyper:J.hypgeom.pdf,
|
113 | phyper:J.hypgeom.cdf,
|
114 | qhyper:function(q, N, m, n) { return S.qcdf(S.phyper, q, N, p); },
|
115 | rhyper:function(n, N, m, k) { return S.rcdf(S.qhyper, n, N, p); },
|
116 |
|
117 | };
|
118 |
|
119 | module.exports = S; |
\ | No newline at end of file |