Sas*_*sha 5 wolfram-mathematica
我想要一个任意函数p [x],它集成到1和所有x,0 <= p [x] <= 1.某种转换规则?
Sjo*_*ies 12
您可以ProbabilityDistribution将此与未定义的函数一起使用x:
dist = ProbabilityDistribution[p[x], {x, -Infinity, Infinity}];
Run Code Online (Sandbox Code Playgroud)
它现在知道一些适用的规则:
连续概率密度:单个值的概率为零
In[26]:= Probability[x == 0, x \[Distributed] dist]
Out[26]= 0
Run Code Online (Sandbox Code Playgroud)有价值的概率
In[28]:= Probability[x > 0 || x <= 0, x \[Distributed] dist]
Out[28]= 1
Run Code Online (Sandbox Code Playgroud)CDF在 - 无限
In[29]:= CDF[dist][-\[Infinity]]
Out[29]= 0
Run Code Online (Sandbox Code Playgroud)CDF在+无穷大
In[30]:= CDF[dist][\[Infinity]]
Out[30]= 1
Run Code Online (Sandbox Code Playgroud)In[32]:= PDF[dist][x]
Out[32]= p[x]
Run Code Online (Sandbox Code Playgroud)但是,它不假设分发的PDF已标准化:
In[33]:= Integrate[PDF[dist][x], {x, -Infinity, Infinity}]
Out[33]= Integrate[p[x], {x, -Infinity, Infinity}]
Run Code Online (Sandbox Code Playgroud)可以教导后者,为p定义UpValue:
p /: Integrate[p[x], {x, -Infinity, Infinity}] = 1;
Run Code Online (Sandbox Code Playgroud)现在它可以集成PDF:
In[4]:= Integrate[PDF[dist][x], {x, -Infinity, Infinity}]
Out[4]= 1
Run Code Online (Sandbox Code Playgroud)你知道你的第二个要求,即0 <= p[x] <= 1概率密度函数通常不正确,对吗?
如果您只是要求提供符合您的标准的密度函数 (PDF) 示例,这里有两个(在无数个中):
p(x) = 1 if 0 < x < 1
0 otherwise
p(x) = x/2 if 0 < x < 2
0 otherwise
Run Code Online (Sandbox Code Playgroud)
我们甚至可以稍微概括一下:
p(x) = 1/k if 0 < x < k
0 otherwise
p(x) = 2x/k^2 if 0 < x < k
0 otherwise
Run Code Online (Sandbox Code Playgroud)
后者适用于 k >= 2。我们甚至可以使用另一个参数来推广它,以获得具有任意指数的此类函数的类
p(x) = (a+1)/k^(a+1)*x^a if 0 < x < k
0 otherwise
Run Code Online (Sandbox Code Playgroud)
它适用于所有 a > 1 和 k > a+1。
对于更有趣的例子,我认为你需要给出更多标准。你提到了一个转换规则,所以也许你想在 R1 上取一个任意有界函数并对其进行平移/缩放,以便它始终在 0 和 1 之间并积分为 1。只要你能得到给定函数的最小值、最大值和积分。继续编辑问题以询问这是否确实是您正在寻找的内容。