von lanina » Do 7. Apr 2022, 15:35
Hallo Strukturmotte,
danke für deine Antwort. Tatsächlich geht es mir nicht nur um die K-Means-Analyse, sondern auch um die Teststatistiken zur Bestimmung der Clusteranzahl. Deswegen habe ich es als Syntax geschrieben und nicht nur die K-Means über die Dialogfelder berechnet.
Das verrückte ist ja, dass der Befehl Sace ... anscheinend durch die neuen Spalten in meiner Codemaske ausgeführt wird - alllerdings im Output eben keine Cluster Centers angezeigt werden und stattdessen besagte Warnungen auftreten. Ich habe mir auch mal die Syntax der K-Means aus den Dialogfeldern ausgeben lassen - da gibt es keinen Savebefehl - ansonsten ist es nahezu identisch:
QUICK CLUSTER ev1 ev2 kv mv1
/MISSING=LISTWISE
/CRITERIA=CLUSTER(2) MXITER(100) CONVERGE(.0001)
/METHOD=KMEANS(NOUPDATE)
/PRINT INITIAL ANOVA CLUSTER DISTAN.
Da werden mir dann die Clusterzentren angezeigt. Ich würde aber gerne verstehen, wieso das mit dem Save-Befehl nicht klappt.
Das ist meine gesamte Syntax:
*Mittelwerte
means var= ev1 ev2 kv mv1.
*1 Clusterlösung
QUICK CLUSTER
ev1 ev2 kv mv1
/MISSING=LISTWISE
/CRITERIA=CLUSTER (1) MXITER (100) CONVERGE (.0001)
/METHOD=KMEANS (NOUPDATE)
/SAVE CLUSTER (c1) DISTANCE (d1)
/PRINT INITIAL ANOVA CLUSTER DISTAN.
*2 Clusterlösung
QUICK CLUSTER
ev1 ev2 kv mv1
/MISSING=LISTWISE
/CRITERIA=CLUSTER (2) MXITER (100) CONVERGE (.0001)
/METHOD=KMEANS (NOUPDATE)
/SAVE CLUSTER (c2) DISTANCE (d2)
/PRINT INITIAL ANOVA.
*3 Clusterlösung
QUICK CLUSTER
ev1 ev2 kv mv1
/MISSING=LISTWISE
/CRITERIA=CLUSTER (3) MXITER (100) CONVERGE (.0001)
/METHOD=KMEANS (NOUPDATE)
/SAVE CLUSTER (c3) DISTANCE (d3)
/PRINT INITIAL ANOVA.
*4 Clusterlösung
QUICK CLUSTER
ev1 ev2 kv mv1
/MISSING=LISTWISE
/CRITERIA=CLUSTER (4) MXITER (100) CONVERGE (.0001)
/METHOD=KMEANS (NOUPDATE)
/SAVE CLUSTER (c4) DISTANCE (d4)
/PRINT INITIAL ANOVA.
*5 Clusterlösung
QUICK CLUSTER
ev1 ev2 kv mv1
/MISSING=LISTWISE
/CRITERIA=CLUSTER (5) MXITER (100) CONVERGE (.0001)
/METHOD=KMEANS (NOUPDATE)
/SAVE CLUSTER (c5) DISTANCE (d5)
/PRINT INITIAL ANOVA.
*6 Clusterlösung
QUICK CLUSTER
ev1 ev2 kv mv1
/MISSING=LISTWISE
/CRITERIA=CLUSTER (6) MXITER (100) CONVERGE (.0001)
/METHOD=KMEANS (NOUPDATE)
/SAVE CLUSTER (c6) DISTANCE (d6)
/PRINT INITIAL ANOVA.
*7 Clusterlösung
QUICK CLUSTER
ev1 ev2 kv mv1
/MISSING=LISTWISE
/CRITERIA=CLUSTER (7) MXITER (100) CONVERGE (.0001)
/METHOD=KMEANS (NOUPDATE)
/SAVE CLUSTER (c7) DISTANCE (d7)
/PRINT INITIAL ANOVA.
*8 Clusterlösung
QUICK CLUSTER
ev1 ev2 kv mv1
/MISSING=LISTWISE
/CRITERIA=CLUSTER (8) MXITER (100) CONVERGE (.0001)
/METHOD=KMEANS (NOUPDATE)
/SAVE CLUSTER (c8) DISTANCE (d8)
/PRINT INITIAL ANOVA.
*9 Clusterlösung
QUICK CLUSTER
ev1 ev2 kv mv1
/MISSING=LISTWISE
/CRITERIA=CLUSTER (9) MXITER (100) CONVERGE (.0001)
/METHOD=KMEANS (NOUPDATE)
/SAVE CLUSTER (c9) DISTANCE (d9)
/PRINT INITIAL ANOVA.
*10 Clusterlösung
QUICK CLUSTER
ev1 ev2 kv mv1
/MISSING=LISTWISE
/CRITERIA=CLUSTER (10) MXITER (100) CONVERGE (.0001)
/METHOD=KMEANS (NOUPDATE)
/SAVE CLUSTER (c10) DISTANCE (d10)
/PRINT INITIAL ANOVA.
*Quadration von D1 bis D10
compute d1q=d1*d1.
compute d2q=d2*d2.
compute d3q=d3*d3.
compute d4q=d4*d4.
compute d5q=d5*d5.
compute d6q=d6*d6.
compute d7q=d7*d7.
compute d8q=d8*d8.
compute d9q=d9*d9.
compute d10q=d10*d10.
*die Streuungsquadratsummen werden berechnet. D1Q ist die Gesamtstreuung, D"q die Fehlerstreuung der 2 Clusterlösung etc...
means var=d1q to d10q/cells=sum.
*Elimination von Objekten, die wegen fehlender Werte nicht in die Clusteranalyse einbezogen wurden (dürfte bei mir nicht der Fall sein)
select if (c1=1).
aggregate outfile=* /*Die Daten werden aggregiert.
/break c1 /*Aggregierungsvariable
/nn = sum(c1) /*Fallzahl zur Berechnung von F-MAX
/dd1 to dd10 = sum (d1q to d10q). /* die quadrierten Distanzen werden aufsummiert.
*Eine neue Matrix befindet sich im Arbeitsspeicher. Sie besteht nur aus einem "Fall" und enthält Variablen c1, dd1 bis dd8 und nn. In dd (i) steht die Fehlerstreuung der i-Clusterlösung. dd1 ist gleich der Gesamtstreuung.
compute eta1=1-dd1/dd1. /*Berechnung der erklärten Streuungen entsprechend der im Text wiedergegebenen Formel.
compute eta2=1-dd2/dd1.
compute eta3=1-dd3/dd1.
compute eta4=1-dd4/dd1.
compute eta5=1-dd5/dd1.
compute eta6=1-dd6/dd1.
compute eta7=1-dd7/dd1.
compute eta8=1-dd8/dd1.
compute eta9=1-dd9/dd1.
compute eta10=1-dd10/dd1.
list var=eta1 to eta 10. /*Ausgabe der erklärten Streuungen
compute pre1=-99. /*Berechnung der PRE-Koeffizienten.
compute pre2=1-dd2/dd1. /*PRE für die 1-Clusterlösungen ist nicht definiert. Er erhält daher den Wert -99.
compute pre3=1-dd3/dd2.
compute pre4=1-dd4/dd3.
compute pre5=1-dd5/dd4.
compute pre6=1-dd6/dd5.
compute pre7=1-dd7/dd6.
compute pre8=1-dd8/dd7.
compute pre9=1-dd9/dd8.
compute pre10=1-dd10/dd9.
list var=pre1 to pre10. /*Ausgabe der PRE-Koeffizienten.
compute fmax1=-99. /* Berechnung der F-MAX-Statistiken
compute fmax2= ( (dd1-dd2)/(2-1) ) / (dd2 / (nn-2) ).
compute fmax3= ( (dd1-dd3)/(3-1) ) / (dd3 / (nn-3) ).
compute fmax4= ( (dd1-dd4)/(4-1) ) / (dd4 / (nn-4) ).
compute fmax5= ( (dd1-dd5)/(5-1) ) / (dd5 / (nn-5) ).
compute fmax6= ( (dd1-dd6)/(6-1) ) / (dd6 / (nn-6) ).
compute fmax7= ( (dd1-dd7)/(7-1) ) / (dd7 / (nn-7) ).
compute fmax8= ( (dd1-dd8)/(8-1) ) / (dd8 / (nn-8) ).
compute fmax9= ( (dd1-dd9)/(9-1) ) / (dd9 / (nn-9) ).
compute fmax10= ( (dd1-dd10)/(10-1) ) / (dd10 / (nn-10) ).
list var= fmax1 to fmax10. /*Ausgabe der F-MAX-Statistiken.
Viele Grüße
Lanina