Gram-Charlier機率密度函數作圖和積分
Gram-Charlier機率密度函數如下:
f(x)=標準常態分配p.d.f.*[1+(資料偏態/6)*(x^3-3x)+(資料超額峰態/24)*(x^4-6x^2+3)]
請問有人知道如何用軟體(如Matlab或VB)畫出其機率密度曲線嗎?以及將這個p.d.f.從負無窮大一直積分到X等於某一數值,使其積分的面積(機率)=5%,該X值為何?
1 則回答
最佳解答
建議以 Excel 來做,
寫好的自訂函數後, 即可當一般工作表函數班使用 ~
參考檔案 : http://www.FunP.net/723144
(內含 圖, 表, 範例 ~ )
先開 Excel 工具 > 巨集 > 安全性 > 中
再開該檔, 開啟巨集
以下為 VBA 程式碼, 該程式如要寫在 VB, 需自行撰寫 常態分配 的機率函數(或呼叫 Excel) ~ 所以建議直接以 Excel 來做
---
Function F_GC(x, 偏態, 超額峰態) As Double
'任意 x 出現機率
F_GC = Application.NormDist(x, 0, 1, 0) _
* (1 (偏態 / 6) * (x ^ 3 - 3 * x) (超額峰態 / 24) * (x ^ 4 - 6 * x ^ 2 3))
End Function
Function P_GC(x, 偏態, 超額峰態, Optional Dt As Double) As Double
'x 左邊面積
Dim xTmp As Single
If Dt <= 0 Then Dt = 0.005 '如不指定下, 預設的積分單位
xTmp = -5 '由 -5 往右積分
Do While xTmp <= x
P_GC = P_GC F_GC(xTmp, 偏態, 超額峰態) * Dt
xTmp = xTmp Dt
Loop
End Function
Function A_GC(P, 偏態, 超額峰態, Optional Dt As Double) As Double
'反函數 : 已知面積, 求 x
Dim xTmp As Single, PTmp As Single
If Dt <= 0 Then Dt = 0.005 '如不指定下, 預設的積分單位
xTmp = -5 '由 -5 往右積分
Do While PTmp < P
PTmp = PTmp F_GC(xTmp, 偏態, 超額峰態) * Dt
xTmp = xTmp Dt
Loop
A_GC = xTmp
End Function
---