2012-09-27 32 views
3

這是值得嘗試做MLE時,我在Matlab注意到。我的第一個估計人員使用了pdf的對數似然值,並將其作爲總和。例如,日誌韋伯PDF (f(x)=b ax^(a-1)exp(-bx^a))打散是:如果我將對數似然分解爲其總和,MLE似然評估如何不同?

log_likelihood=log(b)+log(a)+(a-1)log(x)-bx^a

評價這是此完全不同:

log_likelihood=log(bax^(a-1)exp(-bx^a))

什麼是計算機在兩個階段做不同?第一個給出了一個更大的數字(幾個數量級)。

+0

下面的答案可能是正確的,但它無法告訴,因爲你沒有用,實際上可以運行重現該問題的代碼提供給我們。對於一些問題,很難給出一個簡短的可重複的例子,但在這種情況下它應該是微不足道的。 –

+0

diplodo,如果他們回答您的問題,請接受其中一個答案。謝謝。 – Bitwise

回答

3

我上實現進化樹的最大似然科學的軟件項目工作,並始終如一地碰上有關數值精度的問題。通常情況下,descepency是...

  1. 與模型相同的價值觀競爭的應用之間,
  2. 計算MLE得分手時
  3. 在計算中的操作順序。

這真的一切都歸結到三個號,甚至你的情況。在計算過程中縮放其指數時,小數和大數的多重處理會導致出現奇怪的結果。在(着名的)「What Every Computer Scientist Should Know About Floating-Point Arithmetic」中有很多關於這個的。但是,我所提到的就是缺點,如果這就是你所感興趣的全部。

總而言之,你所看到的問題嚴格來說就是在計算浮點/雙精度數字和運算時的數值問題功能。我對MATLAB不太熟悉,但它們可能有一個任意精度類型,可以給你更好的結果。

除此之外,讓他們象徵性的儘可能長的時間,如果你有關於這些變量的大小任意直覺(如a總是很相比大x),然後確保你明智地選擇括號的順序。

第一個方程應該是更好,因爲它在處理增加log s,而應該有更穩定之後,第二--although x^a讓我有點厭倦,因爲它會主宰方程,但在實踐中會不管怎麼說。

+0

此鏈接非常有用謝謝。 – diplodocuscoffeespot

4

根據您使用的號碼,這可能是一個數字的問題:如果你有非常小的數字組合非常大的數字,你可以得到不準確由於數字精確度的限制。

一種可能性是,你失去了一些精度在第二種情況下,因爲你是在不同尺度上操作。

+0

這聽起來像是怎麼回事。 – diplodocuscoffeespot