HistogramDistribution[{x1,x2,…}]
represents the probability distribution corresponding to a histogram of the data values xi.
HistogramDistribution[{{x1,y1,…},{x2,y2,…},…}]
represents a multivariate histogram distribution based on data values {xi,yi,…}.
HistogramDistribution[…,bspec]
represents a histogram distribution with bins specified by bspec.
HistogramDistribution
HistogramDistribution[{x1,x2,…}]
represents the probability distribution corresponding to a histogram of the data values xi.
HistogramDistribution[{{x1,y1,…},{x2,y2,…},…}]
represents a multivariate histogram distribution based on data values {xi,yi,…}.
HistogramDistribution[…,bspec]
represents a histogram distribution with bins specified by bspec.
Details
- HistogramDistribution returns a DataDistribution object that can be used like any other probability distribution.
- The probability density function for HistogramDistribution for a value
is given by
where
is the number of data points in bin
,
is the width of bin
,
are bin delimiters, and
is the total number of data points. - The
width of each bin is computed according to the values xi, the
width according to the yi, etc. - The following bin specifications bspec can be given:
-
n use n bins {w} use bins of width w {min,max,w} use bins of width w from min to max {{b1,b2,…}} use bins [b1,b2),[b2,b3),… Automatic determine bin widths automatically "name" use a named binning method fw apply fw to get an explicit bin specification {b1,b2,…} {xspec,yspec,…} give different x, y, etc. specifications - Possible named binning methods include:
-
"FreedmanDiaconis" twice the interquartile range divided by the cube root of sample size "Knuth" balance likelihood and prior probability of a piecewise uniform model "Scott" asymptotically minimize the mean square error "Sturges" compute the number of bins based on the length of data "Wand" one-level recursive approximate Wand binning - The probability density for value
in a histogram distribution is a piecewise constant function. - HistogramDistribution can be used with such functions as Mean, CDF, and RandomVariate.
Examples
open all close allBasic Examples (2)
Create a histogram distribution of univariate data:
𝒟 = HistogramDistribution[RandomVariate[NormalDistribution[], 10 ^ 3]];Use the resulting distribution to perform analysis, including visualizing distribution functions:
DiscretePlot[#[𝒟, x], {x, -4, 4, .01}, PlotLabel -> #]& /@ {PDF, CDF}Compute moments and quantiles:
Moment[𝒟, 2]Quantile[𝒟, 0.95]Create a histogram distribution of bivariate data:
𝒟 = HistogramDistribution[RandomVariate[BinormalDistribution[.75], 10 ^ 3]];Table[DiscretePlot3D[Evaluate[f[𝒟, {x, y}]], {x, -3, 3, .5}, {y, -3, 3, .5}, ExtentSize -> 1 / 2, PlotLabel -> f], {f, {PDF, CDF}}]Compute covariance and general moments:
Covariance[𝒟]//MatrixFormMoment[𝒟, {1, 2}]Scope (29)
Basic Uses (5)
Create a distribution from a histogram of some data:
data = RandomVariate[NormalDistribution[], 10^4];𝒟 = HistogramDistribution[data];Show[Histogram[data, Automatic, "PDF"], Plot[PDF[𝒟, x], {x, -4, 4}, PlotStyle -> Thick]]Compute probabilities from the distribution:
Probability[x > 3, x𝒟]Create histogram distributions from quantity data:
qa = RandomVariate[GammaDistribution[2, Quantity[3, "Grams"]], 10 ^ 3]𝒟 = HistogramDistribution[qa]Find select descriptive statistics:
#[𝒟]& /@ {Mean, Variance, Skewness, Kurtosis}Decrease the number of bins to decrease local sensitivity:
data = RandomVariate[NormalDistribution[], 100];bc = {100, 50, 10, 5};Table[Plot[PDF[HistogramDistribution[data, i], x]//Evaluate, {x, -4, 4}, PlotRange -> All, PlotLabel -> i, Filling -> Axis, Exclusions -> None, PlotPoints -> 500], {i, bc}]Increase the bin width to decrease local sensitivity:
data = RandomVariate[NormalDistribution[], 100];bw = {{.05}, {.1}, {.25}, {.75}};Table[Plot[PDF[HistogramDistribution[data, i], x]//Evaluate, {x, -4, 4}, PlotRange -> All, PlotLabel -> i, Filling -> Axis, Exclusions -> None, PlotPoints -> 500], {i, bw}]Create distributions from histograms in higher dimensions:
𝒟 = HistogramDistribution[RandomVariate[NormalDistribution[], {10, 3}]];Plot the univariate marginal PDFs:
Table[Plot[PDF[MarginalDistribution[𝒟, i], x]//Evaluate, {x, -4, 4}, Filling -> Axis, PlotLabel -> i, Exclusions -> None], {i, {1, 2, 3}}]Plot the bivariate marginal PDFs:
Table[DiscretePlot3D[PDF[MarginalDistribution[𝒟, i], {x, y}]//Evaluate, {x, -4, 4, .5}, {y, -4, 4, .5}, PlotLabel -> i, ExtentSize -> 1 / 2], {i, Subsets[{1, 2, 3}, {2}]}]Distribution Properties (10)
Estimate distribution functions:
𝒟 = HistogramDistribution[RandomVariate[NormalDistribution[], 1000]];Partition[Table[Plot[f[𝒟, x], {x, -4, 4}, PlotLabel -> f, Exclusions -> None], {f, {PDF, CDF, HazardFunction, SurvivalFunction}}], 2, 2]//GridCompute moments of the distribution:
𝒟 = HistogramDistribution[RandomReal[NormalDistribution[], 1000]];{Mean[𝒟], Variance[𝒟], Skewness[𝒟], Kurtosis[𝒟]}Table[Moment[𝒟, k], {k, 4}]Table[CentralMoment[𝒟, k], {k, 4}]Table[Cumulant[𝒟, k], {k, 4}]Table[FactorialMoment[𝒟, k], {k, 4}]𝒟 = HistogramDistribution[RandomReal[NormalDistribution[], 1000]];DiscretePlot[Quantile[𝒟, p], {p, 0, 1, .005}]Quartiles[𝒟]InterquartileRange[𝒟]Quantile[𝒟, {0.05, 0.95}]Median[𝒟]𝒟 = HistogramDistribution[RandomReal[NormalDistribution[], 1000], {-4, 4, 0.5}];RandomVariate[𝒟, 10]Compare with HistogramDistribution:
Show[Histogram[RandomVariate[𝒟, 10^3], {-4, 4, 0.5}, "PDF"],
DiscretePlot[PDF[𝒟, x], {x, -4, 4, .01}, PlotStyle -> Thick]]Compute probabilities and expectations:
𝒟 = HistogramDistribution[RandomReal[NormalDistribution[], 1000]];NProbability[-1 < x ≤ 2, x𝒟]NExpectation[x^2, x𝒟]𝒟 = HistogramDistribution[RandomReal[NormalDistribution[], 1000], 3]MomentGeneratingFunction[𝒟, t]CharacteristicFunction[𝒟, t]Estimate distribution functions for bivariate data:
𝒟 = HistogramDistribution[RandomVariate[BinormalDistribution[.75], 1000]];Partition[Table[DiscretePlot3D[f[𝒟, {x, y}]//Evaluate, {x, -4, 4, .5}, {y, -4, 4, .5}, PlotLabel -> f, ExtentSize -> 1 / 2, PlotRange -> {0, 1}], {f, {PDF, CDF, HazardFunction, SurvivalFunction}}], 2, 2]//GridCompute moments of a bivariate distribution:
𝒟 = HistogramDistribution[RandomReal[BinormalDistribution[.75], 1000]];{Mean[𝒟], Variance[𝒟]}Covariance[𝒟]//MatrixFormCorrelation[𝒟]//MatrixFormMoment[𝒟, {1, 2}]CentralMoment[𝒟, {1, 2}]Cumulant[𝒟, {1, 2}]FactorialMoment[𝒟, {1, 2}]𝒟 = HistogramDistribution[RandomReal[BinormalDistribution[.5], 10 ^ 4]];RandomVariate[𝒟, 6]ListPlot[RandomVariate[𝒟, 10^4], PlotStyle -> PointSize[Tiny], PlotRange -> {{-4, 4}, {-4, 4}}]Having fewer bins yields a coarser approximation to the underlying distribution:
𝒟c = HistogramDistribution[RandomReal[BinormalDistribution[.5], 10 ^ 4], 8];ListPlot[RandomVariate[𝒟c, 10^4], PlotStyle -> PointSize[Tiny], PlotRange -> {{-4, 4}, {-4, 4}}]𝒟 = HistogramDistribution[RandomReal[NormalDistribution[], {100, 2}], {2, 2}]MomentGeneratingFunction[𝒟, {Subscript[t, 1], Subscript[t, 2]}]Binning (14)
Automatically compute the number of bins:
𝒟1 = HistogramDistribution[RandomVariate[NormalDistribution[], 100]];
𝒟2 = HistogramDistribution[RandomVariate[NormalDistribution[], 1000]];More data yields smaller bins:
Table[DiscretePlot[PDF[𝒟, x], {x, -4, 4, .01}], {𝒟, {𝒟1, 𝒟2}}]Explicitly specify the number of bins to use:
data = RandomVariate[NormalDistribution[], 10 ^ 4];Specify 5 and 50 bins, respectively:
𝒟1 = HistogramDistribution[data, 5];
𝒟2 = HistogramDistribution[data, 50];Table[DiscretePlot[PDF[𝒟, x], {x, -4, 4, .01}], {𝒟, {𝒟1, 𝒟2}}]data = RandomVariate[NormalDistribution[], 10 ^ 4];𝒟1 = HistogramDistribution[data, {1.0}];
𝒟2 = HistogramDistribution[data, {0.1}];Table[DiscretePlot[PDF[𝒟, x], {x, -4, 4, .01}], {𝒟, {𝒟1, 𝒟2}}]Specify bin range and bin width:
data = RandomVariate[NormalDistribution[], 10 ^ 4];Use bin widths of 1.5 and .15 respectively over fixed interval:
𝒟1 = HistogramDistribution[data, {-4, 4, 1.5}];
𝒟2 = HistogramDistribution[data, {-4, 4, .15}];Table[DiscretePlot[PDF[𝒟, x], {x, -4, 4, .01}], {𝒟, {𝒟1, 𝒟2}}]Provide explicit bin delimiters:
data = RandomVariate[NormalDistribution[], 10 ^ 4];𝒟1 = HistogramDistribution[data, {{-4, -1, 0, 2, 4}}];
𝒟2 = HistogramDistribution[data, {{-3, 0, 2, 3}}];Table[DiscretePlot[PDF[𝒟, x], {x, -4, 4, .01}], {𝒟, {𝒟1, 𝒟2}}]Use different automatic binning methods:
data = RandomVariate[NormalDistribution[], 5 10 ^ 3];Table[DiscretePlot[PDF[HistogramDistribution[data, name], x]//Evaluate, {x, -4, 4, .01}, PlotLabel -> name], {name, {"Sturges", "Scott", "FreedmanDiaconis", "Wand"}}]Delimit bins on integer boundaries using a binning function:
integerBins[list_] := Union[IntegerPart[list]]𝒟 = HistogramDistribution[RandomReal[NormalDistribution[], 100], integerBins];DiscretePlot[PDF[𝒟, x], {x, -4, 4, .01}]Automatically compute the number of bins for bivariate data:
𝒟1 = HistogramDistribution[RandomVariate[BinormalDistribution[.5], 100]];
𝒟2 = HistogramDistribution[RandomVariate[BinormalDistribution[.5], 1000]];More data yields smaller bins:
Table[DiscretePlot3D[PDF[𝒟, {x, y}]//Evaluate, {x, -4, 4, .5}, {y, -4, 4, .5}, ExtentSize -> 1 / 2, PlotRange -> All], {𝒟, {𝒟1, 𝒟2}}]Explicitly specify the number of bins to use:
data = RandomVariate[BinormalDistribution[.5], 10 ^ 4];𝒟1 = HistogramDistribution[data, 5];
𝒟2 = HistogramDistribution[data, 10];Table[DiscretePlot3D[PDF[𝒟, {x, y}]//Evaluate, {x, -4, 4, .5}, {y, -4, 4, .5}, ExtentSize -> 1 / 2, PlotRange -> All], {𝒟, {𝒟1, 𝒟2}}]data = RandomVariate[BinormalDistribution[.5], 10 ^ 4];𝒟1 = HistogramDistribution[data, {1.0}];
𝒟2 = HistogramDistribution[data, {2.0}];Table[DiscretePlot3D[PDF[𝒟, {x, y}]//Evaluate, {x, -4, 4, .5}, {y, -4, 4, .5}, ExtentSize -> 1 / 2, PlotRange -> All], {𝒟, {𝒟1, 𝒟2}}]Specify bin range and bin width:
data = RandomVariate[BinormalDistribution[.5], 10 ^ 4];𝒟1 = HistogramDistribution[data, {{-4, 4, 1.0}}];
𝒟2 = HistogramDistribution[data, {{-4, 4, 2.0}}];Table[DiscretePlot3D[PDF[𝒟, {x, y}]//Evaluate, {x, -4, 4, .5}, {y, -4, 4, .5}, ExtentSize -> 1 / 2, PlotRange -> All], {𝒟, {𝒟1, 𝒟2}}]Explicitly give bin delimiters:
data = RandomVariate[BinormalDistribution[.5], 10 ^ 4];𝒟1 = HistogramDistribution[data, {{{-4, -1, 0, 1, 4}}}];
𝒟2 = HistogramDistribution[data, {{{-4, -1, 0, 2, 4}}}];Table[DiscretePlot3D[PDF[𝒟, {x, y}]//Evaluate, {x, -4, 4, .5}, {y, -4, 4, .5}, ExtentSize -> 1 / 2, PlotRange -> All], {𝒟, {𝒟1, 𝒟2}}]Use different automatic binning methods:
data = RandomVariate[BinormalDistribution[.5], 1000];Table[DiscretePlot3D[PDF[HistogramDistribution[data, name], {x, y}]//Evaluate, {x, -4, 4, .5}, {y, -4, 4, .5}, ExtentSize -> 1 / 2, PlotRange -> All, PlotLabel -> name], {name, {"Sturges", "Scott", "FreedmanDiaconis", "Wand"}}]Use different bin specifications in each dimension:
data = RandomVariate[BinormalDistribution[.5], 10 ^ 4];Specify 3 bins in the row dimension and bin width 0.5 in the column dimension:
𝒟 = HistogramDistribution[data, {3, {0.5}}];DiscretePlot3D[PDF[𝒟, {x, y}]//Evaluate, {x, -4, 4, .5}, {y, -4, 4, .5}, ExtentSize -> 1 / 2]Applications (6)
Compare an estimated density to a theoretical model:
𝒹 = MixtureDistribution[{1 / 2, 1 / 10, 1 / 10, 1 / 10, 1 / 10, 1 / 10}, Join[{NormalDistribution[]}, Table[NormalDistribution[i / 2 - 1, 1 / 10], {i, 0, 4}]]];dist = HistogramDistribution[RandomVariate[𝒹, 10 ^ 5]];Show[Plot[PDF[𝒹, x], {x, -4, 4}], DiscretePlot[PDF[dist, x], {x, -4, 4, .01}, PlotStyle -> RGBColor[0.880722, 0.611041, 0.142051]]]Distribution of lengths of human chromosomes:
𝒟 = HistogramDistribution[ Log[Table[GenomeData[i, "SequenceLength"], {i, 41}] ], "Sturges"];DiscretePlot[PDF[𝒟, x], {x, 0, 30, .01}, PlotRange -> All]Compute the probability that the sequence length is greater than 15:
Probability[gLen > 15, gLen𝒟]Compare the distributions of word length for some of the parts of speech:
partOfSpeech = WordData[All, "PartsOfSpeech"][[1 ;; 6]];data = Table[StringLength /@ w, {w, (WordData[All, #]& /@ partOfSpeech)}];Table[DiscretePlot[PDF[HistogramDistribution[data[[i]]], x]//Evaluate, {x, 0, 30, .01}, PlotLabel -> partOfSpeech[[i]], PlotRange -> All], {i, Length[partOfSpeech]}]The expected number of characters for a randomly chosen English noun:
Expectation[len, lenHistogramDistribution[data[[1]]]]//NEstimate the distribution of day-to-day point changes in the S&P 500 index:
sp500 = FinancialData["SP500", All]sp500Ratio = Log[Ratios[sp500]];𝒟 = HistogramDistribution[sp500Ratio];Plot[PDF[𝒟, x], {x, -.05, .05}, Exclusions -> None, Filling -> Axis, Axes -> {True, False}]Compute the probability of a 1% point change or more on a given day:
Probability[x ≥ Log[1.01], x𝒟]Determine the number of bins to use for bimodal data by Knuth's Bayesian method:
ExampleData[{"Statistics", "OldFaithful"}, "ColumnDescriptions"]data = ExampleData[{"Statistics", "OldFaithful"}][[All, 1]];optBins[data_, M_Integer] := Block[{nn = Length[data], n, p1, p2, min, max}, {min, max} = Through[{Min, Max}[data]];
n = N[HistogramList[data, {min, max + (max - min) / M, (max - min) / M}][[2]]];
p1 = nn Log[M] + LogGamma[M / 2] - LogGamma[nn + M / 2];
p2 = -M LogGamma[1 / 2] + Total[LogGamma[n + 1 / 2]];p1 + p2]The optimal number of bins maximizes the log of the posterior density:
oBins = Table[{nbin, optBins[data, nbin]}, {nbin, Length[data] / 6}];ListLinePlot[oBins, Filling -> Axis, AxesOrigin -> {0, -300}]opt = SortBy[oBins, Last][[-1, 1]]Density estimates using Knuth's method, Scott's rule, and the Freedman–Diaconis rule:
rules = {"Knuth", "Scott", "FreedmanDiaconis"};
Table[Plot[PDF[𝒟[i] = HistogramDistribution[data, rules[[i]] /. "Knuth" -> opt], x]//Evaluate, {x, 1, 7}, PlotRange -> All, Exclusions -> None, Filling -> Axis, PlotLabel -> rules[[i]]], {i, 1, 3}]Knuth's method outperforms the other two in terms of LogLikelihood:
Table[LogLikelihood[𝒟, data], {𝒟, {𝒟[1], 𝒟[2], 𝒟[3]}}]Construct a continuous version of the empirical cumulative distribution function:
data = RandomVariate[NormalDistribution[], 12]ed = EmpiricalDistribution[data];
hd = HistogramDistribution[data, {Sort[data]}];Cumulative distribution function for HistogramDistribution is piecewise linear:
Plot[{CDF[hd, x], CDF[ed, x]}, {x, 1.1 Min[data], 1.1 Max[data]}, Filling -> {1 -> {2}, 2 -> Axis}, PlotLegends -> {"Piecewise-linear", "Piecewise-constant"}]Compute Cramer–von Mises distance between the two distributions:
Expectation[(CDF[ed, x] - CDF[hd, x]) ^ 2, xhd]Properties & Relations (10)
The PDF of HistogramDistribution is equivalent to a probability density Histogram:
data = RandomVariate[NormalDistribution[], 1000];Show[Histogram[data, Automatic, "PDF"], DiscretePlot[PDF[HistogramDistribution[data], x], {x, -4, 4, .01}, PlotStyle -> Thick]]The resulting density estimate integrates to unity:
𝒟 = HistogramDistribution[RandomVariate[NormalDistribution[], 10 ^ 3]];Integrate[PDF[𝒟, x], {x, -Infinity, Infinity}]The precision of the output matches the precision of the data:
dist = HistogramDistribution[{1, 2, 3, 4, 5}]Precision[dist]The PDF is piecewise constant:
𝒟 = HistogramDistribution[RandomVariate[NormalDistribution[], 10 ^ 3], 4];PDF[𝒟, x]//PiecewiseExpandThe CDF and SurvivalFunction are piecewise linear:
𝒟 = HistogramDistribution[RandomVariate[NormalDistribution[], 10 ^ 3], 4];CDF[𝒟, x]//PiecewiseExpandSurvivalFunction[𝒟, x]//PiecewiseExpandThe HazardFunction is linear fractional:
𝒟 = HistogramDistribution[RandomVariate[NormalDistribution[], 10 ^ 3], 4];HazardFunction[𝒟, x]//PiecewiseExpand//QuietHistogramDistribution is a MixtureDistribution of uniform distributions:
data = RandomVariate[NormalDistribution[], 10 ^ 3];{bl, cl} = HistogramList[data]dist1 = HistogramDistribution[data, {bl}];dist2 = MixtureDistribution[cl, Table[UniformDistribution[{bl[[i]], bl[[i + 1]]}], {i, Length[bl] - 1}]];Plot[PDF[#, x], {x, -5, 5}, Exclusions -> None, Filling -> Axis]& /@ {dist1, dist2}HistogramDistribution is a consistent estimator of the underlying distribution:
data = Table[RandomVariate[NormalDistribution[], 10^i], {i, Range[2, 5]}];𝒟 = Table[HistogramDistribution[i], {i, data}];Table[Plot[{PDF[𝒟[[i]], x], PDF[NormalDistribution[], x]}, {x, -4, 4}, Exclusions -> None, PlotRange -> All, PlotLabel -> Row[{"n = ", Superscript[10, i]}]], {i, Range[4]}]HistogramDistribution works with the values only when the input is a TimeSeries:
ts = TemporalData[TimeSeries, {{{-0.3841368896539435, -0.16640803451480843, 0.6929948737894751,
-2.1004098132785964, -0.7124674029060342, -0.7258319411964131, 0.2993123552236552,
-0.9152583472870652, 1.599389522268598, 0.12404249808714003, -1. ... 188032153989, 1.656237325151233,
1.6805126287994852, 1.7971439853604791, 1.899216338440769, 2.0739211140534186}}}, 1,
{"Continuous", 1}, {"Discrete", 1}, 1,
{ResamplingMethod -> {"Interpolation", InterpolationOrder -> 1}}}, False, 10.];hd = HistogramDistribution[ts]Plot[PDF[hd, x], {x, -3, 3}, Exclusions -> None]Compare to the histogram distribution of the values:
hdv = HistogramDistribution[ts["Values"]]hd == hdvHistogramDistribution works with all the values together when the input is a TemporalData:
td = TemporalData[Automatic, {{{0.364191284336665, 0.23842337219863016, -0.8316476833544613,
1.544053351825183, -2.0166147243047767, 0.2614665355347544, -1.2454913547771056,
-0.6317633950902457, 0.2838937206716775, 1.6668310901871626, -0.72049 ... .5921612088884451, 1.654275735349441, 1.7430161272580262, 1.7890579608064174,
1.8395626018554865, 1.932148707754712, 2.0248106606311564, 2.055974115570984,
2.4794187314021934}}}, 4, {"Discrete", 4}, {"Discrete", 1}, 1, {}}, False, 10.];hd = HistogramDistribution[td]Plot[PDF[hd, x], {x, -3, 3}, Exclusions -> None]Compare to the histogram distribution calculated with the values from all the paths:
hdv = HistogramDistribution[td["ValueList"]//Flatten]hd == hdvPossible Issues (1)
It is possible to drop data from the estimation by specifying a binning range:
data = RandomVariate[NormalDistribution[0, 1], 1000];HistogramDistribution[data, {-1, 1, .25}]Plot[PDF[%, x], {x, -4, 4}, Exclusions -> None]Specifying a width alone uses all the data:
HistogramDistribution[data, {.25}]Plot[PDF[%, x], {x, -4, 4}, Exclusions -> None]Neat Examples (1)
Random pop art with HistogramDistribution:
data = RandomVariate[BinormalDistribution[.5], 2500];bspecs = Table[{{RandomVariate[NormalDistribution[], 4]//Sort}, {RandomVariate[NormalDistribution[], 5]//Sort}}, {12}];𝒟 = Table[HistogramDistribution[data, i], {i, bspecs}];Table[ContourPlot[PDF[𝒟[[i]], {x, y}]//Evaluate, {x, Min[bspecs[[i]][[1]]], Max[bspecs[[i]][[1]]]}, {y, Min[bspecs[[i]][[2]]], Max[bspecs[[i]][[2]]]}, PlotRange -> All, ColorFunction -> "BrightBands", Exclusions -> None, PlotPoints -> 50, FrameTicks -> None], {i, Length[bspecs]}]Related Guides
Text
Wolfram Research (2010), HistogramDistribution, Wolfram Language function, https://reference.wolfram.com/language/ref/HistogramDistribution.html (updated 2016).
CMS
Wolfram Language. 2010. "HistogramDistribution." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2016. https://reference.wolfram.com/language/ref/HistogramDistribution.html.
APA
Wolfram Language. (2010). HistogramDistribution. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/HistogramDistribution.html
BibTeX
@misc{reference.wolfram_2026_histogramdistribution, author="Wolfram Research", title="{HistogramDistribution}", year="2016", howpublished="\url{https://reference.wolfram.com/language/ref/HistogramDistribution.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_histogramdistribution, organization={Wolfram Research}, title={HistogramDistribution}, year={2016}, url={https://reference.wolfram.com/language/ref/HistogramDistribution.html}, note=[Accessed: 12-June-2026]}