我希望有一个任意函数p[x],它可以积分为1,并且对于所有的x,0 <= p[x] <= 1。有没有什么转换规则呢?
我希望有一个任意函数p[x],它可以积分为1,并且对于所有的x,0 <= p[x] <= 1。有没有什么转换规则呢?
ProbabilityDistribution
来实现这个目标,同时结合一个未定义的函数x
:dist = ProbabilityDistribution[p[x], {x, -Infinity, Infinity}];
现在它知道一些要应用的规则:
连续概率密度:单个值的概率为零
In[26]:= Probability[x == 0, x \[Distributed] dist]
Out[26]= 0
有数值的概率
In[28]:= Probability[x > 0 || x <= 0, x \[Distributed] dist]
Out[28]= 1
负无穷处的累积分布函数
In[29]:= CDF[dist][-\[Infinity]]
Out[29]= 0
+无穷大处的累积分布函数(CDF)
In[30]:= CDF[dist][\[Infinity]]
Out[30]= 1
PDF 文件In[32]:= PDF[dist][x]
Out[32]= p[x]
然而,它并不假设分布的概率密度函数已经被归一化: In[33]:= Integrate[PDF[dist][x], {x, -Infinity, Infinity}]
Out[33]= Integrate[p[x], {x, -Infinity, Infinity}]
后者可以被教授,通过为p定义一个UpValue来实现:p /: Integrate[p[x], {x, -Infinity, Infinity}] = 1;
现在它可以集成PDF: In[4]:= Integrate[PDF[dist][x], {x, -Infinity, Infinity}]
Out[4]= 1
你知道你的第二个要求,即0 <= p[x] <= 1
,对于概率密度函数来说并不普遍成立,对吗?如果你只是在寻找符合你标准的密度函数(PDF)的例子,这里有两个(其中有无数个):
p(x) = 1 if 0 < x < 1
0 otherwise
p(x) = x/2 if 0 < x < 2
0 otherwise
我们甚至可以稍微概括一下:
p(x) = 1/k if 0 < x < k
0 otherwise
p(x) = 2x/k^2 if 0 < x < k
0 otherwise
对于 k >= 2,后者是有效的。 我们甚至可以通过另一个参数来概括它,以获得具有任意指数的这类函数。
p(x) = (a+1)/k^(a+1)*x^a if 0 < x < k
0 otherwise
适用于所有a>1和k>a+1。
如果您想要更有趣的示例,我认为您需要提供更多的标准。您提到了一个转换规则,因此也许您想要取R1上的任意有界函数,并将其翻译/缩放,使其始终在0和1之间,并且积分为1。只要您可以获得给定函数的最小值、最大值和积分,这将有一个直接的答案。如果这确实是您要寻找的内容,请随意编辑问题并提出。