Endlich einfach statistische Tests und anderes direkt nativ in AutoIt durchführen.
Die UDF besitzt grob folgende Funktionalität:
- Wahrscheinlichkeitsverteilungen (Wahrscheinlichkeitsdichte, Verteilungsfunktion, Quantilfunktion) für folgende Verteilungen:
- stetige Gleichverteilung
- Normalverteilung/Standardnormalverteilung (+Zufallszahlengenerator)
- Student-T-Verteilung
- F-Verteilung
- Beta-Verteilung
- Chi²-Verteilung
- Kolmogorov-Smirnov-Verteilung
- Statistische Hypothesentests:
- Kolmogorow-Smirnow-Anpassungstest
- Lilliefors-Test
- unabhängiger Zweistichproben-t-Test
- unabhängiger Zweistichproben-Welch-Test
- F-Test
- Wilcoxon-Mann-Whitney-Test
- kombinierter Test mit Bedingungsprüfung für die einzelnen Tests
- Deskriptive Statistik:
- arithmetisches Mittel, Modalwert, Median, Quantile
- Standardabweichung, mittlere Abweichung, Standardfehler des Mittelwertes, Varianz, Schiefe, Wölbung
- Minima, Maxima, Spannweite, Summe, Anzahl
- Ränge, Histogramm
- Numerische Mathematik:
- Einparameter-Gleichungslöser und Nullstellensuche
- Einparameter-Integration
- Basisfunktionen:
- Gammafunktion (gamma, log-gamma, inverse gamma, unvollständige gamma)
- gaussche Fehlerfunktion (normale, komplementäre, inverse komplementäre)
- Betafunktion (beta, unvollständige beta, reguläre unvollständige beta, inverse reguläre unvollständige beta)
- Inverse von x * log(x)
Für den Anfang erst einmal ein Beispiel wie man z.B. damit statistisch prüfen kann ob die AutoIt-Random-Funktion tatsächlich gleichverteilte Zufallszahlen produziert:
AutoIt
#include "Stat.au3"
; Stichprobe erzeugen
Local Const $N = 1e4
Local $a_Sample[1e4]
Local $lower = 0, $upper = 100
For $i = 0 To $N -1
$a_Sample[$i] = Random($lower, $upper)
Next
; Auf Gleichverteilung testen:
Local $a_Params = ["CallArgArray", 0, $lower, $upper]
$a_Ret = _stat_test_KS($a_Sample, 0.05, _stat_uniform_cdf, $a_Params)
_ArrayDisplay($a_Ret, "Ist Random() gleichverteilt?")
MsgBox(0, "Ist Random() gleichverteilt?", ($a_Ret[5] ? "Random() ist gleichverteilt" : "Random ist nicht gleichverteilt"))
Alles anzeigen
Hier ein Beispiel mit dem man feststellen kann ob zwei Stichproben den gleichen Mittelwert (bei Normalverteilung) bzw. gleiche zentrale Tendenz aufweist.
Die Funktion checkt hierbei automatisch die jeweiligen Voraussetzungen für die internen Tests:
AutoIt
#include "Stat.au3"
;~ ; Teste ob zwei Stichproben gleiche Mittelwerte (bei Normalverteilung) bzw. zentrale Tendenzen besitzen
Local $a_Sample1[1000], $a_Sample2[1000]
For $i = 0 To 999
; erzeugt normalverteilte Stichproben (für t- und Welch-Test)
$a_Sample1[$i] = _stat_norm_ran(100, 5)
$a_Sample2[$i] = _stat_norm_ran(99.0, 4.5)
; erzeugt nichtnormalverteilte Stichproben (für Wilcoxon-Blablabla-Test)
;~ $a_Sample1[$i] = Random(0,100)
;~ $a_Sample2[$i] = Random(10,90)
Next
$a_Results = _stat_test_SampleEquality($a_Sample1, $a_Sample2)
_ArrayDisplay($a_Results, "test results")
MsgBox(0, "", $a_Results[4][1] ? "Stichproben haben im Mittel gleiche Werte" : "Stichproben haben im Mittel unterschiedliche Werte")
; ========== Testmuster von _stat_test_SampleEquality =============
; Wenn beide Stichproben normalverteilt (Lilliefors-Test):
; Wenn Varianzen gleich (F-Test):
; t-test
; Sonst:
; Welch-Test
; Sonst:
; Wilcoxon-Mann-Whitney-Test
Alles anzeigen