到目前为止,这是我的代码,我认为我可以使用scipy,但是它不能为二阶导数moment(0,2)提供正确的答案。我的猜测是我没有正确应用scipy.misc.derivative,我应该使用sympy的diffs_exp,但是我也无法使用它。
from scipy import misc
import numpy as np
def mgf(s):
mu = 2
sigma = 0.5
mgf = np.exp(mu*s + ((sigma**2)*(s**2))/2)
return mgf
def moment(s, i):
mo = misc.derivative(mgf, s, dx=0.000000001, n=i)
return mo
当i = 1时,矩(s,i)正确评估,但当i> 1时,矩不正确。 moment(0,2)应该等于sigma ^ 2或.25,但函数当前返回0.0
仅当s = 0时才评估函数,更重要的是微分是正确的。
最佳答案
这是使用sympy
象征性地进行操作并以数值方式评估特定mu
,sigma
和s
的结果的方法
In [1]: from sympy import *
In [2]: mu, sigma, s = symbols("mu sigma s")
In [3]: expr = exp(mu*s+(sigma*s)**2/2)
In [4]: f = lambdify((mu, sigma, s), expr.diff(s, 2))
In [5]: f(2, 0.5, 0)
Out[5]: 4.25
关于python - 如何在python中计算矩生成函数的导数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31300686/