Cumulant
更多信息
- 形式上,第 r 个累积量
被定义为 CumulantGeneratingFunction 的泰勒级数
的系数. - 用矩(moment)表示的前几个累积量:
-






- 一般而言,MomentConvert[Cumulant[r],"Moment"] 用矩给出
. - Cumulant[data,r] 有效地使用 MomentConvert 根据数据的其他矩来计算.
- 对于 x∈Arrays[{n1,n2,… ,nk}],Cumulant[x,r] 等价于 ArrayReduce[Cumulant[#,r]&,data,1]. »
- 对于 x∈Arrays[{n1,n2,… ,nk}],Cumulant[x,{r1,…,rm}] 等价于 ArrayReduce[Cumulant[#,{r1,…,rm}]&,x,{{1},{2}}]. »
- Cumulant 可处理数值型或符号式数据.
- data 还可以有以下形式和解释:
-
Association 值(键值被忽略) » WeightedData 加权平均值,基于底层的 EmpiricalDistribution » EventData 基于底层的 SurvivalDistribution » TimeSeries, TemporalData, … 值的向量或数组(时间戳忽略不计) » Image,Image3D RGB 通道值或灰度强度值 » Audio 所有通道的振幅值 » DateObject, TimeObject 日期或时间列表 » - 对于有 G=CumulantGeneratingFunction[
,…] 的分布 dist: -
Cumulant[
,r]
»Cumulant[dist,{r1,…,rm}]
» - 对于随机过程 proc,可以计算出时间 t 的切片分布的累积函数 SliceDistribution[proc,t],因为
[t]=Cumulant[SliceDistribution[proc,t],r]. » - Cumulant[r] 可用于诸如 MomentConvert、MomentEvaluate 等函数. »
范例
打开所有单元 关闭所有单元基本范例 (3)
data = RandomVariate[LogisticDistribution[0, 1], 10 ^ 5];Cumulant[data, 2]Cumulant[{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]}, 2]Cumulant[{Yesterday, Today, Tomorrow}, 4]Cumulant[GammaDistribution[α, β], 2]Cumulant[DirichletDistribution[{α, β, γ}], {1, 2}]范围 (26)
基础用法 (6)
Cumulant[{1, 2, 3, 4}, 2]Cumulant[{π, E, 2}, 1]Cumulant[{1., 2., 3., 4.}, 2]Cumulant[N[{1, 2, 3, 4}, 30], 2]求 WeightedData 的累积量:
Cumulant[WeightedData[{1, 2, 3}, {Subscript[w, 1], Subscript[w, 2], Subscript[w, 3]}], 1]data = {8, 3, 5, 4, 9, 0, 4, 2, 2, 3};
weights = {0.15, 0.09, 0.12, 0.10, 0.16, 0., 0.11, 0.08, 0.08, 0.09};Cumulant[WeightedData[data, weights], 2]求 EventData 的累积量:
e = {1.0, 2.1, 3.2, 4.5, 5.7};
ci = {0, 0, 0, 1, 0};Cumulant[EventData[e, ci], 1]求 TimeSeries 的累积量:
Cumulant[TemporalData[TimeSeries, {{{2.3, 1.2, 6.7, 5.8, 7.1, 4.6}}, {{0, 5, 1}}, 1, {"Discrete", 1},
{"Discrete", 1}, 1, {}}, False, 10.], 2]Cumulant[TemporalData[TimeSeries, {{{2.3, 1.2, 6.7, 5.8, 7.1, 4.6}}, {{0, 5, 1}}, 1, {"Discrete", 1},
{"Discrete", 1}, 1, {}}, False, 10.]["Values"], 2]data = Quantity[RandomReal[1, 6], "Meters"]Cumulant[data, 2]数组数据 (5)
对于矩阵而言,Cumulant 给出列向累计量:
Cumulant[(| | |
| ----- | ----- |
| a1, 1 | a1, 2 |
| a2, 1 | a2, 2 |), 4]//Simplify对于数组而言,Cumulant 给出第一层的列向累积量:
Cumulant[Array[Subscript[a, ##]&, {2, 2, 2}], 4]//Simplify//MatrixFormCumulant[Array[Subscript[a, ##]&, {2, 2, 2}], {4, 4}]//SimplifyCumulant[RandomReal[1, 10 ^ 7], 2]Cumulant[RandomReal[1, {10 ^ 6, 5}], 2]当输入为 Association 时,Cumulant 作用于其值:
mat = RandomReal[1, {3, 2}];
assoc = AssociationThread[Range[3], mat]Cumulant[assoc, 3]SparseArray 数据可以像稠密数组一样使用:
Cumulant[SparseArray[{{1} -> 1, {100} -> 1}], 4]Cumulant[SparseArray[{{1, 1} -> 1, {2, 2} -> 2, {3, 3} -> 3, {1, 3} -> 4}], 2](f = MomentConvert[Cumulant[{3, 3}], Moment])//Simplify//TraditionalForm//Shortarr = RandomReal[1, {2, 2, 2}, WorkingPrecision -> 50];c1 = Cumulant[arr, {3, 3}]c2 = (f /. Moment[l_] :> Moment[arr, l])c1 == c2图像和音频数据 (2)
Cumulant[[image], 5]RGBColor[%]Cumulant[[image], 4]对于音频对象,Cumulant 按通道工作:
a = ExampleData[{"Audio", "Bee"}]AudioMeasurements[a, "Channels"]Cumulant[a, 3]日期和时间 (4)
dates = WolframLanguageData[All, "DateIntroduced"];DateHistogram[dates]Cumulant[dates, 4]UnitConvert[%, "Decades" ^ 4]dates = RandomDate[4]weights = {1, 1, 1, 3};Cumulant[WeightedData[dates, weights], 3]UnitConvert[%, "Months" ^ 3]Cumulant[dates, 3]UnitConvert[%, "Months" ^ 3]dates = {DateObject[{2024, 2, 29}, CalendarType -> "Julian"], DateObject[{1524, 1, 1}, CalendarType -> "Islamic"], DateObject[{6024, 1, 15}, CalendarType -> "Jewish"]}Cumulant[dates, 3]UnitConvert[%, "Centuries" ^ 3]RandomTime[3]Cumulant[%, 4]{TimeObject[{12}, TimeZone -> 0], TimeObject[{12}, TimeZone -> 2], TimeObject[{12}, TimeZone -> "Asia/Tokyo"]}Cumulant[%, 3]分布与过程累积量 (5)
Cumulant[BinomialDistribution[n, p], 1]Cumulant[NormalDistribution[μ, σ], 2]Cumulant[BinormalDistribution[{Subscript[μ, 1], Subscript[μ, 2]}, {σ1, σ2}, ρ], 2]Cumulant[DirichletDistribution[{a, b, c}], 2]//SimplifyCumulant[MultivariateHypergeometricDistribution[n, {Subscript[m, 1], Subscript[m, 2]}], {1, 1}]Cumulant[BinormalDistribution[{Subscript[μ, 1], Subscript[μ, 2]}, {σ1, σ2}, ρ], {1, 1}]Cumulant[PoissonDistribution[μ], r]Cumulant[BetaDistribution[α, β], r]% /. r -> 2Cumulant[VonMisesDistribution[Pi / 2, 2], 4]N[%]Cumulant[TransformedDistribution[x^2, xNormalDistribution[μ, σ]], 2]Cumulant[ProbabilityDistribution[(Exp[1 - x] x (1 - x)/3 - E), {x, 0, 1}], 3]data = RandomVariate[NormalDistribution[], 10 ^ 3];Cumulant[HistogramDistribution[data], 1]Cumulant[QueueingProcess[λ, μ, ∞][t], 2]Plot[Evaluate[% /. {λ -> 1, μ -> 3}], {t, 0, 1}, PlotRange -> All]求 TemporalData 在时刻 t=0.5 的累积量:
td = RandomFunction[WienerProcess[1, 1], {0, 10, 0.05}, 100]Cumulant[td[0.5], 1]Show[ListLinePlot[td, PlotStyle -> Directive[Opacity[0.7], Thin]], Plot[Cumulant[td[t], 1], {t, 0, 10}, PlotStyle -> Thick]]正式累积量 (4)
正式累积量的 TraditionalForm 格式:
Cumulant[r]//TraditionalFormCumulant[{p, q, r}]//TraditionalForm将正式矩的组合转换为含 Cumulant 的表达式:
MomentConvert[Moment[4], Cumulant]//TraditionalFormMomentConvert[CentralMoment[2]Moment[2], Cumulant]//TraditionalFormMomentEvaluate[Cumulant[1] + Cumulant[2], BetaDistribution[α, β]]data = RandomVariate[BetaDistribution[2, 3], 10^4];MomentEvaluate[Cumulant[1] + Cumulant[2], data]求包含 Cumulant 的一个表达式的样本估计量:
estimator = MomentConvert[Cumulant[1], "UnbiasedSampleEstimator"]data = RandomVariate[PoissonDistribution[1], 10^4];MomentEvaluate[estimator, data]应用 (5)
data = RandomVariate[BetaDistribution[3, 6], 10 ^ 4];NSolve[Table[Cumulant[data, k] == Cumulant[BetaDistribution[a, b], k], {k, 1, 2}], {a, b}]根据大数定理,随着样本量的增加,样本矩逐渐趋向于总体矩. 使用 Histogram 说明不同样本量时,标准正态随机变量的样本累积量
的概率分布:
Histogram[Table[Cumulant[RandomReal[NormalDistribution[], {n, 10 ^ 3}], 3], {n, {10, 10^2, 10^4}}], 50, "ProbabilityDensity", ChartLegends -> {10, 10^2, 10^4}]EdgeworthSeries[p_ /; p ≥ 2, y_] := With[{z = (y - Cumulant[1]), σ = Sqrt[Cumulant[2]]}, PDF[NormalDistribution[0, σ], z](1 + Sum[(σ^s/2^(s/2) + rs!)HermiteH[s + 2r, (z/Sqrt[2]σ)]BellY[s, r, Table[(Cumulant[k]/(k - 1)k σ^2k - 2), {k, 3, p}]], {s, p - 2}, {r, s}])]趋向于 SechDistribution:
dist = SechDistribution[1, 2];pdf = MomentEvaluate[EdgeworthSeries[4, y], dist]Plot[{pdf, PDF[dist, y]}, {y, -5, 5}, PlotRange -> All]data = TemporalData[TimeSeries, {{{0., 0.06114665305643561, 0.23896662440972682, 0.30268800326923,
0.35534116766660545, 0.42472631677502126, 0.3966448861155263, 0.41578142003045876,
0.3468861633239847, 0.3381046650827597, 0.38002782955469216, 0. ... 208767424126402, 2.118103218029293, 2.18195782653722,
2.087973123089836}}, {{0, 1., 0.01}}, 1, {"Continuous", 1}, {"Continuous", 1}, 1,
{ValueDimensions -> 1, ResamplingMethod -> {"Interpolation", InterpolationOrder -> 1}}}, False,
10.1];mc = MovingMap[Cumulant[#, 2]&, data, .1];ListLinePlot[mc, PlotRange -> All]data = RandomFunction[WienerProcess[], {0, 1, .01}, 10 ^ 3];times = Range[0, 1, .1];cm = Map[{#, Cumulant[data[#], 2]}&, times];Show[ListPlot[data], ListLinePlot[cm, PlotStyle -> Green]]属性和关系 (5)
MomentConvert[Cumulant[1], Moment]MomentConvert[Cumulant[2], CentralMoment]MomentConvert[Cumulant[3], CentralMoment]cgf = CumulantGeneratingFunction[ExponentialDistribution[λ], t]SeriesCoefficient[cgf r!, {t, 0, r}]直接使用 Cumulant:
Cumulant[ExponentialDistribution[λ], r]利用 GeneratingFunction 求累积量母函数:
Cumulant[PoissonDistribution[μ], r]cgf = GeneratingFunction[% / r!, r, t]利用 CumulantGeneratingFunction 进行检验:
CumulantGeneratingFunction[PoissonDistribution[μ], t]形式上,可利用 CumulantGeneratingFunction[dist,t] 由 Log[MomentGeneratingFunction[dist,t]] 给出的事实来计算累积量:
Clear[mgf];
Series[Log@mgf[x], {x, 0, 3}]
coeff = SeriesCoefficient[%, 3]3!rep = {mgf[0] -> 1, Derivative[n_][mgf][0] :> Moment[n]};(coeff /. rep) == MomentConvert[Cumulant[3], Moment]对数据的 Cumulant 的样本估计值是有偏的:
(se = MomentConvert[Cumulant[4], "SampleEstimator"])//TraditionalFormsee = MomentConvert[se, {Cumulant, n}]使用 PowerSymmetricPolynomial 构建一个无偏样本估计量:
(ue = MomentConvert[Cumulant[4], "UnbiasedSampleEstimator", PowerSymmetricPolynomial])//TraditionalFormExpand[MomentEvaluate[ue, {Subscript[x, 1], Subscript[x, 2], Subscript[x, 3], Subscript[x, 4], Subscript[x, 5]}]] /. Subscript[x, i_]^r_. :> Moment[r]MomentConvert[%, Cumulant]MomentConvert[Expand[Cumulant[{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3], Subscript[x, 4], Subscript[x, 5]}, 4]] /. Subscript[x, i_]^r_. :> Moment[r], Cumulant]see /. n -> 5可能存在的问题 (1)
巧妙范例 (2)
MomentConvert[Cumulant[1]Cumulant[2]Cumulant[3], {"UnbiasedEstimator", n}, "PowerSymmetricPolynomial"]//FullSimplify//TraditionalFormMomentConvert[%, {Cumulant, n}]对 20、100和 300 个样本 Cumulant 的分布估计:
Cumulant[ExponentialDistribution[0.9], 2]SmoothHistogram[Table[Cumulant[RandomVariate[ExponentialDistribution[0.9], {s, 1000}], 2], {s, {20, 100, 300}}], Filling -> Axis, PlotLegends -> {20, 100, 300}, PlotRange -> {{0, 4}, Automatic}]相关指南
-
▪
- 统计矩与母函数 ▪
- 日期和时间 ▪
- 随机变量 ▪
- 描述性统计分析 ▪
- 符号向量、矩阵和数组
相关的工作流程
- 分析可计算的数据集
文本
Wolfram Research (2010),Cumulant,Wolfram 语言函数,https://reference.wolfram.com/language/ref/Cumulant.html (更新于 2024 年).
CMS
Wolfram 语言. 2010. "Cumulant." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2024. https://reference.wolfram.com/language/ref/Cumulant.html.
APA
Wolfram 语言. (2010). Cumulant. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/Cumulant.html 年
BibTeX
@misc{reference.wolfram_2026_cumulant, author="Wolfram Research", title="{Cumulant}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/Cumulant.html}", note=[Accessed: 10-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_cumulant, organization={Wolfram Research}, title={Cumulant}, year={2024}, url={https://reference.wolfram.com/language/ref/Cumulant.html}, note=[Accessed: 10-September-2026]}