({{, (RefLink[CumulantGeneratingFunction, paclet:ref/CumulantGeneratingFunction])[dist,t] 
gives the cumulant-generating function for the distribution dist as a function of the variable t. }, {, (RefLink[CumulantGeneratingFunction, paclet:ref/CumulantGeneratingFunction])[dist,{(Subscript[t, 1]),(Subscript[t, 2]),…}] 
gives the cumulant-generating function for the multivariate distribution dist as a function of the variables (Subscript[t, 1]), (Subscript[t, 2]), … . }})

OpenersNotesSection(Spacer1)Details

(RefLink[CumulantGeneratingFunction, paclet:ref/CumulantGeneratingFunction])[dist,t] is given by (RefLink[Log, paclet:ref/Log])[(RefLink[MomentGeneratingFunction, paclet:ref/MomentGeneratingFunction])[dist,t]].

(RefLink[CumulantGeneratingFunction, paclet:ref/CumulantGeneratingFunction])[dist, {(Subscript[t, 1]),(Subscript[t, 2]),…}] is given by (RefLink[Log, paclet:ref/Log])[(RefLink[MomentGeneratingFunction, paclet:ref/MomentGeneratingFunction])[dist,{(Subscript[t, 1]),(Subscript[t, 2]),…}]].

The i(^th) cumulant can be extracted from a cumulant-generating function cgf through (RefLink[SeriesCoefficient, paclet:ref/SeriesCoefficient])[cgf,{t,0,i}]i!.

OpenersPrimaryExamplesSection(Spacer1)Examples  (18)

OpenersExampleSection0(Spacer1)Basic Examples  (3)

Compute a cumulant-generating function (cgf) for a continuous univariate distribution:

CumulantGeneratingFunction[NormalDistribution[μ,σ],t]

The cgf for a univariate discrete distribution:

CumulantGeneratingFunction[PoissonDistribution[μ],t]

The cgf for a multivariate distribution:

CumulantGeneratingFunction[BinormalDistribution[ρ],{t1,t2}]

OpenersExampleSection1(Spacer1)Scope  (5)

Compute the cgf for a formula distribution:

CumulantGeneratingFunction[ProbabilityDistribution[(3/4)(Sqrt[((1+x)/2)]),{x,-1,1}],t]

Find the cgf for a function of random variates:

CumulantGeneratingFunction[TransformedDistribution[u z,{u\[Distributed]UniformDistribution[],z\[Distributed]NormalDistribution[]}],t]

Compute the cgf for data distribution:

hdist=HistogramDistribution[ExampleData[{"Statistics","FatigueLifeFailures"}]]

CumulantGeneratingFunction[hdist,t]

Find the cgf for a truncated distribution:

CumulantGeneratingFunction[TruncatedDistribution[{-10,10},CauchyDistribution[0,1]],t]

Find the cgf for the slice distribution of a random process:

CumulantGeneratingFunction[PoissonProcess[μ][s],t]

OpenersExampleSection2(Spacer1)Applications  (5)

The cumulant-generating function of a difference of two independent random variables is equal to the sum of their cumulant-generating functions with oppositive sign arguments:

TransformedDistribution[x-y, {x\[Distributed]PoissonDistribution[μ],y\[Distributed]PoissonDistribution[λ]}]

CumulantGeneratingFunction[SkellamDistribution[μ,λ], t]

%==CumulantGeneratingFunction[PoissonDistribution[μ],t]+CumulantGeneratingFunction[PoissonDistribution[λ],-t]

Illustrate the central limit theorem:

dist=LaplaceDistribution[μ,σ];

Find the cumulant-generating function for the standardized random variate:

cgf[t_]=CumulantGeneratingFunction[TransformedDistribution[(x-Mean[dist])/StandardDeviation[dist],x\[Distributed]dist],t]

Find the moment-generating function for the sum of n standardized random variates rescaled by (Sqrt[n]):

n*cgf[t/(Sqrt[n])]

Find the large n limit:

Limit[n*cgf[t/(Sqrt[n])],n->Infinity]

Compare with the moment-generating function of a standard normal distribution:

CumulantGeneratingFunction[NormalDistribution[],t]

Find the Esscher premium for insuring against losses following (RefLink[GammaDistribution, paclet:ref/GammaDistribution]):

D[CumulantGeneratingFunction[GammaDistribution[α,β],h],h]

Compare with the definition:

((Expectation[x Exp[h x],x\[Distributed]GammaDistribution[α,β]])/(Expectation[Exp[h x],x\[Distributed]GammaDistribution[α,β]]))

Construct a Bernstein–Chernoff bound for the survival function (Subscript[ℱ, dist])(x)≤exp(-ArgMax[{t x-(Subscript[cmgf, dist])(t),t>0},t]):

dist=BinomialDistribution[n,1/2];
ℐ[t_,x_]=t*x-CumulantGeneratingFunction[dist,t];
k=Mean[dist]+u  StandardDeviation[dist];
assumps=t>0∧n>0∧k<n∧u>0;

