Zurück...

Diskriminanzanalyse

Als multivariates Verfahren ist die Diskriminanzanalyse eine Methode zur Untersuchung von Gruppenunterschieden.

Mit dieser Analysemethode wird die Unterschiedlichkeit von zwei oder mehreren Gruppen hinsichtlich ihrer Merkmale untersucht:
 

  • Unterscheiden sich die Gruppen hinsichtlich ihrer Merkmale signifikant voneinander?
  • Welche Merkmale sind zur Unterscheidung zwischen den Gruppen geeignet bzw. ungeeignet?

Als Beispiele kann die Gruppenzugehörigkeit (A- oder B-Qualität) über die Ausbeute eines Wirkstoffs von bestimmten Produktionsparametern abhängen, oder z. B. auch die Eigenschaften bestimmter Automarken, welche die Kaufentscheidung der Kunden klassifiziert in Gruppen, beeinflussen, herangezogen werden.
Dabei wird von einem bekannten Zusammenhang ausgegangen. D. h., es wird angenommen, dass Merkmale die Zugehörigkeit zur jeweiligen Gruppe festlegen und dabei wird von vorgegebenen Gruppen ausgegangen. Diese Annahme kann mit der Diskriminanzanalyse verifiziert werden. Damit gehört dieses Verfahren zu den strukturprüfenden Analysenmethoden.

Bezüglich des Skalenniveaus entspricht die Gruppenzugehörigkeit einem nominalen Merkmal. Die klassifizierenden Merkmale (Parameter, Eigenschaften) entsprechem metrischen Niveau.

Nachdem mit diesem Verfahren die Gruppenzugehörigkeit analysiert und durch ein Modell beschrieben wurde, ist sicher von Interesse, bei bekannten Merkmalen die Gruppenzugehörigkeit zu bestimmen.

Als Beispiel soll ein neues Automodell auf den Markt gebracht werden. Dieses weißt bezüglich der im Modell berücksichtigten Merkmale bestimmte Ausprägungen auf. Auf Basis dieser Merkmalausprägungen sollten Sie nun über das Modell in der Lage sein, die Gruppenzugehörigkeit zu bestimmen.

Im nachfolgenden Text, wird die Diskriminanzanalyse bis hin zur Gruppierung eines neuen Automodells beschrieben. Da dieses Verfahren ein sehr rechenintensives ist, wird zur Erleichterung R als Hilfsmittel eingesetzt. Auf dieser Seite wird das folgende 3-Gruppen-Beispiel über das R-Paket LinDA dargestellt.

Die Diskriminanzanalyse startet mit der Definition der Gruppen. Die Gruppendefinition kann schon durch das Problem vorgegeben sein oder auf Basis eines Verfahrens wie z. B. der Clusteranalyse, beruhen.

Zur Gruppendefinition wird natürlich die Anzahl der Gruppen (Gruppenanzahl g) festgelegt. Dabei ist das zur Verfügung stehende Datenmaterial zu berücksichtigen. Das bedeutet, dass

    • Zahl der Gruppen nicht größer sein soll, als die Anzahl der Merkmale und
    • Anzahl der Merkmalausprägungen (Fallzahl) pro Gruppe nicht zu klein ist.

Mit der Diskriminanzanalyse wird auf Basis der Gruppen eine Trennfunktion oder auch Diskriminanzfunktion geschätzt:

            y = b0 + b1x1 + b2x2 + ... + bjxj                   F1

            y: Diskriminanzvariable
            xj: Merkmal (mit dem Index j)
            bj: Diskriminanzkoeffzient (mit dem Index j)
            b0:Konstantes Glied

Wie weiter oben schon erwähnt, wird R unter Verwendung der Funktion lda() (Linear Discriminant Analysis, Paket MASS) zur Schätzung der Diskriminanzfunktion herangezogen. Die Funktion lda() schätzt dabei nicht nur die Diskriminanzfunktion, sondern erlaubt uns auch eine Wahrscheinlichkeitsaussage über die Gruppenzugehörigkeit der einzelnen Merkmalausprägungen.

Fangen wir mit einem 2-Gruppen-Beispiel an (Bild 1):

