var gammaDist = function(){ var gamma = {}, shape, scale; var labeler = function(shape, scale){ return "Gamma(α = " + d3.round(shape, 3) + ", " + "θ = " + d3.round(scale, 3) + ")"; } gamma.shape = function(_) { if (!arguments.length) return shape; shape = _; gamma.label = labeler(shape, scale); return gamma; }; gamma.scale = function(_) { if (!arguments.length) return scale; scale = _; gamma.label = labeler(shape, scale); return gamma; }; gamma.mean = function(_) { if (!arguments.length) return jStat.gamma.mean(shape, scale); scale = _ / shape; gamma.label = labeler(shape, scale); return gamma; }; gamma.pdf = function(x){ return jStat.gamma.pdf(x, shape, scale); } gamma.cdf = function(x){ return jStat.gamma.cdf(x, shape, scale); } gamma.inv = function(p){ return jStat.gamma.inv(p, shape, scale); } return gamma; } var lognormalDist = function(){ var lognormal = {}, mu, sigma; var labeler = function(mu, sigma){ return "Lognormal(μ = " + d3.round(mu, 3) + ", " + "σ = " + d3.round(sigma, 3) + ")"; } lognormal.mu = function(_) { if (!arguments.length) return mu; mu = _; lognormal.label = labeler(mu, sigma); return lognormal; }; lognormal.sigma = function(_) { if (!arguments.length) return sigma; sigma = _; lognormal.label = labeler(mu, sigma); return lognormal; }; lognormal.mean = function(_) { if (!arguments.length) return jStat.lognormal.mean(mu, sigma); mu = Math.log(_) - (sigma * sigma) / 2; lognormal.label = labeler(mu, sigma); return lognormal; }; lognormal.pdf = function(x){ return jStat.lognormal.pdf(x, mu, sigma); } lognormal.cdf = function(x){ return jStat.lognormal.cdf(x, mu, sigma); } lognormal.inv = function(p){ return jStat.lognormal.inv(p, mu, sigma); } return lognormal; } var paretoDist = function(){ var pareto = {}, scale, shape; var labeler = function(scale, shape){ return "Pareto(x_m = " + d3.round(scale, 3) + ", " + "α = " + d3.round(shape, 3) + ")"; } pareto.shape = function(_) { if (!arguments.length) return shape; shape = _; pareto.label = labeler(scale, shape); return pareto; }; pareto.scale = function(_) { if (!arguments.length) return scale; scale = _; pareto.label = labeler(scale, shape); return pareto; }; pareto.mean = function(_) { if (!arguments.length) return jStat.pareto.mean(scale, shape); scale = _ * (shape - 1) / shape; pareto.label = labeler(scale, shape); return pareto; }; pareto.pdf = function(x){ return jStat.pareto.pdf(x, scale, shape); } pareto.cdf = function(x){ return jStat.pareto.cdf(x, scale, shape); } pareto.inv = function(p){ return jStat.pareto.inv(p, scale, shape); } return pareto; } var weibullDist = function(){ var weibull = {}, scale, shape; var labeler = function(scale, shape){ return "Weibull(λ = " + d3.round(scale, 3) + ", " + "k = " + d3.round(shape, 3) + ")"; } weibull.shape = function(_) { if (!arguments.length) return shape; shape = _; weibull.label = labeler(scale, shape); return weibull; }; weibull.scale = function(_) { if (!arguments.length) return scale; scale = _; weibull.label = labeler(scale, shape); return weibull; }; weibull.mean = function(_) { if (!arguments.length) return jStat.weibull.mean(scale, shape); scale = _ / jStat.gammafn(1 + 1/shape); weibull.label = labeler(scale, shape); return weibull; }; weibull.pdf = function(x){ return jStat.weibull.pdf(x, scale, shape); } weibull.cdf = function(x){ return jStat.weibull.cdf(x, scale, shape); } weibull.inv = function(p){ return jStat.weibull.inv(p, scale, shape); } return weibull; }