correlation.bas

来自「本程序用来计算单相关系数」· BAS 代码 · 共 53 行

BAS
53
字号
Attribute VB_Name = "Correlation"
' **************************************************
' *   计算单相关系数
' **************************************************

Function Correlation(n As Integer, n1 As Integer, X() As Single, Y() As Single) As Single
    
    Dim i As Integer
    Dim X0 As Single, Y0 As Single, XY As Single, XX As Single, YY As Single
    Dim Sx As Single, Sy As Single, Sxy As Single
    Dim c As Single
    
    On Error GoTo Warning
    
    X0 = 0: Y0 = 0
    XX = 0: YY = 0: XY = 0
    n1 = n
    
    '计算除去-999的值的样本数
    For i = 1 To n
        If Y(i) = -999 Then n1 = n1 - 1
    Next i
    
    For i = 1 To n
        
        '剔除-999的值
        If Y(i) <> -999 Then
            X0 = X0 + X(i): Y0 = Y0 + Y(i)
            XY = XY + X(i) * Y(i)
            XX = XX + X(i) * X(i)
            YY = YY + Y(i) * Y(i)
            Sx = XX - X0 * X0 / n1
            Sy = YY - Y0 * Y0 / n1
            Sxy = XY - X0 * Y0 / n1
        End If
    Next i
    c = Sx * Sy
    If c <= 0 Then
        R = 0
    Else
        R = Sxy / Sqr(c)
    End If
    
    Correlation = R
    Exit Function
    
Warning:
    MsgBox Err.Description, vbCritical
    Correlation = 2
    
End Function

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?