python中用户定义概率密度函数(pdf)的最大似然估计
我正在研究MLE,我想优化我的对数似然函数。我正在使用代码: 我有一个非常明确的疑问: ->我有YOB和yPred,但我不知道如何将YOB和yPred包括在我的似然函数中,如这里所做: logLik=-np.sum stats.norm.logpdfyObs,loc=yPred,scale=sd 我的似然函数只有x作为样本空间和两个未知参数: 他们使用了一个名为stats.norm.logpdf的函数,但我没有使用正态分布 提前谢谢python中用户定义概率密度函数(pdf)的最大似然估计,python,statistics,distribution,mle,Python,Statistics,Distribution,Mle,我正在研究MLE,我想优化我的对数似然函数。我正在使用代码: 我有一个非常明确的疑问: ->我有YOB和yPred,但我不知道如何将YOB和yPred包括在我的似然函数中,如这里所做: logLik=-np.sum stats.norm.logpdfyObs,loc=yPred,scale=sd 我的似然函数只有x作为样本空间和两个未知参数: 他们使用了一个名为stats.norm.logpdf的函数,但我没有使用正态分布 提前谢谢 关于展开评论 你有KPDF Kx,mu,nu 我猜你有一个观察
关于展开评论 你有KPDF Kx,mu,nu 我猜你有一个观察YOB的样本,我假设是一个数组和另一个数组yPred注意,你从中得到的例子使用了一个简单的线性回归来获得yPred,并且实际上试图找到回归参数,而不是分布参数,尽管总体上答案看起来很奇怪 如果您只是试图找到最适合您的样本的参数,那么yPred是无用的,您可以找到您的可能性作为两个参数的函数,如下所示:
logLik = lambda mu, nu: - np.sum(np.log(K(yObs, mu, nu)))
然后最小化mu,nu
如果您想使用在参考文章中找到的代码,您需要更改如下函数:
def regressLL(params):
b0 = params[0]
b1 = params[1]
nu = params[2]
yPred = b0 + b1*x
logLik = -np.log( np.prod(K(yObs, mu=yPred, nu=nu)))
return(logLik)
记住,在第二种情况下,函数K必须能够为mu获取一个数组。我不建议使用第二种方法,因为它对样本中的每个观察值使用不同的平均值,一般来说,我不明白它试图实现什么,看起来它试图以某种混乱的方式从观察值中预测平均值,但这可能是一种我从未见过的有效方法。如果你知道你的分布函数,你只需要在示例中将其替换为高斯分布。假设你有一个分布函数fx,a,b,其中a和b是两个参数,你不知道如何生成希腊字母。。。。样本的对数似然度计算为logLika,b=-np.sumnp.logfyObs,a,b或-np.logfyObs,a,b.prod。现在你只需要最小化这个关于a和b的函数。要在python中实现这一点,您可能需要使用lambda函数,即loglika,b=lambda,b:-np.sumnp.logfyObs,a,b@gionni,谢谢你的回复,但我能帮你找到合适的答案。如何将分布函数替换为高斯分布?高斯分布在分布函数中扮演什么角色?如果您能澄清我的困惑,我将非常感谢。如果我理解正确,您的数据不是来自高斯分布,而是来自PDF fx,a,b的不同分布。如上所述,您只需要在对数似然公式中插入分布函数,而不是使用高斯分布。您使用的是什么发行版?我使用的是k pdf。它不同于高斯分布。我有对应于每个样本空间yObs,x的pdf的真实值。如何生成对数似然函数?在我分享的链接中,他们使用了高斯分布。我已经用python编写了我的k-pdf,并且必须计算它的对数可能性。好的,我猜您为pdf编写了一个函数。只要在上面的代码中替换这样的函数,就有了loglikelibility,这取决于您使用的两个参数。如果您最大限度地利用python已经实现的优化库中的参数来实现该函数,那么您可以找到最适合给定分发版的数据的参数,这似乎非常有用。我有一个问题,在logLik方程中用YOB代替x的原因是什么?我有每个x的YOB,我必须将k-pdf拟合到这个数据中。所以你有一个多变量问题,其中n个变量x在R^n中,每个都有n个观测值?我有数据,我必须拟合k-pdf,pdf有两个未知参数。是的,我已经实现了,但我有一个问题。我应该如何选择我的样本量YOB,因为我做了随机抽样,每次我改变样本量时,我的估计参数都会改变,如果我选择整个人群,那么我的估计参数是错误的。