MATLAB-kstest()-Funktion
In diesem Tutorial wird das Finden der Testentscheidung der Nullhypothese für einen Datensatz erläutert, der verwendet wird, um zu überprüfen, ob ein Datensatz aus einer Standardnormalverteilung stammt oder nicht aus einer Standardnormalverteilung stammt, indem die Funktion kstest()
in MATLAB verwendet wird .
Matlab kstest()
Funktion
In Matlab wird die Funktion kstest()
verwendet, um den Testentscheid der Nullhypothese für einen Datensatz zu finden, mit dem überprüft wird, ob ein Datensatz aus einer Standardnormalverteilung stammt oder nicht aus einer Standardnormalverteilung stammt Verteilung. Die Funktion kstest()
verwendet den Kolmogorov-Smirnov-Algorithmus mit einem Beispiel, um die Testentscheidung zu finden.
Die grundlegende Syntax der Funktion kstest()
ist unten.
output = kstest(data)
Die Ausgabe der obigen Syntax kann 0 oder 1 sein. Wenn die Ausgabe 0 ist, lehnt die Funktion die Testentscheidung für die Nullhypothese nicht ab, und wenn die Ausgabe 1 ist, bedeutet dies, dass die Funktion die Testentscheidung abgelehnt hat.
Lassen Sie uns ein Beispiel für Prüfungsnoten diskutieren, um die Testentscheidung der Funktion kstest()
zu bestätigen. Wir können die Standardnormalverteilung und die empirische kumulative Verteilung in einem einzigen Diagramm darstellen, um sie zu vergleichen und die Testentscheidung zu bestätigen.
Sehen Sie sich den Beispielcode und die Ausgabe unten an.
clc
clear
load examgrades
data = grades(:,1);
a = (data-75)/10;
testResult = kstest(a)
cdfplot(a)
hold on
x = linspace(min(a),max(a));
plot(x,normcdf(x,0,1),'r--')
legend('Empirical-CDF','Normal-CDF')
Ausgang:
testResult =
logical
0
Wir haben den Datensatz examgrades
verwendet, der bereits in Matlab im obigen Code enthalten ist. Wir haben einen Mittelwert von 75 und eine Standardabweichung von 10 verwendet, um den Datensatz aus den gegebenen Noten zu erstellen, und wir haben ihn innerhalb der Funktion kstest()
übergeben, die 0 als Testentscheidungswert zurückgab, was bedeutet, dass die Funktion hat die Testentscheidung der Nullhypothese nicht zurückgewiesen.
Wenn wir uns das obige Ausgabebild ansehen, können wir sehen, dass die beiden Verteilungen nahe beieinander liegen, was bestätigt, dass die Testentscheidung korrekt ist. Wir haben die Funktion cdfplot()
verwendet, um die kumulative Verteilungsfunktion der Daten zu zeichnen, und die Funktion normcdf()
, um die Normalverteilung der gegebenen Daten zu finden.
Wir haben die Funktion legend()
verwendet, um Legenden zum Diagramm hinzuzufügen, um es leicht zu verstehen. Lassen Sie uns nun den Mittelwert im obigen Code von 75 auf 85 ändern und das Ergebnis überprüfen.
Sehen Sie sich den Beispielcode und die Ausgabe unten an.
clc
clear
load examgrades
data = grades(:,1);
a = (data-85)/10;
testResult = kstest(a)
cdfplot(a)
hold on
x = linspace(min(a),max(a));
plot(x,normcdf(x,0,1),'r--')
legend('Empirical-CDF','Normal-CDF')
Ausgang:
testResult =
logical
1
Im obigen Code hat die Funktion kstest()
1 zurückgegeben, was bedeutet, dass die Testentscheidung abgelehnt wird, und wir können dies auch anhand des obigen Bildes bestätigen, das die beiden Verteilungen deutlich zeigt und nicht gleich ist.
Wir können auch die hypothetische Verteilung spezifizieren, während wir die Testentscheidung unter Verwendung der zweispaltigen Matrix finden. Die erste Spalte enthält die Daten und die zweite Spalte enthält die kumulativen Verteilungswerte oder cdf
.
Wir müssen dies auch der Funktion kstest()
mit dem Argument CDF
mitteilen, wie unten gezeigt.
output = kstest(data,'CDF',cdfOfData)
Im obigen Code ist cdfOfData
eine zweispaltige Matrix, in der die erste Spalte die Daten und die zweite Spalte die cdf
dieser Daten sind. Wir können cdf
mit der Funktion cdf()
von Matlab finden.
Wir können die hypothetische Verteilung auch mit einem Wahrscheinlichkeitsverteilungsobjekt spezifizieren, das wir mit der Funktion makedist()
erstellen können. Überprüfen Sie diesen Link für weitere Details über die Funktion makedist()
.
Wir müssen das Verteilungsobjekt innerhalb der Funktion kstest()
mit dem Argument CDF
übergeben, wie unten gezeigt.
output = kstest(data,'CDF',cdfObject)
Wir können die Testentscheidung auch auf verschiedenen signifikanten Ebenen finden, indem wir das Argument Alpha
verwenden und seinen Wert von 0 auf 1 setzen. Die Funktion kstest()
gibt auch ein neues Argument p
zurück, das die Wahrscheinlichkeit von a zeigt Testentscheidung.
Ein Beispiel für die Funktion kstest()
mit dem Argument Alpha
ist unten dargestellt.
[output, p] = kstest(data,'CDF',cdfObject, 'Alpha', 0.2)
Wir können die Testentscheidung auch mit einer alternativen Hypothese überprüfen, indem wir das Argument Tail
verwenden, bei dem die Funktion kstest()
0 oder 1 zugunsten der alternativen Hypothese zurückgibt. Der Wert des Tail
-Arguments kann ungleich, grösser oder kleiner sein.
Standardmäßig ist der Wert des Arguments Schwanz
auf ungleich
gesetzt, was bedeutet, dass der cdf
der Grundgesamtheit und der cdf
der hypothetischen Verteilung nicht gleich sind. Der größere
Wert setzt den cdf
der Population größer als den cdf
der hypothetischen Verteilung, und der kleinere
Wert setzt den cdf
der Population kleiner als den hypothetischen cdf
.
Ein Beispiel für die Funktion kstest()
mit dem Argument Tail
ist unten dargestellt.
output = kstest(data, 'Tail', 'larger')
Die Funktion kstest()
gibt vier Gesamtargumente zurück, die in der folgenden Syntax gezeigt werden.
[h,p,ksstat,cv] = kstest(data)
Die ersten beiden Argumente der Funktion kstest()
kennen wir bereits.
Das Argument ksstat
enthält nichtnegative Scaler-Werte der Statistik des Hypothesentests. Das Argument cv
hat den kritischen Wert, einen nichtnegativen Skalar.
Matlab enthält auch die Funktion kstest2()
, die verwendet wird, um die Entscheidung zweier Vektoren unter Verwendung des Kolmogorov-Smirnov-Algorithmus mit zwei Beispielen zu testen.
Überprüfen Sie diesen Link für weitere Details über die Funktion kstest()
.