極大似然估計(Maximum likelihood estimation, 簡稱MLE)是很常用的參數(shù)估計方法,極大似然原理的直觀想法是,一個隨機試驗如有若干個可能的結果A,B,C,... ,若在一次試驗中,結果A出現(xiàn)了,那么可以認為實驗條件對A的出現(xiàn)有利,也即出現(xiàn)的概率P(A)較大。也就是說,如果已知某個隨機樣本滿足某種概率分布,但是其中具體的參數(shù)不清楚,參數(shù)估計就是通過若干次試驗,觀察其結果,利用結果推出參數(shù)的大概值。極大似然估計是建立在這樣的思想上:已知某個參數(shù)能使這個樣本出現(xiàn)的概率最大,我們當然不會再去選擇其他小概率的樣本,所以干脆就把這個參數(shù)作為估計的真實值(請參見“百度百科”)。
本文以一個簡單的離散型分布的例子,模擬投擲硬幣估計頭像(head)向上的概率。投擲硬幣落到地面后,不是head向上就是tail朝上,這是一個典型的伯努利實驗,形成一個伯努利分布,有著如下的離散概率分布函數(shù):
其中,x等于1或者0,即結果,這里用1表示head、0表示tail。
對于n次獨立的投擲,很容易寫出其似然函數(shù):
現(xiàn)在想用極大似然估計的方法把p估計出來。就是使得上面這個似然函數(shù)取極大值的情況下的p的取值,就是要估計的參數(shù)。
首先用Python把投擲硬幣模擬出來:
通過此模擬,使用sympy庫把似然函數(shù)寫出來:
從上面的結論可以看出,作100次伯努利實驗,出現(xiàn)positive、1及head的數(shù)目是53個,相應的0也就是tail的數(shù)目是47個,比較接近我們設的初始值0.5即1.0/2(注意:現(xiàn)在我們假設p是未知的,要去估計它,看它經(jīng)過Python的極大似然估計是不是0.5?。?。
下面,我們使用Python求解這個似然函數(shù)取極大值時的p值:
結果沒有什么懸念,53/100的值很接近0.5!
取對數(shù)后,上面Python的算法最后實際上是求解下式為0的p值:
上式留給網(wǎng)友自行推導,很多資料都可找到該式。這個式子,是著名的Logistic回歸參數(shù)估計的極大似然估計算法的基礎。
進一步,為了更加直觀的理解投擲硬幣的伯努利實驗,我們給出以均值(均值為100*0.5=50)為中心對稱的加總離散概率(概率質量函數(shù)(probability mass function),Python里面使用pmf函數(shù)計算):
對于上面的Python代碼,可以通過下圖更好地去理解:
把這20個離散的概率全部顯示出來,也可以看到在0.08左右取到它們的最大值:
本文針對簡單的離散概率質量函數(shù)的分布使用Python進行了極大似然估計,同時該方法可以應用于連續(xù)分布的情形,只要通過其概率密度函數(shù)得出其似然函數(shù)即可。希望網(wǎng)友把本文的代碼實踐一遍,也可以和R語言、SAS等軟件得到的結論相比較,從而得到更好的極大似然估計的實現(xiàn)方法。
-
函數(shù)
+關注
關注
3文章
4381瀏覽量
64908 -
python
+關注
關注
56文章
4827瀏覽量
86781 -
最大似然估計
+關注
關注
0文章
2瀏覽量
1703
原文標題:用Python實現(xiàn)極大似然估計
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄



這6點幫你解決參數(shù)未知的重要問題 | AI知識科普
巴斯卡分布中未知參數(shù)的估計
多傳感器的極大似然配準算法研究
基于極大似然法的椒鹽噪聲濾波算法
基于平均似然比的魯棒性突發(fā)檢測
基于正交訓練序列的MIMO系統(tǒng)聯(lián)合最大似然時頻同步和信道估計
最大似然檢測算法認識與理解

基于極大似然的非監(jiān)督噪聲功率譜估計方法

評論