首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用SymPy计算对数正态密度(从正态密度开始)

如何使用SymPy计算对数正态密度(从正态密度开始)
EN

Stack Overflow用户
提问于 2017-12-22 06:03:32
回答 1查看 50关注 0票数 2
代码语言:javascript
复制
from sympy import *
x, y, mu, sigma, density1, density2 = symbols('x y mu sigma density1 density2')
eq1 = Eq(density1, 1/(sqrt(2*pi)*sigma)
                         *exp(-(x-mu)**2/(2*sigma**2)))     # normal 
eq2 = Eq(y, exp(x))                                         # substitution
eq3 = Eq(density2, 1/(y*sqrt(2*pi)*sigma)
                         *exp(-(ln(y)-mu)**2/(2*sigma**2))) # lognormal
[eq1, eq2, eq3]

输出:

如何让SymPy获取normal density (eq1),应用x到y替换(eq2)并输出lognormal density (eq3)?

(我在https://stats.stackexchange.com/q/55353/14202上没有得到这个问题的答案。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-22 08:07:04

当我们改变概率密度函数中的变量时,还需要将密度乘以执行替换的函数的导数。这就是代换在积分中的工作原理,概率密度必须有积分1,所以我们必须尊重这一点。

让我们将执行替换的函数命名为f (在您的示例中为log(y) )。下面是该过程的工作原理,从您的设置开始:

代码语言:javascript
复制
f = solve(eq2, x)[0]
new_density = eq1.rhs.subs(x, f) * f.diff()
# test it now
Eq(new_density, eq3.rhs)  #  True
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47933318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档