FindDistribution[data]
找出一个简单的函数形式以拟合 data 的分布.
FindDistribution[data,n]
找出最多 n 个最佳分布.
FindDistribution[data,n,prop]
返回最多 n 个与属性 prop 关联的最佳分布.
FindDistribution[data,n,{prop1,prop2,…}]
返回最多 n 个与属性 prop1、prop2 等关联的最佳分布.
FindDistribution
FindDistribution[data]
找出一个简单的函数形式以拟合 data 的分布.
FindDistribution[data,n]
找出最多 n 个最佳分布.
FindDistribution[data,n,prop]
返回最多 n 个与属性 prop 关联的最佳分布.
FindDistribution[data,n,{prop1,prop2,…}]
返回最多 n 个与属性 prop1、prop2 等关联的最佳分布.
更多信息和选项
- 数据必须是单变量分布可能结果的列表.
- FindDistribution[data,n,All] 创建带有所有可能属性的 Dataset 对象.
- 支持的属性包括:
-
"BIC" 贝叶斯信息量准则 "AIC" 赤池信息量准则 "HQIC" 汉南-奎因信息量准则 "Score" 内部分数 "Complexity" 分布的复杂度 "LogLikelihood" LogLikelihood 值 "PearsonChiSquare" PearsonChiSquareTest p-值 "CramerVonMises" CramerVonMisesTest p-值 All 所有前述属性 - 可以设置下列选项:
-
MaxItems Infinity 混合分布中分布的最大数目 PerformanceGoal Automatic 优化目标 RandomSeeding Automatic 应该在内部对伪随机数生成器进行什么样的初始化 TargetFunctions Automatic 要考虑的分布类型 - PerformanceGoal 可能的设置包括:
-
"Speed" 使寻找分布所用的时间最小化 "Quality" 试图找出更好的分布 - TargetFunctions 可能的设置包括:
-
Automatic 自动选择分布 All 全部内置分布 "Continuous" 全部连续分布 "Discrete" 全部离散分布 {dist1,
,
}分布 disti {
{dist1,
,
}}权重为 wi 的分布 disti - RandomSeeding 的可能设置包括:
-
Automatic 每次函数调用时自动重新播种 Inherited 使用外部播种的随机数字 seed 用明确给定的整数或字符串作为种子 - TargetFunctions 可能的连续分布有:BetaDistribution、CauchyDistribution、ChiDistribution、ChiSquareDistribution、ExponentialDistribution、ExtremeValueDistribution、FrechetDistribution、GammaDistribution、GumbelDistribution、HalfNormalDistribution、InverseGaussianDistribution、LaplaceDistribution、LevyDistribution、LogisticDistribution、LogNormalDistribution、MaxwellDistribution、NormalDistribution、ParetoDistribution、RayleighDistribution、StudentTDistribution、UniformDistribution、WeibullDistribution、HistogramDistribution.
- TargetFunctions 可能的离散分布是:BenfordDistribution、BinomialDistribution、BorelTannerDistribution、DiscreteUniformDistribution、GeometricDistribution、LogSeriesDistribution、NegativeBinomialDistribution、PascalDistribution、PoissonDistribution、WaringYuleDistribution、ZipfDistribution、HistogramDistribution、EmpiricalDistribution.
- 内部的信息量准则使用贝叶斯信息量准则并结合 TargetFunctions 的先验.
范例
打开所有单元 关闭所有单元基本范例 (2)
RandomInteger[10, 100]FindDistribution[%]𝒟 = ExponentialDistribution[1];
data = RandomVariate[𝒟, 1000];estimated𝒟 = FindDistribution[data]Plot[{PDF[𝒟, x], PDF[estimated𝒟, x]}, {x, 0, 10}, PlotLegends -> {"𝒟", "e𝒟"}]FindDistribution[data, 3]FindDistribution[data, 3, {"BIC", "AIC"}]范围 (3)
𝒟 = MixtureDistribution[{1, 1}, {ExponentialDistribution[1], NormalDistribution[5, 0.8]}];data = RandomVariate[𝒟, 1000];e𝒟 = FindDistribution[data]Plot[{PDF[𝒟, x], PDF[e𝒟, x]}, {x, -8, 10}, PlotLegends -> {"𝒟", "e𝒟"}, PlotRange -> All]𝒟 = WeibullDistribution[1, 2];data = RandomVariate[𝒟, 1000];默认情况下,FindDistribution 返回比较简单的分布:
e𝒟 = FindDistribution[data]e𝒟 = FindDistribution[data, TargetFunctions -> {WeibullDistribution}]𝒟 = ExponentialDistribution[1];
data = RandomVariate[𝒟, 1000];生成包含前两种最佳分布全部属性的 Dataset 对象:
report = FindDistribution[data, 2, All]选项 (5)
TargetFunctions (3)
𝒟 = MixtureDistribution[{1, 1}, {ExponentialDistribution[1], NormalDistribution[5, 0.8]}];data = RandomVariate[𝒟, 1000];e𝒟 = FindDistribution[data, TargetFunctions -> {NormalDistribution, GammaDistribution}]Plot[{PDF[𝒟, x], PDF[e𝒟, x]}, {x, -8, 10}, PlotLegends -> {"𝒟", "e𝒟"}, PlotRange -> All]waiting = ExampleData[{"Statistics", "OldFaithful"}][[All, 2]];e𝒟1 = FindDistribution[waiting]e𝒟2 = FindDistribution[waiting, TargetFunctions -> "Continuous"]当作连续数据处理时,用 GammaDistribution 估计数据的分布:
e𝒟3 = FindDistribution[waiting, TargetFunctions -> {GammaDistribution}]legend = SwatchLegend[{Red, ColorData[97, 1], ColorData[97, 2]}, {"e𝒟1", "e𝒟2", "e𝒟3"}];Show[Histogram[waiting, 20, "ProbabilityDensity"],
DiscretePlot[{PDF[e𝒟1, x]}, {x, 0, 100}, PlotStyle -> {PointSize[.02], Red}],
Plot[{PDF[e𝒟2, x], PDF[e𝒟3, x]}, {x, 0, 100}, PlotLegends -> legend]]magnitudes = Select[ExampleData[{"Statistics", "USEarthquakes"}], #[[1]] ≥ 1935&][[All, 7]];h = Histogram[magnitudes, 20, "ProbabilityDensity"]在不用 TargetFunctions 的情况下估计最佳拟合:
Subscript[``e𝒟``, 1] = FindDistribution[magnitudes]Subscript[``e𝒟``, 2 ] = FindDistribution[magnitudes, TargetFunctions -> {{10, 2} -> {CauchyDistribution, GammaDistribution}}]Show[h, Plot[{PDF[Subscript[``e𝒟``, 1], x], PDF[Subscript[``e𝒟``, 2 ], x]}, {x, 0, 10}, PlotStyle -> Thick, PlotRange -> All]]PerformanceGoal (1)
𝒟 = MixtureDistribution[{1, 2}, {ChiDistribution[0.6], GammaDistribution[20, 1]}]data = RandomVariate[𝒟, 10000];估算大数据集的最佳拟合并比较在不同 PerformanceGoal 设置下的 AbsoluteTiming:
AbsoluteTiming[e𝒟1 = FindDistribution[data, PerformanceGoal -> "Speed"]]AbsoluteTiming[e𝒟2 = FindDistribution[data, PerformanceGoal -> "Quality"]]比较解的 LogLikelihood:
LogLikelihood[#, data]& /@ {e𝒟1, e𝒟2}RandomSeeding (1)
𝒟 = MixtureDistribution[{1, 2}, {NormalDistribution[-6, 1], GammaDistribution[20, 1]}]data = RandomVariate[𝒟, 1000];比较 FindDistribution 的几次计算,注意它们的不同之处:
Table[FindDistribution[data], 3]用选项 RandomSeeding 避免不同的结果:
Table[FindDistribution[data, RandomSeeding -> 1], 3]应用 (5)
以特定字母开头的单词的长度 (1)
letters = {"a", "e", "i", "o", "u", "y"};worddata = Table[StringLength /@ DictionaryLookup[l ~~ ___], {l, letters}];e𝒟 = Table[FindDistribution[i, MaxItems -> 1], {i, worddata}]Partition[Table[Show[Histogram[worddata[[i]], {Range[25] - 1 / 2}, "ProbabilityDensity", PlotLabel -> letters[[i]]], DiscretePlot[PDF[e𝒟[[i]], x], {x, 0, 25}, PlotRange -> All, PlotStyle -> PointSize[.025]], ImageSize -> Small], {i, Length[letters]}], 3]//Grid文字频率 (1)
text = ExampleData[{"Text", "DeclarationOfIndependence"}, "Words"];wordCount = Tally[text][[All, 2]];e𝒟 = FindDistribution[wordCount, MaxItems -> 1]Show[Histogram[wordCount, {0.5, 9.5, 1}, "ProbabilityDensity"], DiscretePlot[PDF[e𝒟, x], {x, 1, 10}, PlotStyle -> PointSize[Medium], PlotRange -> All]]丹麦的黑色素瘤 (1)
melanomaAge = ExampleData[{"Statistics", "DenmarkMelanoma"}][[All, 4]];e𝒟 = FindDistribution[melanomaAge]Show[Histogram[melanomaAge, {4, 95, 4}, "ProbabilityDensity"], Plot[PDF[e𝒟, x], {x, 4, 95}, PlotStyle -> Thick, PlotRange -> All]]艾滋病的感染时间 (1)
aids = ExampleData[{"Statistics", "TimeToAIDS"}][[All, 1]];e𝒟 = FindDistribution[aids]Show[Histogram[aids, {0, 8, 0.65}, "ProbabilityDensity"], Plot[PDF[e𝒟, x], {x, 0, 8}, PlotStyle -> Thick, PlotRange -> All]]更换导尿管后肾脏感染的时间 (1)
KidneyInfection = ExampleData[{"Statistics", "KidneyInfection"}][[All, 1]];e𝒟 = FindDistribution[KidneyInfection]Show[Histogram[KidneyInfection, {0, 28, 2}, "ProbabilityDensity"], Plot[PDF[e𝒟, x], {x, 0, 28}, PlotStyle -> Thick, PlotRange -> All]]属性和关系 (1)
默认情况下,FindDistributionParameters 使用最大似然估计固定分布的分布参数. FindDistribution 则使用完整的贝叶斯方法,通过将贝叶斯信息准则与分布的先验相结合,以选择最佳分布和最佳参数.
从 StudentTDistribution 中抽样生成数据:
SeedRandom[5]
data = RandomVariate[StudentTDistribution[1, 1, 4], 800];
Histogram[data, {-10, 10, Automatic}, "ProbabilityDensity"]用 FindDistribution 估计拟合数据的最佳分布:
dist1 = FindDistribution[data, RandomSeeding -> 1]用 FindDistributionParameters 估计最佳参数,假定为 StudentTDistribution:
distribution = StudentTDistribution[α, β, ν];
estimatedParameters = FindDistributionParameters[data, distribution];
dist2 = distribution /. estimatedParameters尽管 StudentTDistribution 将对数似然性最小化,但与之相比,LogisticDistribution 具有更大的先验概率和较小的复杂性.
比较各自的 LogLikelihood:
LogLikelihood[#, data]& /@ {dist1, dist2}如果想要找到与 FindDistributionParameters 大致相近的参数,可以使用选项 TargetFunctions:
dist3 = FindDistribution[data, TargetFunctions -> {StudentTDistribution}]文本
Wolfram Research (2015),FindDistribution,Wolfram 语言函数,https://reference.wolfram.com/language/ref/FindDistribution.html (更新于 2017 年).
CMS
Wolfram 语言. 2015. "FindDistribution." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2017. https://reference.wolfram.com/language/ref/FindDistribution.html.
APA
Wolfram 语言. (2015). FindDistribution. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/FindDistribution.html 年
BibTeX
@misc{reference.wolfram_2026_finddistribution, author="Wolfram Research", title="{FindDistribution}", year="2017", howpublished="\url{https://reference.wolfram.com/language/ref/FindDistribution.html}", note=[Accessed: 01-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_finddistribution, organization={Wolfram Research}, title={FindDistribution}, year={2017}, url={https://reference.wolfram.com/language/ref/FindDistribution.html}, note=[Accessed: 01-November-2026]}