Test op normaliteit
- 13/07/2007
Voorbeeldbestanden bij dit artikel: | |
Inleiding
Ook deze VBA-code gaat over statistiek. Als je een aantal getallen hebt (een steekproef), en je wil testen of die normaal verdeeld zijn, dan gebruik een zogenaamde Jarque-Bera test. Uitleg over de Normaalverdeling - één van de hoekstenen in de statistiek - vind je op deze pagina. Een voorbeeld van de normaalverdeling is de lengte van de mensen. De lengte van de meeste mensen schommelt rond het gemiddelde, en steeds minder en minder mensen hebben een lengte die verder en verder afwijkt van dat gemiddelde. Je krijgt als grafiek de mooie Bell-shape. Hier is de uitwerking ervan in Excel, met 4 extra functies:
Public Const sFout As String = "Too few observations for a reliable Jarque-Bera test"
Function JBSTAT(data As Range)' Wim GielisDim n As Long Dim i As Long Dim elem As Double Dim S As Double, K As Double Dim DataMean As Double, DataStDev As Double n = data.SpecialCells(xlCellTypeConstants, 1).Count If n > 30 Then DataMean = WorksheetFunction.Average(data) DataStDev = WorksheetFunction.StDev(data) For i = 1 To n elem = (data(i) - DataMean) / DataStDev S = S + elem ^ 3 K = K + elem ^ 4 Next i JBSTAT = n * (((S / n) ^ 2) / 6 + ((K / n - 3) ^ 2) / 24) Else: JBSTAT = sFout End If
' 01/18/2007
' Functies om te testen of data normaal verdeeld zijn:
' Jarque-Bera hypothesis test of normality
' Aangepaste en uitgebreide code van: Andreas Steiner
' http://www.andreassteiner.net/performanceanalysis
' Also on https://www.wimgielis.comEnd FunctionFunction JBpWaarde(data As Range)JBpWaarde = IIf(JBSTAT(data) = sFout, sFout, Round(WorksheetFunction.ChiDist(JBSTAT(data), 2), 2))End FunctionFunction JBTEST(data As Range, SignifLevel As Double)JBTEST = IIf(Not (IsNumeric(JBSTAT(data))), sFout, (SignifLevel < JBpWaarde(data)))End FunctionFunction JBKritiekeWaarde(SignifLevel As Double) As DoubleJBKritiekeWaarde = Round(WorksheetFunction.ChiInv(SignifLevel, 2), 2)End Function
Voorbeeldbestand en code
Ik heb alles samengezet in een bestand bovenaan de pagina, inclusief een voorbeeld.