You should not expect to get the same averages, mathematically, because population sizes are probably different. This is best illustrated by an example.
Suppose you have 15 numbers: 10, 10, 10, 10, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
A) The average of all of them together is 60 / 15 = 4
B) The average of the first 5 is 50/5 = 10
c) The average of the last 10 is 10/10 = 1
BUT - the average of the averages B and C = (10 + 1)/2 = 11/2 = 5.5
There is a big difference between 4 and 5.5, and your differences are due to the same thing. an "Average of Averages" has to be regarded carefully with respect to what it is really telling you.
Here is a little routine I wrote to demonstrate:
Code:
Sub Averages()
Dim Numbers(100) As Integer, J As Integer
Dim sum1 As Single, sum2 As Single, sum3 As Single, sum4 As Single, SumAll As Single, SumAverage As Single
SumAll = 0
For J = 1 To 100
Numbers(J) = Int(Rnd * 100)
SumAll = SumAll + Numbers(J)
Next J
Debug.Print "Average of all 100 is " & SumAll / 100#
sum1 = 0
sum2 = 0
sum3 = 0
sum4 = 0
SumAverage = 0
For J = 1 To 25
sum1 = sum1 + Numbers(J)
Next J
SumAverage = SumAverage + sum1 / 25
Debug.Print "Average 1 - 26 = " & sum1 / 25
For J = 26 To 50
sum2 = sum2 + Numbers(J)
Next J
SumAverage = SumAverage + sum2 / 25
Debug.Print "Average 26 - 50 = " & sum2 / 25
For J = 51 To 75
sum3 = sum3 + Numbers(J)
Next J
SumAverage = SumAverage + sum3 / 25
Debug.Print "Average 51 - 75 = " & sum3 / 25
For J = 76 To 100
sum4 = sum4 + Numbers(J)
Next J
SumAverage = SumAverage + sum4 / 25
Debug.Print "Average 76 - 100 = " & sum4 / 25
Debug.Print "Average of averages for 4 equal populations = " & SumAverage / 4
Debug.Print
'============================================
Debug.Print "Average of all 100 is " & SumAll / 100#
sum1 = 0
sum2 = 0
sum3 = 0
sum4 = 0
SumAverage = 0
For J = 1 To 10
sum1 = sum1 + Numbers(J)
Next J
SumAverage = SumAverage + sum1 / 10
Debug.Print "Average 1 - 10 = " & sum1 / 10
For J = 11 To 30
sum2 = sum2 + Numbers(J)
Next J
SumAverage = SumAverage + sum2 / 20
Debug.Print "Average 11 - 30 = " & sum2 / 20
For J = 31 To 60
sum3 = sum3 + Numbers(J)
Next J
SumAverage = SumAverage + sum3 / 30
Debug.Print "Average 31 - 60 = " & sum3 / 30
For J = 61 To 100
sum4 = sum4 + Numbers(J)
Next J
SumAverage = SumAverage + sum4 / 40
Debug.Print "Average 61 - 100 = " & sum4 / 40
Debug.Print "Average of averages for 4 non-equal populations = " & SumAverage / 4
Debug.Print
End Sub
Copy that into a module; when you run it you will can see what I mean. If the populations of the groups (I used 4) are ALL the same, then the "averages of averages" is the same as the average of the whole, otherwise it isn't.