EmpiricalDistribution[{x1,x2,…}]
データ値 xiに基づいた経験分布を表す.
EmpiricalDistribution[{{x1,y1,…},{x2,y2,…},…}]
データ値{xi,yi,…}に基づいた多変量経験分布を表す.
EmpiricalDistribution[{w1,w2,…}{d1,d2,…}]
データ値 diが重み wiで現れる経験分布を表す.
EmpiricalDistribution
EmpiricalDistribution[{x1,x2,…}]
データ値 xiに基づいた経験分布を表す.
EmpiricalDistribution[{{x1,y1,…},{x2,y2,…},…}]
データ値{xi,yi,…}に基づいた多変量経験分布を表す.
EmpiricalDistribution[{w1,w2,…}{d1,d2,…}]
データ値 diが重み wiで現れる経験分布を表す.
詳細
- EmpiricalDistributionは任意の他の確率分布のように使えるDataDistributionオブジェクトを返す.
- EmpiricalDistributionの値 x についての累積分布関数は
で与えられる. - EmpiricalDistributionはMean,CDF,RandomVariate等の関数で使うことができる.
例題
すべて開く すべて閉じる例 (2)
data = RandomVariate[NormalDistribution[], 50];𝒟 = EmpiricalDistribution[data];{DiscretePlot[PDF[𝒟, x], {x, data}], DiscretePlot[CDF[𝒟, x], {x, -4, 4, .01}]}Moment[𝒟, 2]Quantile[𝒟, 0.95]data = BlockRandom[SeedRandom[0];RandomVariate[NormalDistribution[0, 2], {10, 2}]];𝒟 = EmpiricalDistribution[data];推定CDFを可視化する:
Plot3D[Evaluate[CDF[𝒟, {x, y}]], {x, -5, 5}, {y, -5, 5}, ExclusionsStyle -> Gray, Mesh -> None, PlotPoints -> 50]Covariance[𝒟]//MatrixFormMoment[𝒟, {1, 2}]スコープ (19)
基本的な用法 (10)
data1 = RandomVariate[NormalDistribution[], 10];
data2 = RandomVariate[NormalDistribution[], 100];𝒟1 = EmpiricalDistribution[data1];
𝒟2 = EmpiricalDistribution[data2];大きいデータ集合を使うともとになった分布がよりよく近似できる:
Table[Plot[{CDF[𝒟, x], CDF[NormalDistribution[], x]}, {x, -5, 5}, Exclusions -> None], {𝒟, {𝒟1, 𝒟2}}]qa = QuantityArray[RandomReal[{45, 80}, 10 ^ 3], "Seconds"]𝒟 = EmpiricalDistribution[qa]#[𝒟]& /@ {Mean, Variance, Skewness, Kurtosis}data = {2, √3, Pi, E, Log[5], 1, 2Pi};𝒟 = EmpiricalDistribution[data];CDF[𝒟, x]//PiecewiseExpanddata = {1, 2, 3, 4, 5};
weights = {5, 4, 3, 2, 1};𝒟1 = EmpiricalDistribution[data];
𝒟2 = EmpiricalDistribution[weights -> data];Table[DiscretePlot[CDF[𝒟, x], {x, 0, 10, .01}], {𝒟, {𝒟1, 𝒟2}}]data = Range[5];
weights = Array[w, 5];𝒟 = EmpiricalDistribution[weights -> data];Moment[𝒟, r]CDF[𝒟, 4]data1 = RandomVariate[BinormalDistribution[.5], 5];
data2 = RandomVariate[BinormalDistribution[.5], 100];𝒟1 = EmpiricalDistribution[data1];
𝒟2 = EmpiricalDistribution[data2];Table[Plot3D[CDF[𝒟, {x, y}], {x, -5, 5}, {y, -5, 5}, Exclusions -> None, ColorFunction -> "AlpineColors"], {𝒟, {𝒟1, 𝒟2}}]data = RandomVariate[BinormalDistribution[.5], 5];
weights = Range[5];𝒟1 = EmpiricalDistribution[data];
𝒟2 = EmpiricalDistribution[weights -> data];Table[Plot3D[CDF[𝒟, {x, y}], {x, -5, 5}, {y, -5, 5}, Exclusions -> None, ColorFunction -> "SandyTerrain"], {𝒟, {𝒟1, 𝒟2}}]data = RandomVariate[NormalDistribution[], {25, 3}];𝒟 = EmpiricalDistribution[data];Table[DiscretePlot[Evaluate[CDF[MarginalDistribution[𝒟, i], x]], {x, -4, 4, .01}, PlotLabel -> i], {i, 3}]Table[Plot3D[Evaluate[CDF[MarginalDistribution[𝒟, i], {x, y}]], {x, -4, 4}, {y, -4, 4}, Exclusions -> None, ColorFunction -> "DarkRainbow", PlotLabel -> i], {i, Subsets[Range[3], {2}]}]EmpiricalDistributionは,入力がTimeSeriesのときにのみ値に使うことができる:
ts = TemporalData[TimeSeries, {{{0.28997620491523546, 0.21469930011788044, 0.46098352552570165,
0.24470387685580416, 0.14486640814874496, 0.5709045541820718, 0.3328911094711541,
0.32651519192444917, 0.25437382941700937, 0.46257184080167396, 0. ... 3011563444, 111.83615205759298,
112.05218999953303, 112.0628205040245, 112.14947462367655, 112.61704830425128}}}, 1,
{"Continuous", 1}, {"Discrete", 1}, 1,
{ResamplingMethod -> {"Interpolation", InterpolationOrder -> 1}}}, False, 10.1];res1 = EmpiricalDistribution[ts]res2 = EmpiricalDistribution[ts["Values"]]res1 == res2EmpiricalDistributionは,入力がTemporalDataのときはすべての値に同時に働く:
td = TemporalData[«4»];res1 = EmpiricalDistribution[td]res2 = EmpiricalDistribution[td["ValueList"]//Flatten]res1 == res2分布特性 (9)
𝒟 = EmpiricalDistribution[data = RandomVariate[NormalDistribution[], 25]];HazardFunctionと PDFは離散的である:
Table[DiscretePlot[f[𝒟, x], {x, data}, PlotLabel -> f], {f, {PDF, HazardFunction}}]SurvivalFunctionとCDFは区分定数である:
Table[DiscretePlot[f[𝒟, x], {x, -4, 4, .01}, PlotLabel -> f], {f, {CDF, SurvivalFunction}}]𝒟 = EmpiricalDistribution[RandomVariate[NormalDistribution[], 25]];{Mean[𝒟], Variance[𝒟], Skewness[𝒟], Kurtosis[𝒟]}Table[Moment[𝒟, k], {k, 4}]Table[CentralMoment[𝒟, k], {k, 4}]Table[Cumulant[𝒟, k], {k, 4}]Table[FactorialMoment[𝒟, k], {k, 4}]𝒟 = EmpiricalDistribution[RandomVariate[CauchyDistribution[0, 1], 100]];Plot[Quantile[𝒟, x]//Evaluate, {x, 0, 1}, Exclusions -> None, Filling -> Axis]Quartiles[𝒟]InterquartileRange[𝒟]Quantile[𝒟, {0.05, 0.95}]Median[𝒟]𝒟 = EmpiricalDistribution[RandomReal[ChiSquareDistribution[2], 10 ^ 3]];そのヒストグラムともとになっている密度の確率密度関数を比較する:
Show[Histogram[RandomVariate[𝒟, 10 ^ 4], Automatic, "ProbabilityDensity"], Plot[PDF[ChiSquareDistribution[2], x], {x, 0, 10}, PlotStyle -> Thick]]𝒟 = EmpiricalDistribution[RandomVariate[NormalDistribution[], 100]];Probability[x > 2, x𝒟]Expectation[x^2 - 3x + 2, x𝒟]𝒟 = EmpiricalDistribution[RandomVariate[NormalDistribution[], 10]];MomentGeneratingFunction[𝒟, t]CharacteristicFunction[𝒟, t]𝒟 = EmpiricalDistribution[dat = RandomVariate[BinormalDistribution[.5], 10]];CDFとSurvivalFunctionは区分定数である:
Table[Plot3D[f[𝒟, {x, y}]//Evaluate, {x, -4, 4}, {y, -4, 4}, Exclusions -> None, PlotLabel -> f, ColorFunction -> "DarkRainbow"], {f, {CDF, SurvivalFunction}}]𝒟 = EmpiricalDistribution[d = RandomVariate[BinormalDistribution[.2], 100]];{Mean[𝒟], Variance[𝒟]}Covariance[𝒟]//MatrixFormCorrelation[𝒟]//MatrixFormMoment[𝒟, {1, 2}]CentralMoment[𝒟, {1, 2}]Cumulant[𝒟, {1, 2}]FactorialMoment[𝒟, {1, 2}]𝒟 = EmpiricalDistribution[RandomVariate[BinormalDistribution[.5], 1000]];ListPlot[RandomVariate[𝒟, 100]]アプリケーション (8)
data = RandomVariate[ParetoDistribution[1, 2], 25];𝒟 = EmpiricalDistribution[data];Plot[{CDF[𝒟, x], CDF[ParetoDistribution[1, 2], x]}, {x, 0, 10}]data = RandomVariate[𝒹 = MultinormalDistribution[{0, 0}, IdentityMatrix[2]], 100];𝒟 = EmpiricalDistribution[data];Plot3D[CDF[#, {x, y}], {x, -3, 3}, {y, -3, 3}, Exclusions -> None, Mesh -> None]& /@ {𝒟, 𝒹}Plot3D[CDF[𝒟, {x, y}] - CDF[𝒹, {x, y}], {x, -3, 3}, {y, -3, 3}, Exclusions -> None, ColorFunction -> "DarkRainbow", PlotRange -> {Full, Full, {-0.1, 0.1}}]SmoothKernelDistributionを使って滑らかに表示する:
data = RandomVariate[MixtureDistribution[{2 / 3, 1 / 3}, {NormalDistribution[-1, 1], NormalDistribution[0, 1]}], 15];Subscript[𝒟, e] = {"Empirical", EmpiricalDistribution[data]};
Subscript[𝒟, s] = {"Smoothed", SmoothKernelDistribution[data]};Table[DiscretePlot[CDF[𝒟[[2]], x], {x, -4, 4, .01}, PlotLabel -> 𝒟[[1]]], {𝒟, {Subscript[𝒟, e], Subscript[𝒟, s]}}]HistogramDistributionをデータに設定されたビンデリミタと一緒に使ってEmpiricalDistributionの線形補間を行う:
data = RandomVariate[MixtureDistribution[{2 / 3, 1 / 3}, {NormalDistribution[-1, 1], NormalDistribution[0, 1]}], 10];Subscript[𝒟, e] = {"Empirical", EmpiricalDistribution[data]};
Subscript[𝒟, h] = {"Histogram", HistogramDistribution[data, {Union@data}]};Table[DiscretePlot[CDF[𝒟[[2]], x], {x, -4, 4, .01}, PlotLabel -> 𝒟[[1]]], {𝒟, {Subscript[𝒟, e], Subscript[𝒟, h]}}]1861年にQuintus Curtius Snodgrassの名で出版された10通の手紙はMark Twainによるものだと言われている.これらの手紙とMark Twainの作品の単語長の分布を比較する:
ExampleData[{"Statistics", "MarkTwainAuthorship"}, "ColumnDescriptions"]mTwain = ExampleData[{"Statistics", "MarkTwainAuthorship"}][[All, {1, 2}]];
QCS = ExampleData[{"Statistics", "MarkTwainAuthorship"}][[All, {1, 3}]];Twain = EmpiricalDistribution[mTwain[[All, 2]] -> mTwain[[All, 1]]];
Subscript[𝒟, QCS] = EmpiricalDistribution[QCS[[All, 2]] -> QCS[[All, 1]]];
Subscript[𝒟, Eng] = EmpiricalDistribution[StringLength /@ WordData[All]];Table[Plot[{CDF[Twain, x], CDF[𝒟, x]}, {x, 0, 30}, PlotRange -> All, Exclusions -> None], {𝒟, {Subscript[𝒟, QCS], Subscript[𝒟, Eng]}}]しかし,このフィットの適合度検定はQCSの手紙を書いたのがTwainではないことを示している:
twain = Flatten[Table[ConstantArray[i[[1]], i[[2]]], {i, mTwain}]];
qcs = Flatten[Table[ConstantArray[i[[1]], i[[2]]], {i, QCS}]];DistributionFitTest[twain, qcs, "TestDataTable"]スコットランドの山岳徒競走の高地の道と低地の道を選んだ者の優勝記録を比較する:
ExampleData[{"Statistics", "ScottishHillRaces"}, "ColumnDescriptions"]data = QuantityArray[ExampleData[{"Statistics", "ScottishHillRaces"}][[All, {3, 4}]], {"Feet", "Minutes"}];ListPlot[data, AxesLabel -> Automatic]medEG = Median[data[[All, 1]]]nd = Normal[data];
Subscript[𝒟, HighRoad] = EmpiricalDistribution[Cases[nd, {eg_ /; eg > medEG, t_} :> t]];
Subscript[𝒟, LowRoad] = EmpiricalDistribution[Cases[nd, {eg_ /; eg <= medEG, t_} :> t]];Plot[{CDF[Subscript[𝒟, HighRoad], Quantity[x, "Minutes"]], CDF[Subscript[𝒟, LowRoad], Quantity[x, "Minutes"]]}, {x, 0, 250}, Exclusions -> None, Filling -> Axis, PlotRange -> {0, 1}, AxesLabel -> {"min"}, PlotLegends -> {"SubscriptBox[𝒟, HighRoad]", "SubscriptBox[𝒟, LowRoad]"}]{Median[Subscript[𝒟, HighRoad]], Median[Subscript[𝒟, LowRoad]]}高地レースの記録時間は低地レースの記録時間よりも変化が大きい:
{QuartileDeviation[Subscript[𝒟, HighRoad]], QuartileDeviation[Subscript[𝒟, LowRoad]]}国立衛生研究所では人口の2%が何等かの疾病を抱えていると推測している.偽陽性率5%で95%疾病が検出できる検査が提唱された.陽性反応が出た人が実際に疾病に罹患している確率を求める:
sick = {1, 1, 0, 0};
positive = {1, 0, 1, 0};𝒟 = EmpiricalDistribution[{p1, p2, p3, p4} -> Transpose[{sick, positive}]]eqs = {Probability[s == 1, {s, p}𝒟] == (2/100), Probability[p == 1s == 1, {s, p}𝒟] == (95/100), Probability[p == 1s == 0, {s, p}𝒟] == (5/100)}sol = Solve[eqs~Join~{p1 + p2 + p3 + p4 == 1}, {p1, p2, p3, p4}]//NProbability[s == 1p == 1, {s, p}𝒟] /. sol[[1]]21人の学生が新たなリーディングプログラムに参加するように無作為に選ばれた.対照群の23人の学生は従来の方法で教育されている.プログラム後に2つのグループの学生のリーディングのスコアが記録された.スコアに対して置換に基づいた検定を行い新たなリーディングプログラムが成功だったかどうかを見る:
treatment = {24, 61, 59, 46, 43, 53, 43, 44, 52, 43, 57, 49, 58, 67, 62, 57, 56, 33, 71, 49, 54};
control = {42, 33, 46, 37, 62, 20, 43, 41, 10, 42, 53, 48, 55, 19, 17, 55, 37, 85, 26, 54, 60, 28, 42};グループ間のテストスコアの平均差は検定統計として用いることができる:
testStatistic = Mean[treatment] - Mean[control]//Nグループをランダムに置換して検定統計の帰無分布のシミュレーションを行う:
permute[treat_, cont_, nPerm_] := Table[With[{sample = RandomSample[Join[treat, cont]]}, Mean[Take[sample, Length[treat]] - Mean[Drop[sample, Length[treat]]]]], {nPerm}]𝒟0 = permute[treatment, control, 25000];Histogram[𝒟0, Automatic, "PDF"]5%レベルで新たなプログラムで違いが生まれたことが明らかである:
empP[tstat_, 𝒟0_] := N@Probability[x ≥ tstat, xEmpiricalDistribution[𝒟0]]empP[testStatistic, 𝒟0]LocationTestを使って仮説を直接調べることができる:
LocationTest[{treatment, control}, AlternativeHypothesis -> "Greater"]特性と関係 (8)
経験分布に従って生成された乱数はブートストラップサンプルを返す:
dist = EmpiricalDistribution[Range[10]];ListPlot[RandomVariate[dist, 1000]]EmpiricalDistributionはもとになっている分布の一定した推定器である:
data = Table[RandomReal[d = NormalDistribution[], i], {i, {5, 10, 50, 100, 500, 1000}}];dists = EmpiricalDistribution /@ data;Table[Plot[{CDF[i, x], CDF[d, x]}, {x, -4, 4}, PlotLabel -> Row[{i[[4]], " points"}], Exclusions -> None], {i, dists}]data = RandomVariate[NormalDistribution[], 10];𝒟 = EmpiricalDistribution[data];Mean[𝒟] == Mean[data]Moment[𝒟, r] == Moment[data, r]//SimplifyVariance[𝒟] == Variance[data]CentralMoment[𝒟, 2] == Variance[𝒟]分位数はQuantileを直接データに適用したものに等しい:
𝒟 = EmpiricalDistribution[data = RandomVariate[NormalDistribution[], 7]];rng = Range[0, 1, 1 / 99];Total[Quantile[𝒟, rng] / Quantile[data, rng]] / 100EmpiricalDistributionは打切りのないSurvivalDistributionに等しい:
data = Range[100];d1 = EmpiricalDistribution[data];d2 = SurvivalDistribution[data];Total[Table[PDF[d1, x] - PDF[d2, x], {x, DistributionDomain[d1]}]]データ値の和集合をHistogramDistributionのビンデリミタとして使う:
data = {1, 1, 2, 2, 3, 4, 4, 4, 5, 6, 7};𝒟1 = HistogramDistribution[data, {Join[Union[data], {Max[data] + 1}]}];
𝒟2 = EmpiricalDistribution[data];結果の確率密度関数はEmpiricalDistributionの確率密度関数の零次補間である:
Show[DiscretePlot[PDF[𝒟2, x], {x, data}, PlotStyle -> Green], Plot[PDF[𝒟1, x], {x, 0, 9}, Exclusions -> None]]Nを厳密データに適用するとメモリ消費量が抑えられる:
data = RandomChoice[{π, E, Sin[5], Sqrt[2], 1}, 10 ^ 4];c = RandomChoice[Range[500], 10 ^ 4];𝒟 = EmpiricalDistribution[c data];
Subscript[𝒟, Num] = EmpiricalDistribution[N[c data]];{ByteCount[𝒟], ByteCount[Subscript[𝒟, Num]]}Table[Plot[CDF[i, x], {x, 0, 10}, Exclusions -> None], {i, {𝒟, Subscript[𝒟, Num]}}]整数についてのEmpiricalDistributionはProbabilityDistributionを使って指定することができる:
edist = EmpiricalDistribution[{1 / 6, 1 / 3, 1 / 3, 1 / 6} -> {1, 2, 3, 4}]pdist = ProbabilityDistribution[(1/6)Boole[x == 1 || x == 4] + (1/3)Boole[x == 2 || x == 3], {x, 1, 4, 1}]PDF[edist, x] == PDF[pdist, x]//Simplify関連するガイド
-
▪
- 確率・統計における数量 ▪
- ノンパラメトリック統計分布 ▪
- 統計的データ解析 ▪
- 確率変数 ▪
- 生存率分析
テキスト
Wolfram Research (2010), EmpiricalDistribution, Wolfram言語関数, https://reference.wolfram.com/language/ref/EmpiricalDistribution.html (2016年に更新).
CMS
Wolfram Language. 2010. "EmpiricalDistribution." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2016. https://reference.wolfram.com/language/ref/EmpiricalDistribution.html.
APA
Wolfram Language. (2010). EmpiricalDistribution. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/EmpiricalDistribution.html
BibTeX
@misc{reference.wolfram_2026_empiricaldistribution, author="Wolfram Research", title="{EmpiricalDistribution}", year="2016", howpublished="\url{https://reference.wolfram.com/language/ref/EmpiricalDistribution.html}", note=[Accessed: 14-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_empiricaldistribution, organization={Wolfram Research}, title={EmpiricalDistribution}, year={2016}, url={https://reference.wolfram.com/language/ref/EmpiricalDistribution.html}, note=[Accessed: 14-September-2026]}