【问题标题】:Solving MLE(Maximum Likelihood Estimation) equation using SYMPY使用 SYMPY 求解 MLE(最大似然估计)方程
【发布时间】:2017-02-06 07:58:41
【问题描述】:

我有一个包含 4 个变量 x、v、eta(e)、beta(b) 的方程。我想用各种值替换 x 和 v 并通过将所有获得的项相乘来创建一个方程。 Image of Code in sympy

使用 SYMPY,如何求解得到的方程在 2 个变量(e 和 b)中取对数,然后对 e 和 b 进行微分? 我正在使用“ln”,以便将乘法项简化为加法项,从而消除指数项。但是,它没有发生。它只是在前面写入单词 log 但不使用属性 ln(mn) = ln(m) + ln(n) 扩展

以下是控制台的输出:

Output in console when I run code shown in previous image

【问题讨论】:

  • 请以可以复制粘贴的格式提供您的代码。同时,尝试使用force=True选项调用sp.expand_log
  • @Stelios,我仍然无法从 expand_log PFB 代码中的 after force = true 中消除指数项: from sympy.solvers.pde import pdsolve from sympy import Function , diff , Eq from sympy. abc import x,y,z,v from sympy import * # from sympy import IndexedBase , Idx, symbols , oo import sympy as sp # import numpy # from mpmath import * # from sympy.tensor.array import Array e, b, a = sp.symbols('e b a') 继续.....
  • x = sp.IndexedBase('x') v = sp.IndexedBase('v') i , j = sp.symbols('i j' , cls=Idx) def f(x, v , e, b): y = (((x + v)/e)**(b-1))*(sp.exp((v/e)**b - ((x+v)/e) **b)) return y # # n= 0 for i in range(0,6): x = x[i].subs(x[i], (2,3,4,5,4,1)) v = v[i].subs(v[i],(1,2,3,4,5,6)) o = sp.ln(f(x[i],v[i],e,b) ) n += o print(n) def m(e,b): m= sp.expand_log(sp.ln(n)) return m print(m(e,b)) eqs = (sp.diff(n, e) , sp.diff(n,b)) print(eqs) print(sp.solve(eqs))
  • 我对代码进行了一些更改: 请参见下面的 n= 1 for i in range(0,6): x = x[i].subs(x[i], (2,3, 4,5,4,1)) v = v[i].subs(v[i],(1,2,3,4,5,6)) n *= f(x[i],v[i ],e,b) print(n) def m(e,b): m= sp.expand_log(sp.ln(n), force= true) sp.simplify(m) return m print(m(e,b )) eqs = (sp.diff(m(e,b),e) , sp.diff(m(e,b),b)) print(eqs) print(sp.solve(eqs)) 现在指数项已消除,感谢@Stelios 但控制台中的错误“无法求解方程”保持不变。
  • 请在此处粘贴您的代码。没有人会尝试从图像中重新输入您的代码。

标签: python sympy modeling mathematical-expressions


【解决方案1】:

您可能需要将各种符号设置为正数,例如x = symbols('x', positive=True)。像log(x*y) == log(x) + log(y)log(exp(x)) == x 这样的身份通常不正确,但当变量为正时它们是正确的。

【讨论】:

    猜你喜欢
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    • 2015-04-02
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    相关资源
    最近更新 更多