1
Folie
1 Einleitung 3 1.1 Problemstellung 3 1.2 Einteilung der Verfahren 4
2 MDS mit R-Toolbox 5 2.1 Eingabe von Unähnlichkeitsmatrizen 6
3 Ablauf einer MDS 7 3.1 Verschiedene Unähnlichkeitsmatrizen 8 3.2 Erstellen von Unähnlichkeitsmatrizen mit R 9 3.3 Zwei-Phasen-Iterationsalgorithmus 10 3.4 Beurteilung der Güte einer MDS-Lösung 11 3.4 Berücksichtigung zusätzlicher Information (Präferenzurteile, Eigenschaftsurteile) 17 3.5 Anwendungsempfehlungen 19 4 Beispiele 21 4.1 Metrische klassische MDS 21 4.2 Ordinale klassische MDS 25 4.3 Replizierte MDS (RMDS) 31 4.4 Gewichtete MDS (INDSCAL) 41 4.5 Einbeziehung von Eigenschaftsurteilen, Vektormodell 49 4.6 Einbeziehung von Präferenzurteilen, Vektormodell 53 4.7 Einbeziehung von Präferenzurteilen, Idealpunktmodell 55
Multidimensionale Skalierung (MDS) Dr. Markus Stöcklin, Universität Basel, Fakultät für Psychologie
2
1 EinleitungDer Theorieteil stützt sich auf:Backhaus, K., Erichson, B., Plinke, W. & Weiber, R. (2003). Multivariate Analysemethoden. Eine anwendungsorientierte Einführung. Berlin: Springer. Borg, I. & Groenen, P. (1997). Modern Multidimensional Scaling. Theory and Applications. New York: Springer.
1.1 ProblemstellungAusgangspunkt der MDS sind Ähnlichkeitsurteile, d.h. ein Proband oder eine Gruppe von Probanden muss Objekte bezüglich ihrer Ähnlichkeit beurteilen. Die relevanten Eigenschaften können unbekannt sein. Das Ziel einer MDS ist es, die Objekte in einem Raum möglichst niedriger Dimension so darzustellen, dass ihre Abstände die Ähnlichkeitsbeziehungen möglichst unverzerrt wiedergeben. Je näher zwei Objekte in diesem Raum beieinanderliegen, desto ähnlicher sind sie.
Beispiele:• Beurteilung von Produkten durch Konsumenten• Beurteilung von Politikern durch Wähler
3
1.2 Einteilung der VerfahrenKlassische MDS (CMDS)Es wird nur eine Unähnlichkeitsmatrix analysiert
Replizierte MDS (RMDS)Es werden mehrere Unähnlichkeitsmatrizen gemeinsam analysiert. Man geht davon aus, dass diese Matrizen Varianten einer einzigen sind, für welche die Koordinaten geschätzt werden. Individuelle "Verzerrungen" im Antwortverhalten werden berücksichtigt.
Gewichtete MDS (INDSCAL)Es werden wiederum mehrere Unähnlichkeitsmatrizen gemeinsam analysiert. Nebst individuellen "Verzerrungen" im Antwortverhalten werden auch individuelle Unterschiede in den zugrundeliegenden Wahrnehmungs- und Kognitionsprozessen berücksichtigt, indem pro Proband auch die Gewichtung der Dimensionen berechnet wird.
4
2 MDS mit R-ToolboxDie Syntax zur MDS findet man auf der Hauptseite der R-Toolbox unter "MDS". Sie können zwischen "Eine Unähnlichkeitsmatrix" für die CMDS und "Mehrere Unähnlichkeitsmatrizen" für RMDS und INDSCAL wählen.Ausgangsmaterial für eine MDS ist eine Unähnlichkeitsmatrix oder mehrere Unähnlichkeitsmatrizen. Die Struktur für die Eingabe dieser Matrizen wird auf der nächsten Folie an einem Beispiel gezeigt.Im Eingabeteil können Sie unter "Skalenniveau" das Skalenniveau wählen. In den meisten Fällen verwendet man "ordinal". Unter "k" geben Sie die Anzahl zu berücksichtigender Dimensionen für die Darstellung der Objekte ein. Über "ties" bestimmen Sie, wie verbundene Ränge behandelt werden sollen. In den meisten Fällen wählt man "primary", d.h. verbundene Ränge werden aufgebrochen. Wenn Sie mehrere Unähnlichkeitsmatrizen haben, müssen Sie zusätzlich unter "constraint" die MDS-Variante wählen und unter "n.mat" die Anzahl der Unähnlichkeitsmatrizen angeben (RMDS: constraint="idioscal", INDSCAL: constraint="indscal").Anschliessend können Sie die Syntax unterhalb des Eingabeteils kopieren und ausführen lassen. Es können der Konfigurationsplot und die Diagnostikplots erstellt werden.Im Tabellen-Output ist das Stress-1 Mass enthalten. Es werden auch die quadrierte Korrelation zwischen Disparitäten und Distanzen sowie verschiedene Indikatoren für die Güte resp. Stabilität der Lösung ausgegeben. Unterhalb des Output-Beispiels ist angegeben, wie man zusätzlichen Output anfordern kann.Die Beispiele werden mit der Syntax der R-Toolbox gerechnet. Die Bedeutung des Outputs wird im Rahmen der Beispiele erläutert.
5
2.1 Eingabe von UnähnlichkeitsmatrizenDie verwendeten Verfahren gehen von symmetrischen Unähnlichkeitsmatrizen aus.Erste Zeile: VariablenbezeichnungenUnähnlichkeitsmatrix: In der Hauptdiagonalen stehen Nullen. Die obere Dreiecksmatrix darf auch Nullen enthalten.Mehrere Unähnlichkeitsmatrizen werden unmittelbar untereinander geschrieben. Die Variablenbezeichnungen braucht es nur in der ersten Zeile.
dro psy gef maf ide bet fpr erz sch kin ehe for0 0 0 0 0 0 0 0 0 0 0 011 0 0 0 0 0 0 0 0 0 0 08 8 0 0 0 0 0 0 0 0 0 021 21 19 0 0 0 0 0 0 0 0 09 1 4 18 0 0 0 0 0 0 0 017 17 15 17 10 0 0 0 0 0 0 010 1 8 21 4 21 0 0 0 0 0 010 12 14 21 9 17 14 0 0 0 0 013 14 15 21 11 8 13 1 0 0 0 07 4 9 21 4 21 5 8 4 0 0 010 9 10 21 9 19 8 7 4 5 0 016 17 18 16 2 19 21 20 16 16 20 00 0 0 0 0 0 0 0 0 0 0 08 0 0 0 0 0 0 0 0 0 0 07 14 0 0 0 0 0 0 0 0 0 020 21 19 0 0 0 0 0 0 0 0 08 1 6 20 0 0 0 0 0 0 0 012 16 14 17 18 0 0 0 0 0 0 08 3 16 21 1 19 0 0 0 0 0 07 17 10 21 7 17 10 0 0 0 0 08 10 15 21 9 16 17 2 0 0 0 06 8 12 21 4 18 7 3 6 0 0 013 12 8 21 7 16 5 3 3 3 0 018 21 18 11 3 15 21 17 14 19 18 0
Variablen
Matrix 1
Matrix 2
6
3 Ablauf einer MDS
Messung von Ähnlichkeiten
Wahl des Distanzmodells
Ermittlung der Konfiguration
Zahl und Interpretation der Dimensionen
Aggregation von Personen
Methode der RangreihungAnkerpunktmethodeRatingverfahren
Varianten der Minkowski-Metrik
Iteratives Verfahren, welches den Stress minimiert (S-Stress)
Zahl der ÄhnlichkeitenZahl der Koordinaten
>2
Abnahme des Stress-Wertes
RMDS, WMDS (INDSCAL)
7
3.1 Verschiedene Unähnlichkeitsmatrizen
Symmetrische Matrizen: Differenz (A,B) = Differenz (B,A) Z.B. Methode der Rangreihung, Ratingverfahren
Asymmetrische Matrizen: Differenz (A,B) ≠ Differenz (B,A) Z.B. Ankerpunktmethode
Matrixbedingte Daten: Alle Werte der Matrix sind gleich skaliert
Zeilenbedingte Daten: Jede Zeile kann anders skaliert sein Z.B. Ankerpunktmethode
8
3.2 Erstellen von Unähnlichkeitsmatrizen mit R
Normalerweise liegen die Daten für eine MDS in Form einer Unähnlich-keitsmatrix vor.
Unähnlichkeitsmatrizen lassen sich mithilfe von R auch aus den Rohdaten erstellen. Die verwendete Funktion dist() berechnet Distanzen zwischen den Zeilen. Es können verschiedene Distanzmasse gewählt werden (method="euclidean", "maximum", "manhattan", "canberra", "binary", "minkowski"). Wenn die Variablen unterschiedlich skaliert sind, sollte man sie zuerst standardisieren (z-Transformation).
Wenn man eine Unähnlichkeitsmatrix der Variablen möchte, muss die Matrix mit den Variablen in den Spalten zuerst transponiert werden.
9
# Datensatz ladendata<-read.table(file="https://mmi.psycho.unibas.ch/r-toolbox/data/Faktorenanalyse/Faktorenanalyse2.txt", header=TRUE)
data.z <- scale(data[,2:6]) # Spalten der zu berücksichtigenden Variablen eingebenrownames(data.z) <- data$City # Zeilennamen hinzufügend <- dist(data.z, method = "euclidean") # Matrix mit den euklidischen Distanzen zwischen den Zeilen von data.z
3.3 Zwei-Phasen-Iterationsalgorithmus
�
St −St+1 < ε
Ende
ja
Start: definiere Startkonfiguration
Koordinatenkonfiguration X ist nicht zu verändern
Finde eine zulässige monotone Transformation der Proximitäten, welche den Stress S minimiert
Finde Koordinatenkonfiguration X, die den Stress S minimiert
Die monotone Transformation der Proximitäten ist nicht zu verändern
nein
10
�
STRESS1 =dkl − ˆ d kl( )2
∑∑
dkl2∑∑
, STRESS2 =dkl − ˆ d kl( )2
∑∑
dkl − d ( )∑∑2
�
S − STRESS SPSS : ALSCAL( ) =dkl
2 − ˆ d kl2( )2
∑∑ˆ d kl
4∑∑
BegriffeProximitäten: Unähnlichkeiten/ÄhnlichkeitenDisparitäten: monoton transformierte Unähnlichkeiten ( )Distanzen: geschätzte Distanzen im MDS-Raum (d)
�
ˆ d
3.4 Beurteilung der Güte einer MDS-Lösung
In der Regel wird eine zwei- oder dreidimensionale Lösung angestrebt.
Die Anzahl der Punkte sollte mehr als das Vierfache der Dimension der MDS-Lösung betragen (vgl. auch Backhaus et al. (2003), S. 633).
Anhaltspunkte zur Beurteilung des Stress 1-Masses: Stress Güte der Lösung0.200 poor0.100 fair0.050 good0.025 excellent0.000 perfect
Eine zusätzliche Dimension sollte den Stress beträchtlich verringern.
11
Einflussfaktoren für das Stressmass
• Je grösser die Anzahl Punkte, desto grösser ist in der Regel der Stress
• Je grösser die Anzahl Dimensionen, desto niedriger ist der Stress
• Je grösser der Fehler in den Daten, desto höher ist der Stress
• Je mehr verbundene Ränge in den Daten einer ordinalen MDS mit schwacher Monotonie, desto niedriger ist in der Regel der Stress
• Je mehr Missings in den Daten, desto niedriger ist in der Regel der Stress
• Eine Intervall-MDS hat in der Regel einen höheren Stress als eine ordinale MDS
12
Durchschnittliche Stress-1-Masse und deren Standardabweichungen für zufällig gewählte Proximitäten von n Objekten
Mit Hilfe dieser Angaben lässt sich abschätzen, ob der Stress für eine MDS-Lösung signifikant besser ist als derjenige für zufällige Daten.
13
Einfluss unterschiedlicher Fehlervarianzen für die Punkte im Wahr-nehmungsraum der Probanden auf den StressVorgehen: (1) Zufallsauswahl von n Punkten aus einem (Hyper-) Einheitsquadrat oder einem (Hyper-)Einheitskreis. (2) Jede Koordinate wird mit einem N(0,σ2)-verteilten Fehler versehen, was zu fehlerbehafteten Distanzen führt. (3) Diese werden dann als Proximitäten verwendet.
14
Die quadrierte Korrelation (RSQ) zwischen transformierten Proximitäten (Disparitiäten) und den Distanzen im Plot (Distances) sollte möglichst nahe bei 1 liegen. RSQ kann als den durch die Distanzen erklärten Varianzanteil der Disparitäten interpretiert werden.
Der Scatterplot of Linear Fit gibt einen optischen Eindruck, wie gut transformierte Proximitäten und effektive Distanzen übereinstimmen. Im Idealfall liegen alle Punkte auf einer Linie.
15
16
3.5 Berücksichtigung zusätzlicher Information Einbeziehung von Präferenzurteilen! Idealpunkt-Modell � Es gibt eine optimale Ausprägung
! Vektor-Modell � Je mehr, desto besser
Der Idealpunkt markiert die von einer Person als ideal empfundene Kombination der Wahrnehmungsdimen-sionen.
Der Präferenzvektor zeigt an, in welcher Richtung sich die Präferenz einer Person erhöht.
!
!
!
!
!
!
!
! !
D2
D1
+VP1
+VP2
+VP3!
!
!
!
!
!!
!
!
!
! !
!
D2
D1
VP1
VP2
VP3
17
Einbeziehung von Eigenschaftsurteilen! Idealpunkt-Modell � Es gibt eine optimale Ausprägung
! Vektor-Modell � Je mehr, desto besser
Der Idealpunkt markiert die ideale Kombination der Wahrnehmungsdimensionen für eine Eigenschaft.
Der Eigenschaftsvektor zeigt an, in welcher Richtung sich die Werte der entsprechenden Eigenschaften am stärksten erhöhen.
!
!
!
!!
!
!
!
! !
!
D2
D1
+E1
+E2
+E3
!
!
!
!!
!
!
!
! !
!
D2
D1
E1
E2
E3
18
3.7 Anwendungsempfehlungen
1. Die Zahl der Objekte soll nicht zu klein sein (möglichst mehr als 8).
2. Die Erhebung der Ähnlichkeitsdaten wird durch Anwendung des Ratingverfahrens erleichtert. Für individuelle Analysen aber sind i.d.R. Rangdaten erforderlich.
3. Bei der Wahl des Distanzmodells sollte die Euklidische Metrik bevorzugt werden.
4. Es sollten nicht mehr als 2 oder 3 Dimensionen vorgegeben werden.
5. Für aggregierte Analysen ist ein Verfahren mit Replikationen zu bevorzugen.
19
20
4.1 Metrische klassische MDS (Norusis, 1997, S. 115)Gegeben ist die Matrix der Flugdistanzen zwischen 10 amerikanischen Städten, d.f. Matrixtyp: eine symmetrische Unähnlichkeitsmatrix, Skalenniveau: verhältnis, Proximitätsmass: euklidische Distanzen# Datensatz einlesendata<-read.table(file="https://mmi.psycho.unibas.ch/r-toolbox/data/MDS/MDS1.txt", header=TRUE) Skalenniveau <- "ratio" # "ratio", "interval", "ordinal" oder "mspline"k <- 2 # Anzahl Dimensionen eingebenties <- "primary" # verbundene Ränge: "primary" break ties, "secondary" keep tiesModel: Symmetric SMACOF Number of objects: 10 Stress-1 value: 0.002 Number of iterations: 2
$`quadrierte Korrelation zwischen Disparitäten und Distanzen`[1] 0.9999838
$StabilitätCall: jackknife.smacofB(object = res)SMACOF JackknifeNumber of objects: 10 Value loss function: 0.0607754 Number of iterations: 14
Stability measure: 0.9988674 Cross validity: 0.9999918 Dispersion: 0.001140856
$PermutationstestSMACOF Permutation TestNumber of objects: 10 Number of replications (permutations): 100 Observed stress value: 0.002 p-value: 0
$`Mittelwert des Stress von 100 Zufallskonfigurationen`[1] 0.3254738
4 Beispiele
21
Grafische Darstellung der MDS-Lösung
22
-0.5 0.0 0.5 1.0
-0.5
0.0
0.5
Configuration Plot
Dimension 1
Dim
ensi
on 2 Atlanta
Chicago
Denver
Houston
Los.Angeles
Miami
Newyork
San.Franzisko
Seattle
Washington.D.C
Diagnostikplots
23
-0.5 0.0 0.5 1.0-0.4
-0.2
0.0
0.2
0.4
SMACOF Jackknife Plot
Dimension 1
Dim
ensi
on 2
Atlanta
Chicago
Denver
HoustonLos.AngelesMiami
Newyork
San.Franzisko
SeattleWashington.D.C
500 1500 2500
0.5
1.0
1.5
Shepard Diagram
Dissimilarities
Con
figur
atio
n D
ista
nces
0.5 1.0 1.5
0.5
1.0
1.5
Residual Plot
Normalized Dissimilarities (d-hats)
Con
figur
atio
n D
ista
nces
05
1015
2025
3035
Stress Decomposition Chart
Stre
ss P
ropo
rtion
(%)
Objects
Seattle
Los.AngelesMiamiSan.Franzisko
Newyork
HoustonWashington.D.CAtlantaDenver
Chicago
24
4.2 Ordinale klassische MDS (vgl. Borg, 1981, S. 93)
Ekman (1954) überprüfte mit MDS, ob sich der Farbkreis empirisch bestätigen lässt (vgl. Borg, 1981). Zu diesem Zweck mussten 31 Probanden 14 Farben im vollständigen Paarvergleich bezüglich ihrer Ähnlichkeit auf einer Skala von 0 = „keinerlei Ähnlichkeit“ bis 4 = „Identität“ einschätzten. Die Rating Scores für jedes Paar wurden dann über die 31 Probanden gemittelt und die 5-punkt Skala auf den Bereich von 0 bis 1 transformiert und in eine Unähnlichkeitsmatrix umgerechnet.# Datensatz einlesendata<-read.table(file="https://mmi.psycho.unibas.ch/r-toolbox/data/MDS/MDS2.txt", header=TRUE)
Skalenniveau <- "ordinal" # "ratio", "interval", "ordinal" oder "mspline"k <- 2 # Anzahl Dimensionen eingebenties <- "primary" # verbundene Ränge: "primary" break ties, "secondary" keep ties
25
26
MDS-OutputModel: Symmetric SMACOF Number of objects: 14 Stress-1 value: 0.023 Number of iterations: 22
$`quadrierte Korrelation zwischen Disparitäten und Distanzen`[1] 0.9967098$StabilitätCall: jackknife.smacofB(object = res)SMACOF JackknifeNumber of objects: 14 Value loss function: 8.950178 Number of iterations: 79
Stability measure: 0.872226 Cross validity: 0.9880464 Dispersion: 0.1397275
$PermutationstestSMACOF Permutation TestNumber of objects: 14 Number of replications (permutations): 100 Observed stress value: 0.023 p-value: 0
$`Mittelwert des Stress von 100 Zufallskonfigurationen`[1] 0.2503349
27
Grafische Darstellung der MDS-Lösung
-0.5 0.0 0.5
-0.6
-0.4
-0.2
0.0
0.2
0.4
0.6
Configuration Plot
Dimension 1
Dim
ensi
on 2
dm434dm445
dm465dm472
dm490
dm504
dm537dm555
dm584
dm600
dm610
dm628dm651
dm674
28
library(plotrix)plot(res, plot.type = "confplot")abline(h=0, lty=2); abline(v=0, lty=2)circle <- fitCircle(res$conf[,1], res$conf[,2])draw.circle(circle$cx, circle$cy, radius = circle$radius, border = "gray")
Mit eingefügtem Kreis
-0.5 0.0 0.5
-0.6
-0.4
-0.2
0.0
0.2
0.4
0.6
Configuration Plot
Dimension 1
Dim
ensi
on 2
dm434dm445
dm465dm472
dm490
dm504
dm537dm555
dm584
dm600
dm610
dm628dm651dm674
29
par(mfrow=c(2, 2))# Jacknife Plotplot(res.jk, hclpar = list(c = 0, l = 0))# Shepard-Diagrammplot(res, plot.type = "Shepard")# Rsiduenplotplot(res, plot.type = "resplot", main="Residual Plot")# Stressplot: Aufteilung des Stress auf die Objekteplot(res, plot.type = "stressplot")
Diagnostikplots
-0.5 0.0 0.5
-0.6
-0.2
0.2
0.6
SMACOF Jackknife Plot
Dimension 1
Dim
ensi
on 2
dm434dm445
dm465dm472
dm490
dm504dm537dm555
dm584
dm600
dm610
dm628dm651dm674
0.2 0.4 0.6 0.8 1.0
0.2
0.6
1.0
1.4
Shepard Diagram
Dissimilarities
Con
figur
atio
n D
ista
nces
0.2 0.6 1.0 1.4
0.2
0.6
1.0
1.4
Residual Plot
Normalized Dissimilarities (d-hats)
Con
figur
atio
n D
ista
nces
510
15
Stress Decomposition Chart
Stre
ss P
ropo
rtion
(%)
Objects
dm555
dm610
dm434dm504dm465dm600dm537dm674dm651dm584
dm628dm490dm445
dm472
30
library(plotrix)res.circle <- smacofSphere(d, ndim=k, type=Skalenniveau, ties=ties)res.circleplot(res.circle, plot.type = "confplot")abline(h=0, lty=2); abline(v=0, lty=2)
MDS-OutputModel: Spherical SMACOF Number of objects: 14
Stress-1 value: 0.032 Number of iterations: 238
Konfirmatorische MDS
-0.5 0.0 0.5
-0.5
0.0
0.5
Configuration Plot
Dimension 1
Dim
ensi
on 2
dm434dm445
dm465dm472
dm490
dm504
dm537dm555
dm584
dm600
dm610
dm628dm651
dm674
4.3 Replizierte MDS (RMDS) (vgl. Borg, 1981, S. 283)Es wird davon ausgegangen, dass es eine Gruppenlösung über alle Matrizen gibt. Die matrixspezifischen Lösungen werden durch unterschiedliche Gewichtung der Gruppenlösung gefunden, wobei die Gruppenlösung und die Gewichte in einem iterativen Verfahren bestimmt werden. Für die Gewichtung der Gruppenlösung gibt es verschiedene Möglichkeiten. Mit constraint="identity" müssen die matrixspezifischen Lösungen mit der Gruppenlösung übereinstimmen. Mit constraint="indscal" wird jede matrixspezifische Lösung als eine pro Dimension individuell gestreckte oder gestauchte Variante einer Gruppenlösung betrachtet. Diese Variante entspricht INDSCAL. Mit constraint="idioscal" wird jede matrixspezifische Lösung als rotierte und gestreckte oder gestauchte Variante der Gesamtlösung betrachtet.
Wir betrachten zuerst die Variante mit constraint="idioscal".
31
In einem Experiment von Feger (1979) wurden eine Reihe von Probanden gebeten, zwölf verschiedene Tätigkeiten des Psychologen paarweise auf einer 21-Punkt Rating Skala hinsichtlich ihrer Unähnlichkeit einzustufen. Um ein Mass für die Reliabilität der Antworten der Befragten zu bekommen, wurden ihnen sämtliche Tätigkeitspaare dreimal (in verschiedener Reihenfolge) zur Beurteilung vorgelegt. Im Datenfile sind die drei Distanzmatrizen einer Person enthalten.
32
Tätigkeiten:dro = Drogen- und Suchtberatung, psy = Psychiatrie, gef = Gefängnis-psychologie, maf = Markt- und Meinungsforschung, ide = ideale Tätigkeit, bet = Betriebspsychologie, fpr = freie Praxis, erz = Erziehungsberatung, sch = Schul-psychologie, kin = Kinder- und Heimpsychologie, ehe = Ehe- und Familien-beratung, for = Forschungstätigkeitdata<-read.table(file="https://mmi.psycho.unibas.ch/r-toolbox/data/MDS/MDS3.txt", header=TRUE) Skalenniveau <- "ordinal" # "ratio", "interval" oder "ordinal"constraint <- "idioscal" # "indscal", "idioscal" oder "identity"n.mat <- 3 # Anzahl untereinanderstehender Matrizen eingebenk <- 2 # Anzahl Dimensionen eingebenties <- "primary" # verbundene Ränge: "primary" break ties, "secondary" keep tiesModel: Three-way SMACOF Number of objects: 12 Stress-1 value: 0.139 Number of iterations: 221
$`Stress (Kruskal 1) und RSQ pro Matrix` Stress 1 RSQM1 0.1477531 0.9000804M2 0.1445075 0.9164781M3 0.1246893 0.9365189
33
Grafische Darstellung der MDS-Lösung
-0.5 0.0 0.5 1.0 1.5
-1.0
-0.5
0.0
0.5
1.0
Group Configurations
Dimension 1
Dim
ensi
on 2
dropsy
gef
mafide
bet
fpr
erz
sch
kin
ehe
for.
Tätigkeiten:dro = Drogen- und Suchtberatung, psy = Psychiatrie, gef = Gefängnispsychologie, maf = Markt- und Meinungs-forschung, ide = ideale Tätigkeit, bet = Betriebspsychologie, fpr = freie Praxis, erz = Erziehungsberatung, sch = Schul-psychologie, kin = Kinder- und Heimpsychologie, ehe = Ehe- und Familienberatung, for = Forschungstätigkeit
34
-0.5 0.0 0.5 1.0 1.5
-0.5
0.0
0.5
1.0
1.5
Vergleich der Gruppenloesung mit den unter 'Constraint' spezifizierten Einzelloesungen
D1
D2
11
1
11
1
1
1
1
1
1
122
2
22
2
2
2
2
2
2
233
3
33
3
3
3
3
3
3
3dropsy
gef
mafide
bet
fpr
erz
sch
kin
ehe
for.
-0.5 0.0 0.5 1.0
-0.5
0.0
0.5
1.0
Vergleich der Gruppenloesung mit den unabhaengig voneinander gerechneten, procrustes rotierten Einzelloesungen
D1
D2
1
1
1
1
1
1
1
1 1
1
1
1
222
22
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
3
3
3
3
dropsy
gef
mafide
bet
fpr
erz
sch
kin
ehe
for.
35
Übereinstimmungsmasse für die RMDS-Lösunglibrary(vegan)Dist <- res$confdist # Geschätzte Distanzen im MDS-RaumKoord <- res$conf # Koordinaten der Objekte im MDS-RaumN1 <- vector()N2 <- vector()m <- 0for (i in 2:n.mat){for (j in 1:(i-1)) {m <- m+1N1[m] <- iN2[m] <- j}}# ÄhnlichkeitsmasseNamen <- vector(length=n.mat)for (i in 1:n.mat){Namen[i] <- paste("Matrix", i)}Sim <- matrix(ncol=n.mat, nrow=n.mat, dimnames=list(Namen, Namen))for (m in 1:length(N1)){# quadrierte KongruenzkoeffizientenD1 <- as.vector(Dist[[N1[m]]])D2 <- as.vector(Dist[[N2[m]]])Sim[N1[m], N2[m]] <- ((D1 %*% D2)/(sqrt(sum(D1^2))*sqrt(sum(D2^2))))^2# quadrierte Korrelationen der KoordinatenSim[N2[m], N1[m]] <- cor(as.vector(Koord[[N1[m]]]), as.vector(Koord[[N2[m]]]))^2}diag(Sim) <- 1list("Matrix mit den Übereinstimmungsmassen. Obere Hälfte=quadrierte Korrelationen der Koordinaten, untere Hälfte=quadrierte Kongruenzkoeffizienten (Borg & Groenen, 1997, S. 350)"=Sim)
$`Matrix mit den Übereinstimmungsmassen. Obere Hälfte=quadrierte Korrelationen der Koordinaten, untere Hälfte=quadrierte Kongruenzkoeffizienten (Borg & Groenen, 1997, S. 350)` Matrix 1 Matrix 2 Matrix 3Matrix 1 1.0000000 0.9899213 0.9930183Matrix 2 0.9946596 1.0000000 0.9993040Matrix 3 0.9963574 0.9996400 1.0000000
36
Übereinstimmungsmasse für die einzeln gerechneten MDS-Lösungenlibrary(vegan)Dist <- vector("list", length=n.mat)Koord <- vector("list", length=n.mat)for (i in 1:n.mat) {res.einzeln <- smacofSym(d[[i]], ndim=k, type=Skalenniveau, ties=ties)Dist[[i]] <- res.einzeln$confdistKoord[[i]] <- res.einzeln$conf}N1 <- vector(); N2 <- vector()m <- 0for (i in 2:n.mat){for (j in 1:(i-1)) {m <- m+1N1[m] <- iN2[m] <- j}}# ÄhnlichkeitsmasseNamen <- vector(length=n.mat)for (i in 1:n.mat){Namen[i] <- paste("Matrix", i)}Sim <- matrix(ncol=n.mat, nrow=n.mat, dimnames=list(Namen, Namen))for (m in 1:length(N1)){# KongruenzkoeffizientenD1 <- as.vector(Dist[[N1[m]]])D2 <- as.vector(Dist[[N2[m]]])Sim[N1[m], N2[m]] <- ((D1 %*% D2)/(sqrt(sum(D1^2))*sqrt(sum(D2^2))))^2# Korrelationen der KoordinatenPro <- procrustes(Koord[[N1[m]]], Koord[[N2[m]]])$YrotSim[N2[m], N1[m]] <- cor(as.vector(Koord[[N1[m]]]), as.vector(Pro))^2}diag(Sim) <- 1list("Matrix mit den Übereinstimmungsmassen. Obere Hälfte=quadrierte Korrelationen der Koordinaten, untere Hälfte=quadrierte Kongruenzkoeffizienten (Borg & Groenen, 1997, S. 350)"=Sim)$`Matrix mit den Übereinstimmungsmassen. Obere Hälfte=quadrierte Korrelationen der Koordinaten, untere Hälfte=quadrierte Kongruenzkoeffizienten (Borg & Groenen, 1997, S. 350)` Matrix 1 Matrix 2 Matrix 3Matrix 1 1.0000000 0.6560464 0.6490678Matrix 2 0.9452720 1.0000000 0.6934770Matrix 3 0.9223555 0.9400456 1.0000000
37
0.5
1.0
1.5
2.0
0 5 10 15 20Dissimilarities
Distances
0.5
1.0
1.5
2.0
0 5 10 15 20Dissimilarities
Distances
0.5
1.0
1.5
2.0
0 5 10 15 20Dissimilarities
Distances
Separd Diagram: x=Dissimilarities, y=Distances and Disparities (grey line)
Diagnostikplots
38
0.5
1.0
1.5
2.0
0.5 1.0 1.5 2.0Disparities
Distances
0.5
1.0
1.5
2.0
0.5 1.0 1.5 2.0Disparities
Distances
0.5
1.0
1.5
2.0
0.5 1.0 1.5 2.0Disparities
Distances
Residual Plot: x=Disparities, y=Distances
39
46
810
1214
Stress Decomposition Chart
Objects
Stre
ss P
ropo
rtion
(%)
for.
ide
bet
gefpsy
dro
erzfpr
ehe
schmaf
kin
40
4.4 Gewichtete MDS (INDSCAL)(vgl. Borg, 1981, S. 483)
In einem Experiment von Helm (1959) mussten 14 Probanden die Ähnlichkeit von 10 Farben einschätzen. 10 der Probanden waren normal farbsichtig, 4 Probanden waren bezüglich der Rot-Gün-Differenzierung unterschiedlich stark beeinträchtigt. Sowohl ein Proband der normal Farbsichtigen als auch einer der Beeintächtigten absolvierten das Experiment zweimal. Der Datensatz enthält also 16 Distanzmatrizen:normal farbsichtig� Matrix Nr. 1, 2, 3, 4, 6, 7, 10, 11, 12, 13, 15
Die Matrizen 7 und 13 stammen vom selben Probandenbeeinträchtigt � Matrix Nr. 5, 8, 9, 14, 16
Die Matrizen 5 und 14 stammen vom selben Probanden
data<-read.table(file="https://mmi.psycho.unibas.ch/r-toolbox/data/MDS/MDS4.txt", header=TRUE) Skalenniveau <- "ordinal" # "ratio", "interval" oder "ordinal"constraint <- "indscal" # "indscal", "idioscal" oder "identity"n.mat <- 16 # Anzahl untereinanderstehender Matrizen eingebenk <- 2 # Anzahl Dimensionen eingebenties <- "primary" # verbundene Ränge: "primary" break ties, "secondary" keep ties
41
42
MDS-OutputModel: Three-way SMACOF Number of objects: 10 Stress-1 value: 0.086 Number of iterations: 229
$`Stress (Kruskal 1) und RSQ pro Matrix` $Streckungsfaktoren Stress 1 RSQ D1 D2M1 0.03879643 0.9882363 M1 0.9904678 1.0453607M2 0.05582684 0.9749839 M2 0.8976326 1.1649039M3 0.06861372 0.9623079 M3 0.9352340 1.1168441M4 0.05661686 0.9744026 M4 0.9470295 1.1032860M5 0.12902000 0.8868309 M5 1.0889909 0.8601671M6 0.06485966 0.9664826 M6 0.9524200 1.0949721M7 0.06842392 0.9627127 M7 0.8638650 1.2016757M8 0.10636993 0.9174240 M8 1.0487493 0.9409445M9 0.05905280 0.9852265 M9 1.2614702 0.3913095M10 0.08006403 0.9491931 M10 0.9624682 1.0787905M11 0.08847646 0.9381670 M11 0.9678666 1.0696543M12 0.09993405 0.9199452 M12 0.9145211 1.1368119M13 0.04938955 0.9805962 M13 0.8598956 1.2084367M14 0.09661412 0.9354682 M14 1.0847193 0.8791954M15 0.09804244 0.9256267 M15 0.9968371 1.0258582M16 0.14048467 0.9078001 M16 1.2258462 0.4968163
43
Grafische Darstellung der MDS-Lösung
-0.5 0.0 0.5
-0.8
-0.6
-0.4
-0.2
0.0
0.2
0.4
0.6
Group Configurations
Dimension 1
Dim
ensi
on 2
Rot.PurpurRot.Orange
Gelb
Gruen.Gelb1
Gruen.Gelb2
GruenBlau
Purpur.Blau
Purpur2
Purpur1
44
-0.5 0.0 0.5 1.0
-0.5
0.0
0.5
1.0
Vergleich der Gruppenloesung mit den unter 'Constraint' spezifizierten Einzelloesungen
D1
D2
1
1
1
1
1
11
1
1
1
2
2
2
2
2
22
2
2
2
3
3
3
3
3
33
3
3
3
4
4
4
4
4
44
4
4
4
5
5
5
5
5
55
5
5
5
6
6
6
6
6
66
6
6
6
7
7
7
7
7
77
7
7
7
8
8
8
8
8
88
8
8
8
99
9
9
999
9
9
9
10
10
10
10
10
1010
10
10
10
11
11
11
11
11
1111
11
11
11
12
12
12
12
12
1212
12
12
12
13
13
13
13
13
1313
13
13
13
14
14
14
14
14
1414
14
14
14
15
15
15
15
15
1515
15
15
15
1616
16
16
16
1616
16
16
16
Rot.PurpurRot.Orange
Gelb
Gruen.Gelb1
Gruen.Gelb2
GruenBlau
Purpur.Blau
Purpur2
Purpur1
-0.5 0.0 0.5
-0.5
0.0
0.5
Vergleich der Gruppenloesung mit den unabhaengig voneinander gerechneten, procrustes rotierten Einzelloesungen
D1
D2
11
1
1
1
11
1
1
1
2 2
2
2
2
22
2
2
2
3
3
3
3
3
33
3
3
3
4
4
4
4
4
4
4
4
4
4
5
5
5
5
5
5
5
5
5
5
6
6
6
6
6
6
6
6
6
6
7
7
7
7
77
7
7
7
7
88
8
8
8
8
8
8
8
89
9
9
9
9
9
9
9
9
9
10
10
10
10
10
10
10
10
10
10
1111
11
11
11
11
11
11
11
11
12
12
12
12
12
12
12
12
12
12
13
13
13
13
131313
13
13
13
14 14
14
14
14
1414
14
14
14
1515
15
15
15
1515
15
15
15
16
16
16
16
16
1616
16
16
16
Rot.PurpurRot.Orange
Gelb
Gruen.Gelb1
Gruen.Gelb2
GruenBlau
Purpur.Blau
Purpur2
Purpur1
1
234
5
6
7
8
9
101112
13
14
15
16
0.0
0.5
1.0
0.0 0.5 1.0D1
D2
Gewichtsfaktoren
Probandenspezifische Gewichtung der Dimensionen
45
normal farbsichtig � Matrix Nr. 1, 2, 3, 4, 6, 7, 10, 11, 12, 13, 15Die Matrizen 7 und 13 stammen vom selben Probanden
beeinträchtigt � Matrix Nr. 5, 8, 9, 14, 16Die Matrizen 5 und 14 stammen vom selben Probanden
Im Gewichtsraum sind die Gewichte pro Proband als Vektoren dargestellt.
Die Unterschiedlichkeit von Probanden äussert sich in Richtungsunterschieden der Vektoren (vgl. Probanden 7 und 9).
Zeigen zwei Vektoren unterschied-licher Länge in die gleiche Richtung, haben die entsprechenden Probanden dieselbe relative Gewichtung der Dimensionen.
46
0.5
1.0
3 6 9 12 15Dissimilarities
Distances
0.5
1.0
5 10 15Dissimilarities
Distances
0.5
1.0
2.5 5.0 7.5 10.012.5Dissimilarities
Distances
0.5
1.0
5.0 7.5 10.0 12.5Dissimilarities
Distances
0.4
0.8
1.2
1.6
6 8 10 12Dissimilarities
Distances
0.5
1.0
2.5 5.0 7.5 10.0Dissimilarities
Distances
0.5
1.0
1.5
3 6 9 12Dissimilarities
Distances
0.5
1.0
1.5
2.5 5.0 7.5 10.012.5Dissimilarities
Distances
0.5
1.0
1.5
6 9 12Dissimilarities
Distances
0.5
1.0
5.0 7.5 10.0Dissimilarities
Distances
0.5
1.0
5.0 7.5 10.0 12.5Dissimilarities
Distances
0.5
1.0
5 7 9 11Dissimilarities
Distances
0.5
1.0
1.5
3 6 9 12 15Dissimilarities
Distances
0.4
0.8
1.2
4 6 8 10Dissimilarities
Distances
0.5
1.0
5.0 7.5 10.0Dissimilarities
Distances
0.5
1.0
1.5
5 10 15Dissimilarities
Distances
Separd Diagram: x=Dissimilarities, y=Distances and Disparities (grey line)Diagnostikplots
47
0.5
1.0
0.5 1.0Disparities
Distances
0.5
1.0
0.5 1.0Disparities
Distances
0.5
1.0
0.250.500.751.001.25Disparities
Distances
0.5
1.0
0.5 1.0Disparities
Distances
0.4
0.8
1.2
1.6
0.500.751.001.25Disparities
Distances
0.5
1.0
0.5 1.0Disparities
Distances
0.5
1.0
1.5
0.500.751.001.25Disparities
Distances
0.5
1.0
1.5
0.5 1.0Disparities
Distances
0.5
1.0
1.5
0.5 1.0 1.5Disparities
Distances
0.5
1.0
0.250.500.751.001.25Disparities
Distances
0.5
1.0
0.250.500.751.001.25Disparities
Distances
0.5
1.0
0.5 1.0Disparities
Distances
0.5
1.0
1.5
0.5 1.0Disparities
Distances
0.4
0.8
1.2
0.4 0.8 1.2Disparities
Distances
0.5
1.0
0.5 1.0Disparities
Distances
0.5
1.0
1.5
0.5 1.0 1.5Disparities
Distances
Residual Plot: x=Disparities, y=Distances
48
810
1214
Stress Decomposition Chart
Objects
Stre
ss P
ropo
rtion
(%)
Rot.Orange
Gruen.Gelb1
Blau
GelbRot.Purpur
Purpur2
Purpur1
Gruen.Gelb2GruenPurpur.Blau
4.5 Einbeziehung von Eigenschaftsurteilen, Vektormodell(vgl. Backhaus, 2003, S. 640)32 Probanden mussten 11 Buttersorten bezüglich ihrer Ähnlichkeit einschätzen. Der Datensatz "Beispiel 5 Unähnlichkeit.txt" enthält die 32 Unähnlichkeits-matrizen. Zusätzlich mussten die Probanden die Buttersorten hinsichtlich 10 Eigenschaften beurteilen. Der Datensatz "Beispiel 5 Eigenschaften.txt" enthält die über die Probanden gemittelten Eigenschaftsurteile.
49
Zuerst wird die RMDS-Gruppenlösung, d.h. die Koordinaten der 2D-Konfigu-ration bestimmt. Die Eigenschaftsvektoren lassen sich mithilfe der linearen Regression bestimmen, welche die Beurteilungen hinsichtlich einer Eigenschaft (y) in Abhängigkeit der Koordinaten der 2D-Lösung (x1, x2) schätzt:
Der Eigenschaftsvektor lässt sich dann mithilfe der Komponenten (b1, b2) in den 2D-Konfigrationsplot einfügen. Auf der nächsten Folie versuchen wir die Bedeutung dieser Vorgehensweise zu erläutern.
y = b0 + b1 ⋅ x1 + b2 ⋅ x2
Die Regressionsgleichung stellt grafisch eine Ebene im 3D-Raum dar (vgl. Grafik). Der Vektor (b1, b2) in der x1x2-Ebene zeigt in die Richtung der stärksten Veränderung von y, d.h. Veränderungen der x1- und x2-Werte in diese Richtung haben die stärkste Auswirkung auf die Veränderung der Eigenschaft y. Übertragen auf eine Landkarte zeigt der Vektor (b1, b2) in Richtung der stärksten Veränderung der Höhe.
50
y
x2
x1
b1b2
⎛
⎝⎜
⎞
⎠⎟
51
data<-read.table(file="https://mmi.psycho.unibas.ch/r-toolbox/data/MDS/MDS5.txt", header=TRUE) Skalenniveau <- "ordinal" # "ratio", "interval" oder "ordinal"constraint <- "idioscal" # "indscal", "idioscal" oder "identity"n.mat <- 32 # Anzahl untereinanderstehender Matrizen eingebenk <- 2 # Anzahl Dimensionen eingebenties <- "primary" # verbundene Ränge: "primary" break ties, "secondary" keep ties
Call: smacofIndDiff(delta = d, ndim = k, type = Skalenniveau, constraint = constraint, ties = ties)
Model: Three-way SMACOF Number of objects: 11 Stress-1 value: 0.244 Number of iterations: 364
$`Stress (Kruskal 1) pro Matrix` Stress 1 RSQ Stress 1 RSQM1 0.2654644 0.4531801 M17 0.2869351 0.3822426M2 0.2266659 0.6798425 M18 0.2612024 0.4675224M3 0.2074384 0.6942873 M19 0.2788813 0.3934038M4 0.2299984 0.5896090 M20 0.2862596 0.3775701M5 0.2697604 0.4854027 M21 0.2197472 0.6778733M6 0.2996207 0.2988377 M22 0.2865504 0.3638580M7 0.1784068 0.7954483 M23 0.2972513 0.3087313M8 0.1917169 0.7522889 M24 0.2338838 0.5668709M9 0.2636016 0.4838229 M25 0.1664107 0.8024283M10 0.2812264 0.4006449 M26 0.3078196 0.2888924M11 0.2224896 0.6598577 M27 0.1506931 0.8463719M12 0.2586560 0.4917617 M28 0.1773332 0.8027956M13 0.2672348 0.4767023 M29 0.1962182 0.7745739M14 0.2011402 0.6882220 M30 0.2350580 0.5908063M15 0.1842634 0.8085402 M31 0.2625847 0.4997845M16 0.2570234 0.4859427 M32 0.2883814 0.3743444
52
# Datensatz mit den externen Variablen einlesenexterne.variablen <- read.table(file="https://mmi.psycho.unibas.ch/r-toolbox/data/MDS/MDS5%20Eigenschaften.txt", header=TRUE)
# Datensatz, welcher nur die Spalten mit den Eigenschaften enthältexterne.variablen <- externe.variablen[,-1]
res.biplot <- biplotmds(res, externe.variablen)plot(res.biplot)abline(h=0, lty=2); abline(v=0, lty=2)res.biplot$R2vec # Vektor mit den R2-Werten. Niedrige R2-Werte deuten auf eine schlechte Vorhersagbarkeit hin.
-2 -1 0 1 2
-2-1
01
Configuration Plot
Dimension 1
Dim
ensi
on 2
beceldudarfst
rama
delicadohollmb
weihnach homaflora
sb sanella
botteram
streichf
preis
haltbark
ungefett
backeige
geschma
kalorien
tierfett
vitamin
natur
53
4.6 Einbeziehung von Präferenzurteilen, Vektormodell(vgl. Backhaus, 2003, S. 640)32 Probanden mussten 11 Buttersorten bezüglich ihrer Ähnlichkeit einschätzen. Der Datensatz "Beispiel 5 Unähnlichkeit.txt" enthält die 32 Unähnlichkeits-matrizen. Zusätzlich mussten die Probanden die Buttersorten hinsichtlich ihrer Präferenz in eine Rangreihe bringen (Datensatz: Beispiel 5 Präferenzen.txt).
Die Berechnung der Präferenzvektoren erfolgt nach demselben Prinzip wie die Berechnung der Eigenschaftsvektoren.
54
-2 -1 0 1
-2-1
01
Configuration Plot
Dimension 1
Dim
ensi
on 2
beceldudarfst
rama
delicadohollmb
weihnach homa flora
sb sanella
botteram
vp1
vp2
vp3
vp4
vp5
vp6
vp7vp8
vp9
vp10
vp11vp12
vp13
vp14
vp15vp16
vp17
vp18
vp19
vp20
vp21vp22
vp23
# Datensatz mit den externen Variablen einlesenexterne.variablen <- read.table(file="https://mmi.psycho.unibas.ch/r-toolbox/data/MDS/MDS5%20Pra%CC%88ferenzen.txt", header=TRUE)
# Datensatz, welcher nur die Spalten mit den Eigenschaften enthältexterne.variablen <- externe.variablen[, -c(1,25:33)] # Ausschliessen Namen und der Probanden mit fehlenden Werten
res.biplot <- biplotmds(res, externe.variablen)plot(res.biplot)abline(h=0, lty=2); abline(v=0, lty=2)res.biplot$R2vec # Vektor mit den R2-Werten. Niedrige R2-Werte deuten auf eine schlechte Vorhersagbarkeit hin.
4.7 Einbeziehung von Präferenzurteilen, Idealpunktmodell(vgl. Backhaus, 2003, S. 648)
y = b0 + b1 ⋅ x1 + b2 ⋅ x2 + b3 ⋅ x12 + x2
2( )Regressionsgleichung:
Für y=konstant resultieren konzentrische Kreise um den Mittelpunkt −b12b3
, − b22b3
⎛
⎝⎜
⎞
⎠⎟
Veranschaulichung für B0=100, B1=-1, B2=-1 und B3=-1
# R CodeB0 <- 100B1 <- -1B2 <- -1B3 <- -1library(rgl)x1 <- seq(-10, 10, length= 30)x2 <- x1f <- function(x1,x2) {B0+B1*x1+B2*x2+B3*(x1^2+x2^2)}y <- outer(x1, x2, f)persp3d(x1, x2, y, col="lightblue")
55
In Abhängigkeit dieser Koordinaten erhält man entweder die minimale oder die maximale Präferenz. Wenn b3 < 0 Idealpunkt. Wenn b3 > 0 Antiidealpunkt.
56
# Datensatz mit den externen Variablen einlesenexterne.variablen <- read.table(file="https://mmi.psycho.unibas.ch/r-toolbox/data/MDS/MDS5%20Pra%CC%88ferenzen.txt", header=TRUE)
# Ausschliessen der Spalte mit den Produktenamen und der Probanden mit fehlenden Wertenexterne.variablen <- externe.variablen[, -c(1,25:33)]
koord <- res$gspace # Koordinaten der MDS-Lösungopt <- matrix(nrow= ncol(externe.variablen), ncol=2)R2 <- numeric(); b3 <- numeric()for (i in 1: ncol(externe.variablen)) {
m <- summary(lm(externe.variablen[,i]~koord[,1]+koord[,2]+I(koord[,1]^2+koord[,2]^2)))opt[i,1] <- -m$coeff[2]/(2*m$coeff[4])opt[i,2] <- -m$coeff[3]/(2*m$coeff[4])b3 <- c(b3, m$coeff[4]); R2 <- c(R2, m$r.squared)}
names(b3) <- colnames(externe.variablen); names(R2) <- colnames(externe.variablen)Extremum <- as.factor(sign(b3))Extremum <- factor(Extremum, labels = c("Idealpunkt", "Antiidealpunkt"))opt <- data.frame(Name=colnames(externe.variablen), Extremum, opt)library(ggplot2)ggplot(data.frame(Name=rownames(koord), koord), aes(x=D1, y=D2)) + geom_point() + geom_text(aes(label=Name), hjust=0.5, vjust=1.5) + geom_point(data=opt, aes(x=X1, y=X2, colour=Extremum)) + geom_text(data=opt, aes(x=X1, y=X2, label=Name, colour=Extremum), hjust=0.5, vjust=1.5)list(b3=b3, R2=R2)
57
beceldudarfst
rama
delicadohollmb
weihnach homa florasb sanella
botteram
vp1
vp2
vp3
vp4
vp5
vp6
vp7
vp8vp9
vp10
vp11
vp12
vp13
vp14 vp15vp16
vp17
vp18vp19
vp20vp21vp22
vp23
-2
0
2
-2 -1 0D1
D2
Extremumaa
Idealpunkt
Antiidealpunkt