Das Gruppierungsmerkmal Gruppe besteht aus den Gruppen A und B. Gruppe A stellt eine Fahrzeugklasse aus dem Hochpreissegment und die Gruppe B eine Fahrzeugklasse aus dem mittleren Preissegment dar. Jeweils 15 mögliche Käufer wurden zu ihrer Einschätzung der beiden Gruppen bezüglich der Merkmale Sicherheit, Umwelt, Innovation und Prestige befragt. Dabei konnten Bewertungen von 1 (niedrig) bis 10 (hoch) vergeben werden. Bild 1 stellt das Ergebnis dieser Befragung dar.

 

Bild 1: 2-Gruppen-Beispiel

Um einen Überblick über die Gruppenmerkmale zu erhalten, wurde Bild 1 um die Gruppenmerkmalmittelwerte und deren Standardabweichung erweitert (Bild 2). Dadurch wird sicher vorstellbar, dass die Schätzung der Diskriminanzfunktion nicht nur von den Mittelwerten, sondern auch von der Standardabweichung abhängt. Der Unterschied zwischen den Gesamtmittelwerten (Schwerpunkt) über die beiden Gruppen (Bild 2 / Bild 3) stellt die Distanz dar.

Bild 2: 2-Gruppen-Beispiel mit beschreibenden Daten

In der Mitte dieser Distanz, also zwischen den beiden Schwerpunkten, liegt der kritische Diskriminanzwert y*, der eine Klassifizierung neuer Werte in die entsprechende Gruppe ermöglicht (Bild 3).

Bild 3: Diskriminanzwert y*

Idealerweise soll die geschätzte Diskriminanzfunktion optimal zwischen den Gruppen trennen. Diese Fähigkeit wird durch das Diskriminanzkriterium beschrieben. Wie schon angedeutet, wird das Diskriminanzkriterium durch die Streuung zwischen den Gruppen (erklärte Streuung) und durch die Streuung in den Gruppen (nicht erklärte Streuung) beeinflusst (siehe Zerlegung der Gesamtstreuung zum Thema ANOVA).

In der nachfolgenden Schätzung der Diskriminanzfunktion wird Ihnen auffallen, dass das konstante Glied b0 nicht ausgegeben wird. Dies ist im Zusammenhang mit dem kritischen Diskriminanzwert y* zu sehen, da dieser so gewählt wird, dass der Diskriminanzwert den Wert 0 erhält. Durch diese Skalenverschiebung (siehe Bild 3) ändert sich natürlich nicht die Streuung und hat somit keinen Einfluss auf das Diskriminanzkriterium.

Kommen wir nun zum praktischen Teil, der Schätzung der Diskriminanzfunktion:

Die Diskriminanzanalyse über die R-Funktion lda() des Paketes MASS erwartet einen Datensatz, der die Gruppen und Merkmale enthält. Dieser Datensatz wird hier beispielsweise in der Variable Daten abgelegt. Die Funktion lda() erwartet die Merkmale und Gruppe in einer getrennten Übergabe zum Funktionsaufruf: lda(Merkmale, Gruppe). Die Gruppe ist in der 1. Spalte und die Merkmalausprägungen in den Spalten 2 bis 5 abgelegt (siehe Funktionsaufruf).

Der Funktionsaufruf mit dem Datensatz aus Bild 1 zeigt folgende Schätzung:

> lda(Daten[2:5], Daten[,1])

Call:
lda(Daten[2:5], Daten[, 1])

Prior probabilities of groups:
A   B
0.5 0.5

Group means:
Sicherheit   Umwelt Innovativ Prestige
A   8.400000 6.533333  7.933333 8.666667
B   8.466667 8.200000  5.333333 5.600000

Coefficients of linear discriminants:
                        LD1
Sicherheit  0.02473145
Umwelt      0.48227799
Innovativ  -0.30381323
Prestige   -0.90305578

Bild 4: lda-Ausgabe 2-Gruppen-Beispiel

Die Ausgabe Prior probabilities of groups zeigt, dass die Gruppierung in 2 Gruppen A und B zu jeweils 50% erfolgte. Die Ausgabe der Group means zeigt die schon aus Bild 2 bekannten Gruppenmittelwerte für die Merkmale Sicherheit, Umwelt, Innovation und Prestige. Die geschätzte  Diskriminanzfunktion wird durch die Ausgabe Coefficients of linear discriminants dargelegt (Bild 4).

Die Koeffizienten (LD1) als Diskriminanzfunktion:

          y = b0 + b1x1 + b2x2 + ... + bjxj

