python实现最⼤似然估计伯努利分布(离散型分布)代码详细解释python实现最⼤似然估计
⼀、构建似然函数需要⽤到sympy
可以⽤pip install sympy即可
#-*- coding: utf-8 -*-
from scipy.stats import norm
import matplotlib.pyplot as plt
import numpy as np
import sympy
from scipy.stats import binom
from scipy.stats import bernoulli
p_1=1.0/2#假设估计
fp=bernoulli(p_1)#产⽣伯努利随机变量
data=fp.rvs(500)#产⽣500个样本
#print data
x,p,z=sympy.symbols('x p z',positive=True)
phi=p**x*(1-p)**(1-x)#分布函数
#print phi
'''
np.prod()函数⽤来计算所有元素的乘积,
diff函数对于有多个维度的数组可以指定轴,
如axis=1指定计算每⼀⾏的乘积。
变量替换subs函数,⽤i替换x
'''
L=np.prod([phi.subs(x,i) for i in data])#构建似然函数
pand_log(sympy.log(L))#去对数
#print L
#print log1
#print len(data)
'''
利⽤solve()函数解⽅程
利⽤diff()函数计算微分
diff(func,var,n):⾼阶微分
'''
sol,=sympy.solve(sympy.diff(log1,p),p)
#print sol
'''
以均值(均值为100*0.5=50)为中⼼对称的加总离散概率,
Python⾥⾯使⽤pmf函数计算
以均值为中⼼对称的加总概率
'''
b=binom(100,0.5)#100次,p=0.5的概率为正⾯
x=np.arange(0,100)
y=b.pmf(x)
#print array
#plt.bar(x,y,width=0.8)
plt.title("ZuiDaSiRanGuJi")
plt.xlabel("x")
plt.ylabel("P(X=x)")
plt.plot(y,c='g',linewidth=3)
plt.show()
本⽂针对简单的离散概率质量函数的分布使⽤Python进⾏了极⼤似然估计,同时该⽅法可以应⽤于连续分布的情形,只要通过其概率密度函数得出其似然函数
感悟:
“爱是需要与时俱进的,观念是需要不断更新的。”因此,知识也需要不断学习和完善,每天都要总结和充电!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。