python - Sympy:如何计算平方符号的导数
问题描述
我想计算正态分布变化的导数。所有这些都是为了使用最大似然法了解变异的估计量。那是我的代码。
import numpy as np
import sympy as sym
from sympy.solvers import solve
from sympy import Product, Function, oo, IndexedBase, diff, Eq, symbols, Sum, factorial, E, sqrt, pi, exp
x = IndexedBase('x')
i = symbols('i', positive=True)
n = symbols('n', positive=True)
s = symbols('s') # s = standard deviation
m = symbols('m') # m = expected value
def var(): # var = variance (function var() has been created as variance depends on standard deviation)
return s*s
formula = (1/(s*sqrt(2*pi)))*exp((-1/2)*((x[i]-m)**2/(var())))
涵盖正态分布外观的概率质量函数和正态分布外观 的最大似然函数的 公式。
下面是计算这个估计量的函数。
def Maximum_Likelihood(param, pmf): # probability mass function, param - parameter for which I want to get estimator
i = symbols('i', positive=True)
n = symbols('n', positive=True)
Likelihood_function = Product(pmf, (i, 1, n))
deriv = diff(Likelihood_function, param) # the problem is here with .diff()
equation_to_solve = Eq(deriv,0).doit()
return solve(equation_to_solve, param)
当我为参数执行上述函数时:
param = var()
pmf = formula
Maximum_Likelihood(param, pmf)
我收到: ValueError:无法计算 s**2 的导数。
我知道.diff()
无法计算非符号的导数,但我希望存在解决此问题的方法。
谢谢!
解决方案
推荐阅读
- nginx - Odoo 13 网络资产失败
- unity3d - 如何绘制路径轨迹像下面的游戏参考统一
- microcontroller - 使用 UART 同步两个微控制器之间的串行通信的最佳方法是什么?
- php - 如何在codeigniter中限制同一用户多次登录另一个系统
- google-cloud-platform - 将子域重定向到谷歌云
- php - Laravel 6 - Illuminate\Database\Eloquent\RelationNotFoundException 调用未定义的关系
- php - “错误:插入”非特定插入错误
- ios - 如何在 Xcode UI 测试中获得授权部分
- php - GROUP_BY 中的错误,查询来自两个数据库 CODEIGNITER
- regex - 参数扩展正则表达式?