计算Mathematica中自定义分布的期望值

Jag*_*gra 4 statistics wolfram-mathematica

这个问题建立在我在之前的问题上得到的很好的答案上:

可以在Mathematica中扩展PDF,CDF,FindDistributionParameters等功能吗?

首先,我有两个自定义发行版的PDF和CDF:nlDist和dplDist,你可以从代码dplDist构建的nlDist上看到.

    nlDist /: PDF[nlDist[alpha_, beta_, mu_, sigma_], 
   x_] := (1/(2*(alpha + beta)))*alpha* 
   beta*(E^(alpha*(mu + (alpha*sigma^2)/2 - x))* 
      Erfc[(mu + alpha*sigma^2 - x)/(Sqrt[2]*sigma)] + 
     E^(beta*(-mu + (beta*sigma^2)/2 + x))* 
      Erfc[(-mu + beta*sigma^2 + x)/(Sqrt[2]*sigma)]); 

nlDist /: 
  CDF[nlDist[alpha_, beta_, mu_, sigma_], 
   x_] := ((1/(2*(alpha + beta)))*((alpha + beta)*E^(alpha*x)* 
        Erfc[(mu - x)/(Sqrt[2]*sigma)] - 
       beta*E^(alpha*mu + (alpha^2*sigma^2)/2)*
        Erfc[(mu + alpha*sigma^2 - x)/(Sqrt[2]*sigma)] + 
       alpha*E^((-beta)*mu + (beta^2*sigma^2)/2 + alpha*x + beta*x)*
        Erfc[(-mu + beta*sigma^2 + x)/(Sqrt[2]*sigma)]))/ 
   E^(alpha*x);         

dplDist /: PDF[dplDist[alpha_, beta_, mu_, sigma_], x_] := 
  PDF[nlDist[alpha, beta, mu, sigma], Log[x]]/x;
dplDist /: CDF[dplDist[alpha_, beta_, mu_, sigma_], x_] := 
  CDF[nlDist[alpha, beta, mu, sigma], Log[x]];

Plot[PDF[dplDist[3.77, 1.34, -2.65, 0.40], x], {x, 0, .3}, 
 PlotRange -> All]
Plot[CDF[dplDist[3.77, 1.34, -2.65, 0.40], x], {x, 0, .3}, 
 PlotRange -> All]
Run Code Online (Sandbox Code Playgroud)

在我之前的问题中,joebolte和sasha的答案以及使用TagSet的建议帮助我做到了这一点.现在,我的问题与dplDist有关.

我现在需要从PDF的x轴上的某个点计算期望值.在生存分析中,他们将此称为平均剩余寿命.类似于以下内容:

Expectation[X \[Conditioned] X > 0.1, 
  X \[Distributed] dplDist[3.77, 1.34, -2.65, 0.40]] - 0.1
Run Code Online (Sandbox Code Playgroud)

这不起作用,基本上只是将输入作为文本返回.

我理解如何使用TagSet为自定义发行版定义PDF和CDF,如何为Expectation []做类似的事情?


我将在一个单独的问题中发布更多有关此跟进的内容,但我还需要一种策略来计算dplDist相对于我适合分布的某些数据的拟合优度.


非常感谢大家.

Sas*_*sha 5

虽然您已经为Mathematica 提供了自定义分发PDFCDF自定义分发,但您还没有给出域,因此它不知道集成的界限,实际上是集成还是求和.添加它可以使事情有效:

In[8]:= nlDist /: 
 DistributionDomain[nlDist[alpha_, beta_, mu_, sigma_]] := 
 Interval[{-Infinity, Infinity}]

In[9]:= NExpectation[Log@X \[Conditioned] Log@X > 0.1, 
  X \[Distributed] nlDist[3.77, 1.34, -2.65, 0.40]] - 0.1

Out[9]= 0.199329
Run Code Online (Sandbox Code Playgroud)

将其与ProbabilityDistribution具有格式的格式进行比较ProbabilityDistribution[ pdf, {x, min, max}],您可以在其中明确指出域.

为了象征性的求解器一样Probability,Expectation和他们同行的数字对这些工作的同时,还建议设置DistributionParameterQDistributionParameterAssumptions为好.

DistributionParameterQ应该给出False明确违反假设的参数,并且DistributionParameterAssumptions应该返回表示分布参数假设的布尔表达式.