?? 描述統(tǒng)計m2.bas
字號:
Attribute VB_Name = "modMethod"
'描述統(tǒng)計的計算方法
Option Explicit
'數(shù)組排序的希爾方法
'按升序
'Y():被排序的數(shù)組
Public Sub Sort_Shell(Y() As Double)
Dim Temp As Double, Gap As Integer
Dim I As Integer, K As Integer, Exchage As Boolean
K = UBound(Y) '獲取下標的上界
Gap = CInt((K + 1) / 2) '間距的初值
Do
Do
Exchage = False
For I = 1 To K - Gap
If Y(I) > Y(I + Gap) Then
Temp = Y(I)
Y(I) = Y(I + Gap)
Y(I + Gap) = Temp
Exchage = True
End If
Next I
Loop While Exchage
Gap = Gap / 2 '間距縮小一半
Loop While Gap >= 1
End Sub
'求描述統(tǒng)計數(shù)
'X(1 To M*N):原始統(tǒng)計數(shù)據(jù)
'M:統(tǒng)計數(shù)據(jù)的行數(shù)
'N:統(tǒng)計數(shù)據(jù)的列數(shù)
'R(1 To 10):描述統(tǒng)計結果
Public Sub Character(X() As Double, R() As Double)
Dim I As Integer, J As Integer, N As Integer
Dim Max As Double, Min As Double
Dim J3 As Integer, K3 As Integer
N = UBound(X)
'求極大值和極小值
Max = X(1): Min = X(1)
For I = 1 To N
If X(I) > Max Then Max = X(I)
If X(I) < Min Then Min = X(I)
Next I
'如果極差為0說明數(shù)列中所有的數(shù)據(jù)都相等
If Max - Min = 0 Then
R(1) = X(1): R(2) = X(1): R(3) = 99999999: R(4) = X(1)
R(5) = 0: R(6) = 0: R(7) = 0: R(8) = 0
R(9) = 99999999: R(10) = 99999999
Exit Sub
End If
'求算術平均值
R(1) = 0
For I = 1 To N
R(1) = R(1) + X(I)
Next I
R(1) = R(1) / N
'求中值
Sort_Shell X '用希爾方法排序
If (N \ 2) * 2 = N Then '數(shù)據(jù)個數(shù)為偶數(shù)
R(2) = (X(N \ 2) + X(N \ 2 + 1)) / 2
Else '數(shù)據(jù)個數(shù)為奇數(shù)
R(2) = X(N \ 2 + 1)
End If
'求眾數(shù)
'數(shù)列已經(jīng)按生序排好了,這時可以按簡單方法求眾數(shù)
R(3) = 99999999 '在不存在等數(shù)時眾數(shù)無意義
J3 = 1
K3 = 1
I = 1: J = I + 1
Do Until I >= N
While X(I) = X(J)
J3 = J3 + 1 '增加一個相等的數(shù)
J = J + 1 '將對下一個數(shù)比較
If J3 > K3 Then R(3) = X(I) '把當前最多的等數(shù)臨時作為眾數(shù)
Wend
If J3 > K3 Then K3 = J3 '在K3中保存最多的等數(shù)的個數(shù)
J3 = 1
I = J
J = I + 1
Loop
'求幾何平均數(shù)
For I = 1 To N
If X(I) <= 0 Then
R(4) = 99999999
GoTo 100
End If
Next I
R(4) = 0
For I = 1 To N
R(4) = R(4) + Log(X(I))
Next I
R(4) = Exp(R(4) / N)
100:
'求范圍
R(5) = Max - Min
'求平均差
R(6) = 0
For I = 1 To N
R(6) = R(6) + Abs(X(I) - R(1))
Next I
R(6) = R(6) / N
'求方差
R(7) = 0
For I = 1 To N
R(7) = R(7) + (X(I) - R(1)) ^ 2
Next I
R(7) = R(7) / (N - 1)
'求標準差
R(8) = Sqr(R(7))
'求偏度系數(shù)
R(9) = 0
For I = 1 To N
R(9) = R(9) + ((X(I) - R(1)) / R(8)) ^ 3
Next I
R(9) = R(9) * Sqr(1 / (6 * N))
'求峰度系數(shù)
R(10) = 0
For I = 1 To N
R(10) = R(10) + ((X(I) - R(1)) / R(8)) ^ 4
Next I
R(10) = Sqr(N / 24) * (R(10) / N - 3)
End Sub
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -