MATLAB-kstest()-Funktion

Ammar Ali 15 Februar 2024
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

kstest Ergebnisbild 1

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

kstest Ergebnisbild 2

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().

Autor: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Verwandter Artikel - MATLAB Function