y = 0,0247*Sicherheit + 0.48228 * Umwelt -0.3038 * Innovation – 0.9031 * Prestige      F2

Nun kennen wir die Diskriminanzfunktion, aber nicht deren Güte. Hier hilft uns das Argument CV = TRUE weiter. Ein Aufruf der Funktion lda(Merkmale, Gruppe, CV = TRUE) liefert uns eine Schätzung der wahrscheinlichen Gruppenzugehörigkeit ($posterrior) und zeigt diese auch durch eine Gruppenausprägung A oder B an ($class):

lda(Daten[2:5], Daten[,1], CV = TRUE)

$class
[1] A A A A A A A A A A A
B A A A B B B B B B B B B B B B B B B
Levels: A B

$posterior
           A           B
[1,] 1.000000e+00 3.653510e-08
[2,] 9.999305e-01 6.948054e-05
[3,] 9.999984e-01 1.561408e-06
[4,] 9.999971e-01 2.893908e-06
[5,] 9.999981e-01 1.939374e-06
[6,] 9.984753e-01 1.524694e-03
[7,] 9.999963e-01 3.735744e-06
[8,] 9.999827e-01 1.728803e-05
[9,] 9.999704e-01 2.958614e-05
[10,] 9.970084e-01 2.991620e-03
[11,] 9.999878e-01 1.221917e-05
[12,] 4.507799e-12 1.000000e+00
[13,] 9.999911e-01 8.885873e-06
[14,] 9.922784e-01 7.721556e-03
[15,] 9.987145e-01 1.285535e-03
[16,] 3.743506e-06 9.999963e-01
[17,] 8.253839e-07 9.999992e-01
[18,] 4.663006e-04 9.995337e-01
[19,] 3.356275e-03 9.966437e-01
[20,] 1.694510e-03 9.983055e-01
[21,] 3.743506e-06 9.999963e-01
[22,] 2.010329e-05 9.999799e-01
[23,] 1.595833e-03 9.984042e-01
[24,] 6.951606e-06 9.999930e-01
[25,] 1.570857e-03 9.984291e-01
[26,] 2.579962e-04 9.997420e-01
[27,] 2.579962e-04 9.997420e-01
[28,] 3.573099e-03 9.964269e-01
[29,] 5.676842e-04 9.994323e-01
[30,] 1.049090e-05 9.999895e-01

Bild 5: Ausgabe der wahrscheinlichen Gruppenzugehörigkeit

Sehen wir von der 12. Merkmalausprägung ab, gehören die ersten 15 Merkmalausprägungen deutlich zur Gruppe A, da die wahrscheinliche Zugehörigkeit über 99% beträgt (Ausgabe $posterior). Das gleiche trifft für die Zugehörigkeit der Merkmalausprägungen 16 bis 30 zur Gruppe B zu. Auch hier liegt die wahrscheinliche Zugehörigkeit bei > 99%.

Für die 12. Merkmalausprägung wird auf Basis dieser Stichprobe (Befragung) deutlich eine Gruppenzugehörigkeit zur Gruppe B geschätzt! Dies wird nicht nur durch die $posterior-Ausgabe, sondern auch durch die $class-Ausgabe dargestellt (siehe farbliche Hervorhebung).

Nach der Schätzung der Diskriminanzfunktion kann nun die Gruppierung (Klassifizierung) neuer Daten erfolgen. Es wird der Diskriminanzwert y nach F1 geschätzt und auf Basis des Resultates die Gruppierung durchgeführt.
Um einen ersten Überblick zu erhalten, führen wir die Gruppierung der Daten die wir zur Schätzung eingesetzt haben (Bild 1), durch.  Wir schätzen die Daten gegen sich selbst.....!

Dazu wird die R-Funktion predict() verwendet. Der Aufruf geschieht wie folgt:

predict(Modell, Datensatz)

Das Modell ist die Schätzung der Diskriminanzfunktion. Der Datensatz ist in diesem Beispiel das Datenobjekt Daten, wie oben schon erwähnt. Um den Funktionsaufruf übersichtlicher zu gestalten, wird das Diskriminanzfunktion-Modell in dem R-Objekt D.Funk abgelegt:

D.Funk <- lda(Daten[2:5], Daten[,1])

Anschließend wird die Funktion predict() aufgerufen (Bild 6):

