我希望您有一些有用的提示让我接受以下任务:
我写了一些简单的python片段来绘制概率密度函数。在我的特定情况下,让它们表示某些参数x
的类条件概率。
所以,我想知道Python中是否有一个聪明的方法(即模块)(可能通过NumPy或SciPy函数或方法)来解决参数x
的简单方程。
例如,
pdf(x, mu=10, sigma=3**0.5) / pdf(x, mu=20, sigma=2**0.5) = 1
# get x
现在,我只能用蛮力的方法来处理类似的问题
x = np.arange(0, 50, 0.000001)
并将x值保留在产生最接近的向量中
计算比率pdf1/pdf2.
下面是我编写的用于计算pdf并绘制比率的代码:
def pdf(x, mu=0, sigma=1):
"""Calculates the normal distribution's probability density
function (PDF).
"""
term1 = 1.0 / ( math.sqrt(2*np.pi) * sigma )
term2 = np.exp( -0.5 * ( (x-mu)/sigma )**2 )
return term1 * term2
x = np.arange(0, 100, 0.05)
pdf1 = pdf(x, mu=10, sigma=3**0.5)
pdf2 = pdf(x, mu=20, sigma=2**0.5)
# ...
# ratio = pdf1 / pdf2
# plt.plot(x, ratio)
谢谢!
答案 0 :(得分:0)
由于你有一个很好的封闭形式,你可以用SymPy来解决它。
我插入了mu
和sigma
的值,并将其输入Sympy Gamma:
solve(1.0 / ( sqrt(2*pi) *(3**0.5) ) * exp( -0.5 * ( (x-10)/(3**0.5) )**2 ) / (1.0 / ( sqrt(2*pi) *(2**0.5) ) * exp( -0.5 * ( (x-20)/(2**0.5) )**2 ))-1,x)
结果:15.4554936768195
答案 1 :(得分:0)
通常,听起来你需要标量的根查找功能: http://docs.scipy.org/doc/scipy/reference/optimize.html
但正如其他人所指出的那样,似乎有一种分析解决方案。