⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 x2分布m.bas

📁 数理统计程序集
💻 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 + -