?? x2分布m.bas
字號:
Attribute VB_Name = "modMethod"
Option Explicit
'計算卡方分布函數和概率密度
'n:自由度
'x2:卡方值
'F:下側概率
'd:概率密度
Public Sub CX2(n As Integer, X2 As Double, F As Double, d As Double)
Dim PIS As Double, x As Double, CHS As Double, u As Double
Dim IAI As Integer, pp As Double, N2 As Integer, I As Integer
Const PI As Double = 3.14159265359
If X2 = 0 Then
F = 0: d = 0: Exit Sub
End If
PIS = Sqr(PI)
x = X2 / 2
CHS = Sqr(X2)
If (n \ 2) * 2 = n Then 'n為偶數
u = x * Exp(-x)
F = 1 - Exp(-x)
IAI = 2
Else 'n為奇數
u = Sqr(x) * Exp(-x) / PIS
Norm CHS, pp '調用正態分布函數計算過程
F = 2 * (pp - 0.5)
IAI = 1
End If
If IAI = n Then GoTo LL1 Else N2 = n - 2
For I = IAI To N2 Step 2
F = F - 2 * u / I
u = X2 * u / I
Next I
LL1:
d = u / X2
End Sub
'計算正態分布函數
'x:正態偏離點
'F:下側概率
Public Sub Norm(x, F)
Dim y As Double, ER As Double, Q As Double
Dim A
Const a1 As Double = 0.0705230784
Const a2 As Double = 0.0422820123
Const a3 As Double = 0.0092705272
Const a4 As Double = 0.0001520143
Const a5 As Double = 0.0002765672
Const a6 As Double = 0.0000430638
y = 0.707106781187 * Abs(x)
A = a4 + y * (a5 + y * a6)
A = a3 + y * A
A = a2 + y * A
A = a1 + y * A
ER = 1 - (1 + y * A) ^ (-16)
Q = 0.5 * ER
If x < 0 Then F = 0.5 - Q Else F = 0.5 + Q
End Sub
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -