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()函数用来计算所有元素的乘积,
对于有多个维度的数组可以指定轴,
如axis=1指定计算每一行的乘积。
变量替换subs函数,用i替换x
'''
L=np.prod([phi.subs(x,i) for i in data])#构建似然函数

log1=sympy.expand_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实现最大似然估计&伯努利分布(离散型分布)&代码详细解释_第1张图片
本文针对简单的离散概率质量函数的分布使用Python进行了极大似然估计,同时该方法可以应用于连续分布的情形,只要通过其概率密度函数得出其似然函数

感悟:
“爱是需要与时俱进的,观念是需要不断更新的。”因此,知识也需要不断学习和完善,每天都要总结和充电!

你可能感兴趣的:(Python金融大数据分析)