predict(D.Funk, Daten[2:5])$x

          LD1
[1,] -3.673802
[2,] -2.313199
[3,] -3.074559
[4,] -2.924479
[5,] -2.963596
[6,] -1.767073
[7,] -2.871363
[8,] -2.592281
[9,] -2.491664
[10,] -1.385412
[11,] -2.653781
[12,]  1.839149
[13,] -2.721283
[14,] -1.452914
[15,] -1.689225
[16,]  2.895938
[17,]  3.199751
[18,]  1.839149
[19,]  1.611221
[20,]  1.510604
[21,]  2.895938
[22,]  2.563740
[23,]  1.777649
[24,]  2.766936
[25,]  1.535335
[26,]  1.992882
[27,]  1.992882
[28,]  1.596836
[29,]  1.863880
[30,]  2.692742

Bild 6: Schätzung Diskriminanzwert y

Wenn Sie nun „per Hand“ die Merkmalausprägung aus Bild 1 in die Diskriminanzfunktion (F1) einsetzen, werden Sie feststellen, dass Ihr Ergebnis nicht der Ausgabe Bild 6 entspricht. Dies liegt an dem konstanten Glied b0, das nicht ausgegeben wird, aber in der Schätzung (ist halt eine andere Funktion) berücksichtigt wird. Sie können es sicher leicht berechnen und für dieses Beispiel beträgt b0 = 4,69573.

Der Diskriminanzwert beträgt 0 und somit ist die Schätzung der Diskriminanzvariable y für die Gruppe A negativ und für die Gruppe B positiv. Auch hier lässt sich erkennen, dass die 12. Merkmalausprägung zur Gruppe B gehört. Derartige „Falschzuordnungen“ sollten in geeigneter Form, z. B. als Häufigkeit der richtig und falsch klassifizierten Elemente, dargestellt werden. Diese Darstellung kann in Matrixform (Confusion-Matrix) erfolgen.

Haben Sie einen komplett neuen Datensatz, z. B. die Bewertungen Sicherheit = 5, Umwelt = 5, Innovation = 8 und Prestige = 8, sieht die Vorhersage wie folgt aus (Bild 7):

Test <- c(5,5,8,8)

predict(D.Funk, Test)$x
            LD1
[1,] -2.424162

Bild 7: Gruppierung eines neuen Datensatzes

Diese Bewertung (Test) muss zur Gruppe A gerechnet werden.

Wir erweitern das Beispiel um eine weitere Gruppe, der Gruppe C und kommen so zu einem 3-Gruppen-Beispiel (Bild 8):

Bild 8: 3-Gruppen-Beispiel

Die Fahrzeuge der Gruppe C sollen beispielhaft aus dem Niederpreissegment kommen.

Die Schätzung der Diskriminanzfunktion erfolgt in gleicherweise wie für das 2-Gruppen-Beispiel. Natürlich wurde jetzt in dem Datenobjekt Daten das 3-Gruppen-Beispiel geladen.

 

Der Aufruf der Funktion...

lda(Daten[2:5], Daten[,1])

... führt zur Ausgabe folgender Schätzung:

            Call:
            lda(Daten[2:5], Daten[, 1])

            Prior probabilities of groups:
                      A           B               C
            0.3333333 0.3333333 0.3333333

            Group means:
                   Sicherheit   Umwelt   Innovativ Prestige
            A   8.400000 6.533333  7.933333 8.666667
            B   8.466667 8.200000  5.333333 5.600000
            C   4.533333 7.866667  3.533333 2.866667

            Coefficients of linear discriminants:
                                LD1            LD2
            Sicherheit  0.4018996  0.8831480
            Umwelt     -0.3377654  0.3969992
            Innovativ   0.4076665 -0.2366116
            Prestige    0.9034934 -0.3269652

            Proportion of trace:
               LD1    LD2
            0.9197 0.0803

Bild 9: Ausgabe 3-Gruppen-Beispiel

Es werden 2 Diskriminanzfunktionen, LD1 und LD2, ausgegeben:

y = b0 + b1x1 + b2x2 + ... + bjxj

LD1: y = 0.4019*Sicherheit - 0.3378* Umwelt + 0.4077 * Innovation + 0.9035 * Prestige

LD2: y = 0.8831*Sicherheit + 0.397* Umwelt - 0.2366 * Innovation - 0.327 * Prestige