{bound}=Simplify[Exp[-ℐ[t,k]]/.Solve[D[ℐ[t,k],t]==0&&assumps,t,Reals],assumps]

Table[LogPlot[{SurvivalFunction[dist,k],bound},{u,0,5},PlotPoints->n],{n,{50,100,500,1000}}]

Large n approximation of the bound:

Series[bound,{n,∞,2}]//Simplify

Construct Daniel's saddle point approximation to (RefLink[PDF, paclet:ref/PDF]) of (RefLink[VarianceGammaDistribution, paclet:ref/VarianceGammaDistribution]):

vgd=VarianceGammaDistribution[7/3,3,-1,0];
cgf[t_]=CumulantGeneratingFunction[vgd,t]

Find the saddle point associated with the argument of probability density function x:

sol=Solve[cgf'[t]==x,t]

Select the solution that is valid for all real x, including the origin:

Limit[t/.sol,x->0]

ts=Last[t/.sol]

The approximation is constructed using the cumulant-generating function at the saddle point:

approxPDF[x_]=(1/(Sqrt[2Pi cgf''[ts]]))Exp[cgf[ts]-ts x]//FullSimplify

Find the normalization constant:

norm=NIntegrate[approxPDF[x],{x,-Infinity,Infinity}]

Compare the approximation to the exact density:

Plot[{approxPDF[x]/norm,PDF[vgd,x]},{x,-4,4},PlotLegends->{"Saddlepoint approximation","Exact density"}]

OpenersExampleSection3(Spacer1)Properties & Relations  (3)

Exponential of (RefLink[CumulantGeneratingFunction, paclet:ref/CumulantGeneratingFunction]) gives (RefLink[MomentGeneratingFunction, paclet:ref/MomentGeneratingFunction]):

CumulantGeneratingFunction[NormalDistribution[μ,σ],t]

Exp[%]==MomentGeneratingFunction[NormalDistribution[μ,σ],t]

(RefLink[CumulantGeneratingFunction, paclet:ref/CumulantGeneratingFunction]) is an exponential generating function for the sequence of cumulants:

Cumulant[PoissonDistribution[μ],r]

ExponentialGeneratingFunction[%,r,t]

Use (RefLink[CumulantGeneratingFunction, paclet:ref/CumulantGeneratingFunction]) directly:

CumulantGeneratingFunction[PoissonDistribution[μ],t]

Cumulant (Subscript[κ, r]) is equivalent to Derivative[r][cgf](0):

Cumulant[UniformDistribution[{0,1}],4]

Limit[D[CumulantGeneratingFunction[UniformDistribution[{0,1}],t],{t,4}],t->0]

Use (RefLink[SeriesCoefficient, paclet:ref/SeriesCoefficient]) formulation:

With[{r=4},SeriesCoefficient[CumulantGeneratingFunction[UniformDistribution[{0,1}],t],{t,0,r}]r!]

OpenersExampleSection4(Spacer1)Possible Issues  (2)

For some distributions with long tails, cumulants of only several low orders are defined:

Table[Cumulant[ParetoDistribution[1,4],r],{r,5}]

Correspondingly, (RefLink[CumulantGeneratingFunction, paclet:ref/CumulantGeneratingFunction]) is undefined:

CumulantGeneratingFunction[ParetoDistribution[1,4],t]

(RefLink[CumulantGeneratingFunction, paclet:ref/CumulantGeneratingFunction]) is not always known in closed form:

CumulantGeneratingFunction[LogNormalDistribution[μ,σ],t]

Use (RefLink[Cumulant, paclet:ref/Cumulant]) to find cumulants directly:

Cumulant[LogNormalDistribution[μ,σ],3]

({{DocumentationFooterIconsRelatedFunction.png, ({{See Also}, {(RefLink[Cumulant, paclet:ref/Cumulant])  ▪  (RefLink[CharacteristicFunction, paclet:ref/CharacteristicFunction])  ▪  (RefLink[MomentGeneratingFunction, paclet:ref/MomentGeneratingFunction])  ▪  (RefLink[CentralMomentGeneratingFunction, paclet:ref/CentralMomentGeneratingFunction])  ▪  (RefLink[FactorialMomentGeneratingFunction, paclet:ref/FactorialMomentGeneratingFunction])  ▪  (RefLink[GeneratingFunction, paclet:ref/GeneratingFunction])}})}})

({{DocumentationFooterIconsRelatedGuide.png, ({{Related Guides}, {▪(RefLinkPlain[Statistical Moments and Generating Functions, paclet:guide/StatisticalMomentsAndGeneratingFunctions])}, {▪(RefLinkPlain[Statistical Distribution Functions, paclet:guide/StatisticalDistributionFunctions])}, {▪(RefLinkPlain[Summation Transforms, paclet:guide/SummationTransforms])}})}})