x`<0 時標準正態 CDF 的對數近似值
有誰知道 x<0 的標準正態 CDF 的對數的近似值?
我需要實現一個非常快速計算它的算法。當然,最直接的方法是首先計算 CDF(我可以在 Wikipedia 上找到合適的簡單近似值),然後取其對數。顯然,我想避免計算兩個特殊函數的時間成本,更不用說微小的中間值(尾部)排除了使用比浮點運算快得多的定點運算。
我知道各種統計函數有數百種近似值,但事實上這是一個的對數,因此更難找到一個。如果有人能給我指出一個,或者我可能找到的來源,我將不勝感激。
即使是一個簡單的最小二乘立方也適合 log(Φ(x)) 值 x 介於 -5 和 0 之間似乎是相當充足的。
只是為了快速了解它,我生成了 x 在 -5 和 0 之間每 0.01 的值,並嘗試最小二乘三次和五次(5 次)多項式擬合到 log2(Φ(x)) . 我想你可以像我一樣輕鬆地做到這一點,所以我不會強調這一點。
最大絕對誤差 log2(Φ(x)) 因為五次是 5.2×10−4 ,發生在零處。
[不完全清楚你所說的“在 0.2 + 10% 左右”是什麼意思。如果您可以詳細說明以明確您的標準,那麼我可以詳細說明這一點,並可能調整權重以更好地優化您的標準。]
在評估多項式時,如果速度很重要,您應該牢記霍納的方法。
正如紅衣主教所建議的那樣,情節非常具有說明性。既然我已經生成了一個,我應該把它放在這裡:
這是(有符號的)錯誤(日誌中的絕對比例錯誤):
它看起來和我們期望的最小二乘擬合一樣。不合身度相當適中;出於許多目的,這很好。
另一種方法是您可以將上尾的 Karagiannidis 和 Lioumpas 近似(參見此處)翻轉到下尾(通過替換 x 經過 −x 在他們的公式中)並記錄日誌:
Q(x)≈(1−e−1.4x)e−x221.135√2πx,x>0
所以我們得到
ln(Φ(x))≈ln(1−e1.4x)−ln(−x)−x22−1.04557
要獲得以 2 為底的日誌,只需將結果乘以 log2(e)
這不如我提到的五次擬合準確,並且由於對數和求冪,評估可能更慢。不過,它又好又短,有一些優點。請注意,它不是為對數刻度設計的。
原始論文有 K&L 的公式 6:
(1−e−Ax)e−x2B√πx≈erfc(x)
為了 x 他們建議的 [0,20] 範圍內的值 A=1.98 和 B=1.135 .
劃分 x 通過通過 √2 獲得 Q ,這表明維基百科頁面上的公式( 1.98/√2≈1.40007 )
讓我們看看對數尺度的近似質量。
紫色虛線是 K&L 近似值。現在讓我們看看錯誤:
錯誤的大小比我們的五次要大得多。事實上它幾乎是線性的 x 範圍的左半部分錶明我們可以通過添加約 0.02x 或者 0.025x 到日誌中的公式 - 但這會使接近 -1 的值的近似值更糟。是否會這樣做取決於所需的特徵。