Möchten Sie die wahrscheinliche Gruppenzugehörigkeit ausgegeben bekommen, ergänzen Sie den lda-Funktionsaufruf wieder mit dem Argument CV=TRUE. Auch hier wird natürlich der 12. Datensatz der B-Gruppe als wahrscheinlicher zugeordnet.

Auch hier möchte ich Ihnen die konstanten Glieder nicht vorenthalten:

            LD1 b0: -7,7653
            LD2 b0: -6,09812

Rufen Sie nun wie im 2-Gruppen-Beispiel die R-Schätzfunktion predict() zur Schätzung der Diskriminanzwerte y auf und Sie erhalten folgende Ausgabe (Bild 10):

predict(d.Funk,Daten[2:5])$x
             LD1         LD2
 [1,]  5.7196022 -1.81352259
 [2,]  4.0764438 -1.97270615
 [3,]  5.2237753 -1.72316898
 [4,]  5.1481074 -0.76379696
 [5,]  6.2555371  0.51016003
 [6,]  3.0331483 -1.96651601
 [7,]  5.6955760 -0.67963348
 [8,]  4.8860099 -1.32616981
 [9,]  4.0065427 -2.13309370
[10,]  3.5748501 -0.76259296
[11,]  4.6580474 -1.79320292
[12,]  0.6089981  1.88131948
[13,]  5.6199081  0.27973855
[14,]  4.5367108  1.31034850
[15,]  3.9825166 -0.99920458
[16,] -0.6264938  1.48552430
[17,] -1.0341603  1.72213592
[18,]  0.6089981  1.88131948
[19,] -0.2647023 -0.04536398
[20,]  0.6147649  0.76155990
[21,] -0.6264938  1.48552430
[22,] -0.3643963  2.04789716


[23,]  0.3810356  1.41428637
[24,]  0.1074044  3.09143266
[25,]  1.0166646  1.64470786
[26,]  0.2769995  1.15855907
[27,]  0.2769995  1.15855907
[28,]  1.2446271  2.11174096
[29,]  1.0108977  2.76446743
[30,] -1.0982945  0.44198880
[31,] -4.5885477 -1.47730053
[32,] -4.6824749 -0.50379897
[33,] -4.1167470 -0.43376503
[34,] -3.5567859  0.75602848
[35,] -4.9263131 -1.08030137
[36,] -4.1866481 -0.59415258
[37,] -5.4163731 -2.10970733
[38,] -5.4221400 -0.98994775
[39,] -4.8564121 -0.91991382
[40,] -3.8488827 -0.99115175
[41,] -4.0526128  0.84638209
[42,] -4.4247194 -2.29041455
[43,] -4.5244135 -0.19715341
[44,] -3.7789816 -0.83076420
[45,] -6.1675719 -0.35633697

Bild 10: predict-Ausgabe

Hier fällt die Übersicht über die Gruppen A, B und C nicht mehr so leicht wie im 2-Gruppen-Beispiel, da der “Separator” nun nicht nur einfach das Vorzeichen ist. In diesem Fall hilft eine R-Grafik weiter (Bild 11):

Bild 11: Grafische Ausgabe geschätzten Diskriminanzwerte y

Für einen komplett neuen Datensatz, z. B. die Bewertungen Sicherheit = 5, Umwelt = 5, Innovation = 4 und Prestige = 5, sieht dann die Vorhersage wie folgt aus:

            Test <- c(5,5,4,5)

            predict(d.Funk,Test)
            $class
            [1] C
            Levels: A B C

            $posterior
                      A            B         C
            [1,] 1.186296e-05 0.1492650 0.8507231

            $x
                       LD1       LD2
            [1,] -1.296464 -2.278693

Die Ausgabe $posterior zeigt wieder die wahrscheinliche Gruppenzugehörigkeit an (mit 85%iger Wahrscheinlichkeit zur Gruppe C) und die Ausgabe $x die Diskriminanzwerte.

Sie können obige Beispiele wie auf der Seite Diskriminanzanalyse mit dem R-Paket LinDA beschrieben nacharbeiten oder auch nur die Beispieldaten zu Ihrer eigenen Verwendung downloaden:

Seitenanfang

Hat der Inhalt Ihnen weitergeholfen und Sie möchten diese Seiten unterstützen?

Impressum

Datenschutz