Datensatz "Umfrage Fernbleiben" - R Commander

Analyse zum Datensatz “Umfrage”

Der Vorschlag zum Thema der vorliegenden Umfragedaten wurde im Zuge der Lehrveranstaltung “Vertiefung in statistische Methoden der Wildtierforschung” an der Universität für Bodenkultur Wien im Wintersemester 2018/19 von den Studierenden Anja Stefanie Manninger, Vanessa Schüller und Felix Schiestl eingereicht. Der vorliegende Datensatz ist das Ergebnis dieser Umfrage, die von Studenten/Studentinnen der Lehrveranstaltung durchgeführt wurde und sich mit den Gründen für das Fernbleiben in Vorlesungen ohne Anwesenheitspflicht befasst.

Disclaimer: Dieser Datensatz entstand im Zuge einer Lehrveranstaltung und hatte zum Ziel die Handhabung und Analyse eines selbst erhobenen Datensatzes zu üben. Dieser Datensatz ist in keinster Weise als repräsentativ anzusehen, die Ergebnisse und der Inhalt dieses Dokuments eignen sich somit nicht zur Vewendung in wissenschaftlichen Arbeiten.

Wir beginnen mit dem Einlesen des vorliegenden Datensatzes. Dazu findet sich im Menü Datenmanagement die Option Importiere Daten aus Textdatei, Zwischenablage oder URL.

Befehl zum Einlesen des Datensatzes

Befehl zum Einlesen des Datensatzes

Beim Einlesen der Daten ist zu beachten, dass in diesem csv-file Strichpunkte (“;”) als Datenfeldtrennzeichen zum Einsatz kamen. Wir benennen den Datensatz in unserem Beispiel mit “fern”, da sich die Umfrage mit dem Fernbleiben von Vorlesungen befasst.

Kommas als Datenfeldtrennzeichen und Benennung des Datensatzes

Kommas als Datenfeldtrennzeichen und Benennung des Datensatzes

Um einen ersten Überblick über die Daten zu erhalten, erstellen wir eine Zusammenfassung der aktiven Datenmatrix mit dem Befehl Aktive Datenmatrix im Menü Statistik/ Deskriptive Statistik.

Zusammenfassung der aktiven Datenmatrix

Zusammenfassung der aktiven Datenmatrix

In der Konsole von R erscheint nun folgende Ausgabe:

Rcmdr> summary(fern)
 f01a.immer.da f02a.lerne.besser f02b.lva.ueberschneidung
 j   : 46      Min.   :1.000     Min.   :1.00            
 n   :416      1st Qu.:2.000     1st Qu.:2.00            
 NA's:  5      Median :2.000     Median :2.00            
               Mean   :2.144     Mean   :2.47            
               3rd Qu.:3.000     3rd Qu.:3.00            
               Max.   :4.000     Max.   :4.00            
               NA's   :49        NA's   :50              
 f02c.privater.konflikt f02d.lehrmethode  f02e.morgen     f02f.mittag   
 Min.   :1.000          Min.   :1.000    Min.   :1.000   Min.   :1.000  
 1st Qu.:2.000          1st Qu.:2.000    1st Qu.:2.000   1st Qu.:3.000  
 Median :2.000          Median :2.000    Median :3.000   Median :4.000  
 Mean   :2.511          Mean   :2.242    Mean   :2.667   Mean   :3.289  
 3rd Qu.:3.000          3rd Qu.:3.000    3rd Qu.:4.000   3rd Qu.:4.000  
 Max.   :5.000          Max.   :5.000    Max.   :5.000   Max.   :5.000  
 NA's   :56             NA's   :53       NA's   :50      NA's   :52     
   f02g.abend      f02h.beruf      f02i.raum       f03.alter    
 Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
 1st Qu.:3.000   1st Qu.:2.000   1st Qu.:2.000   1st Qu.:2.000  
 Median :4.000   Median :3.000   Median :3.000   Median :2.000  
 Mean   :3.318   Mean   :2.821   Mean   :3.061   Mean   :2.115  
 3rd Qu.:4.000   3rd Qu.:4.000   3rd Qu.:4.000   3rd Qu.:2.000  
 Max.   :5.000   Max.   :5.000   Max.   :5.000   Max.   :4.000  
 NA's   :58      NA's   :54      NA's   :56      NA's   :6      
 f04.geschlecht  f05a.studium                         f05b.studium.anders
 m   :214       ubrm   :245   Agrar- und Ern<e4>hrungswirtschaft:  4     
 w   :244       ktww   : 56   Biologie                          :  2     
 NA's:  9       aw     : 49   internationale entwicklung        :  2     
                lap    : 33   bwl                               :  1     
                fw     : 20   BWL                               :  1     
                (Other): 54   (Other)                           :  9     
                NA's   : 10   NA's                              :448     
       f06a.wohnform f06b.wohnform.anders  f07.semester    f08a.herkunft
 wg           :245   Eltern:  1           Min.   : 1.000   w      :122  
 eltern       : 58   NA's  :466           1st Qu.: 3.000   n      : 93  
 partner      : 57                        Median : 5.000   o      : 67  
 einzel       : 52                        Mean   : 4.911   anders : 38  
 studentenheim: 39                        3rd Qu.: 7.000   stmk   : 31  
 (Other)      : 11                        Max.   :14.000   (Other): 98  
 NA's         :  5                        NA's   :5        NA's   : 18  
  f08b.herkunft.anders
 Deutschland: 16      
 deutschland:  6      
 suedtirol  :  4      
 Suedtirol  :  4      
 s<fc>dtirol:  3      
 (Other)    : 19      
 NA's       :415      

Wie aus der Zusammenfassung ersichtlich ist, handelt es sich um 467 Beobachtungen in 19 Variablen. Wir interessieren uns für die Beobachtungen, die Angaben in Frage zwei, Frage drei und Frage vier enthalten. Dazu erstellen wir einen neuen Datensatz fern2, der lediglich die Beobachtungen enthält, die Antworten in diesen Fragen enthalten. Dazu wählen wir unter Datenmanagement/Aktive Datenmatrix den Befehl Fälle mit fehlenden Werten entfernen ...:

Entfernen von unvollständigen Beobachtungen

Entfernen von unvollständigen Beobachtungen

Da wir für unsere Analyse nur die Antworten zu den Fragen zwei, drei und vier benötigen, schließen wir auch nur in diesen Fragen unvollständige Werte aus. (Achtung: das Kontrollkästchen über der Auswahlliste muss unbedingt abgewählt werden)

Entfernen von unvollständigen Beobachtungen

Entfernen von unvollständigen Beobachtungen

Rcmdr> fern2 <- na.omit(fern[,c("f02a.lerne.besser","f02b.lva.ueberschneidung","f02c.privater.konflikt","f02d.lehrmethode","f02e.morgen","f02f.mittag","f02g.abend","f02h.beruf","f02i.raum","f03.alter","f04.geschlecht")])

Zunächst interessieren wir uns ausschließlich für die Antworten auf Frage 2. Also betrachten wir, analog zum Vorgehen oben, diesmal mit dem Befehl Zusammenfassung numerischer Variablen, die Zusammenfassung des neuen Datensatzes fern2, jedoch ausschließlich für die Variablen aus Frage 2. Hierfür müssen im Befehlsfenster lediglich alle mit “f02…” beginnenden Variablen ausgewählt werden.

Rcmdr> numSummary(fern2[,c("f02a.lerne.besser", "f02b.lva.ueberschneidung", "f02c.privater.konflikt", "f02d.lehrmethode", "f02e.morgen", "f02f.mittag", "f02g.abend", "f02h.beruf", "f02i.raum"), drop=FALSE], statistics=c("mean", "sd", "IQR", "quantiles"), quantiles=c(0,.25,.5,.75,1))
                             mean        sd IQR 0% 25% 50% 75% 100%   n
f02a.lerne.besser        2.139896 0.8412199   1  1   2   2   3    4 386
f02b.lva.ueberschneidung 2.471503 0.9537166   1  1   2   2   3    4 386
f02c.privater.konflikt   2.512953 0.9594848   1  1   2   2   3    5 386
f02d.lehrmethode         2.233161 0.8604069   1  1   2   2   3    5 386
f02e.morgen              2.689119 1.0819587   2  1   2   3   4    5 386
f02f.mittag              3.287565 0.8695129   1  1   3   4   4    5 386
f02g.abend               3.365285 0.9138115   1  1   3   4   4    5 386
f02h.beruf               2.857513 1.1225703   2  1   2   3   4    5 386
f02i.raum                3.090674 0.9504974   2  1   2   3   4    5 386

Im vorliegenden Fall sind die Antwortmöglichkeiten von 1 (“trifft völlig zu”) bis 4 (“trifft gar nicht zu”) codiert. Die Antwortmöglichkeit “keine Angabe” (codiert als NA) ist im vorliegenden Fall nicht möglich, da Beobachtungen mit fehlenden Antworten bereits entfernt wurden. Hohe Werte des arithmetischen Mittels zeigen hier also eine Tendenz zur Ablehnung der beschriebenen Begründung. Es ist zu beachten, dass ein Wert von \(2.5\) keinerlei Tendenz, also im Schnitt keiner Zu- oder Ablehnung entspricht.

Zur weiteren Analyse der Daten führen wir nun eine Hauptkomponentenanalyse (PCA - “Principal Component Analysis”) durch. Im R-Commander benötigen wir dazu den Befehl Hauptkomponenten-Analyse ..., der unter Statistik/Dimensionsreduktion und Klassifizieren zu finden ist

PCA

PCA

Als Variablen wählen wir wieder ausschließlich, die Bestandteile der zweiten Frage (“f02…”). Außerdem muss in den Optionen die Auswahl Analysiere Korrelationsmatrix aufgehoben werden, da dies die Berechnungsmethode beeinflusst.

PCA

PCA

Rcmdr> .PC <- princomp(~f02a.lerne.besser+f02b.lva.ueberschneidung+f02c.privater.konflikt+f02d.lehrmethode+f02e.morgen+f02f.mittag+f02g.abend+f02h.beruf+f02i.raum, cor=FALSE, data=fern2)
Rcmdr> cat("\nComponent loadings:\n")

Component loadings:
Rcmdr> print(unclass(loadings(.PC)))
                              Comp.1       Comp.2       Comp.3      Comp.4
f02a.lerne.besser         0.08927101  0.022066503  0.346865096  0.48863101
f02b.lva.ueberschneidung -0.21749349 -0.077624390 -0.529236633  0.61190920
f02c.privater.konflikt    0.36878275 -0.218089787  0.424479415 -0.11359830
f02d.lehrmethode          0.09198694  0.158555577  0.316798794  0.46320927
f02e.morgen               0.62747521  0.065751914  0.007864173  0.30723953
f02f.mittag               0.38636783 -0.057992592 -0.260696763 -0.09371350
f02g.abend                0.39281558  0.003036020 -0.243079722 -0.21173545
f02h.beruf               -0.03037367 -0.955534693  0.025255754  0.09013561
f02i.raum                 0.31942616 -0.006501981 -0.437377057  0.05661088
                              Comp.5      Comp.6      Comp.7      Comp.8
f02a.lerne.besser         0.13420039  0.09043301  0.34807444  0.54755778
f02b.lva.ueberschneidung -0.03043678  0.32783683 -0.42198051  0.07041342
f02c.privater.konflikt    0.24604562  0.15666861 -0.71179585  0.17444719
f02d.lehrmethode          0.41223726  0.07362388  0.16366461 -0.52683261
f02e.morgen              -0.64644107 -0.22187508 -0.05957726 -0.18655324
f02f.mittag               0.04077323  0.21345935  0.28524939  0.47109087
f02g.abend                0.16856828  0.62570495  0.18791877 -0.32169275
f02h.beruf               -0.03233967 -0.07021917  0.21145347 -0.16290999
f02i.raum                 0.54915955 -0.60261803 -0.04893366  0.02198618
                               Comp.9
f02a.lerne.besser         0.430470544
f02b.lva.ueberschneidung -0.026791053
f02c.privater.konflikt   -0.034353069
f02d.lehrmethode         -0.414458071
f02e.morgen               0.045026653
f02f.mittag              -0.648143937
f02g.abend                0.427838059
f02h.beruf               -0.006307942
f02i.raum                 0.189257940
Rcmdr> cat("\nComponent variances:\n")

Component variances:
Rcmdr> print(.PC$sd^2)
   Comp.1    Comp.2    Comp.3    Comp.4    Comp.5    Comp.6    Comp.7 
1.7279134 1.3130985 1.0602007 0.8664636 0.8199903 0.6963388 0.6596637 
   Comp.8    Comp.9 
0.5600746 0.4784895 
Rcmdr> cat("\n")
Rcmdr> print(summary(.PC))
Importance of components:
                          Comp.1    Comp.2    Comp.3    Comp.4    Comp.5
Standard deviation     1.3145012 1.1459051 1.0296605 0.9308403 0.9055331
Proportion of Variance 0.2111787 0.1604817 0.1295735 0.1058957 0.1002159
Cumulative Proportion  0.2111787 0.3716604 0.5012339 0.6071297 0.7073456
                           Comp.6     Comp.7     Comp.8     Comp.9
Standard deviation     0.83446917 0.81219682 0.74838129 0.69172935
Proportion of Variance 0.08510376 0.08062147 0.06845009 0.05847908
Cumulative Proportion  0.79244936 0.87307083 0.94152092 1.00000000

In der Zusammenfassung der Hauptkomponentenanalyse können wir ablesen welcher Anteil der Varianz durch die verschiedenen Hauptkomponenten abgedeckt wird. Beispielsweise wird durch die ersten zwei Hauptkomponenten bereits 37% der Varianz im Datensatz abgedeckt. Außerdem können wir die Zugehörigkeiten der einzelnen Variablen zu den Hauptkomponenten an den sogenannten “loadings” ablesen. So zeigt sich zum Beispiel, dass die erste Hauptkomponente hauptsächlich aus Begründungen zum Fernbleiben von Vorlesungen aus zeitlichen Gründen besteht (betragsmäßig hohe Werte für f02c, f02e, f02f und f02g in der ersten Hauptkomponente Comp.1). In der zweiten Hauptkomponente Comp.2 geht es eher um berufliche Gründe (f02h).

Als nächstes wollen wir den Datensatz in 4 Gruppen (“Cluster”) unterteilen. Um Gruppen zu erhalten, in denen die Daten möglichst “nah” (im Sinne des quadrierten Abstandes) zum Gruppenmittel liegen, verwenden wir den Befehl Clusterzentrenanalyse.

Clusteranalyse

Clusteranalyse

Wir beziehen wieder alle Variablen der zweiten Frage in die Analyse, also alle Variablen beginnend mit “f02…”. Außerdem müssen wir unter Optionen die notwendigen Kästchen anklicken: Bi-Plot der Cluster und Clusterzugehörigkeit in Datenmatrix speichern.

Clusteranalyse

Clusteranalyse

Rcmdr> .cluster <-  KMeans(model.matrix(~-1 + f02a.lerne.besser + f02b.lva.ueberschneidung + f02c.privater.konflikt + f02d.lehrmethode + f02e.morgen + f02f.mittag + f02g.abend + f02h.beruf + f02i.raum, fern2), centers = 4, iter.max = 20, num.seeds = 10)
Rcmdr> .cluster$size # Cluster Sizes
[1]  94 111  60 121
Rcmdr> .cluster$centers # Cluster Centroids
  new.x.f02a.lerne.besser new.x.f02b.lva.ueberschneidung
1                2.031915                       2.606383
2                2.288288                       2.441441
3                2.083333                       2.633333
4                2.115702                       2.314050
  new.x.f02c.privater.konflikt new.x.f02d.lehrmethode new.x.f02e.morgen
1                     2.393617               2.095745          1.659574
2                     2.981982               2.234234          3.558559
3                     1.966667               2.250000          1.866667
4                     2.446281               2.330579          3.099174
  new.x.f02f.mittag new.x.f02g.abend new.x.f02h.beruf new.x.f02i.raum
1          3.191489         3.361702         3.723404        3.074468
2          3.558559         3.594595         3.729730        3.234234
3          2.250000         2.166667         2.250000        2.200000
4          3.628099         3.752066         1.685950        3.413223
Rcmdr> .cluster$withinss # Within Cluster Sum of Squares
[1] 502.5638 573.3153 487.0667 690.1653
Rcmdr> .cluster$tot.withinss # Total Within Sum of Squares
[1] 2253.111
Rcmdr> .cluster$betweenss # Between Cluster Sum of Squares
[1] 905.2309
Rcmdr> biplot(princomp(model.matrix(~-1 + f02a.lerne.besser + f02b.lva.ueberschneidung + f02c.privater.konflikt + f02d.lehrmethode + f02e.morgen + f02f.mittag + f02g.abend + f02h.beruf + f02i.raum, fern2)), xlabs = as.character(.cluster$cluster))

Rcmdr> fern2$KMeans <- assignCluster(model.matrix(~-1 + f02a.lerne.besser + f02b.lva.ueberschneidung + f02c.privater.konflikt + f02d.lehrmethode + f02e.morgen + f02f.mittag + f02g.abend + f02h.beruf + f02i.raum, fern2), fern2, .cluster$cluster)

Hier zeigt sich ein typisches Bild bei der Analyse von Umfragedaten: die vier Quadranten des Koordinatensystems bilden in etwa die 4 Gruppen. Die Gruppeneinteilung erfolgte im Groben also nach den beiden ersten Hauptkomponenten. Es zeigt sich beispielsweise in Gruppe 1 und Gruppe 2 eine Tendenz zu hohen Werten in der Variable f02h.beruf. (Achtung: bei einer Reproduktion der Analyse kann es vorkommen, dass die Nummerierung der Gruppen etwas anderes ausfällt) Wir erkennen hier wieder, dass die Variable f02h.beruf fast ausschließlich zur zweiten Hauptkomponente Comp.2 zuzuordnen ist, da sie hauptsächlich in vertikale Richtung zeigt. Die erste Hauptkomponente Comp.1 scheint hingegen aus den Variablen f02b.lva.ueberschneidung, f02c.privater.konflikt, f02e.morgen, f02f.mittag, f02g.abend und f02i.raum zu bestehen. In diesem Plot sind diese Eigenschaften aufgrund der überlappenden Schrift schwer abzulesen, bestätigen im Wesentlichen jedoch unsere Analyse zur Zusammenfassung der Hauptkomponentenanalyse von oben.

Es bleibt nun noch zu klären “wer” in welche Gruppe fällt, also welche Eigenschaften (Alter & Geschlecht) Befragte haben, die in die jeweiligen Gruppen fallen. Wir konzentrieren uns dabei auf die Unterscheidung nach Alter und Geschlecht. Im R-Commander ist diese Analyse nicht möglich, es kann jedochd der folgende Befehl in den R-Commander kopiert und anschließend ausgeführt werden.

Rcmdr> install.packages('party')
Rcmdr> library(party)
Rcmdr> fern.k4 <- KMeans(model.matrix(~-1 + f02a.lerne.besser + f02b.lva.ueberschneidung + f02c.privater.konflikt + f02d.lehrmethode + f02e.morgen + f02f.mittag + f02g.abend + f02h.beruf + f02i.raum, fern2), centers = 4, iter.max = 20, num.seeds = 10)
Rcmdr> fern.baum <- party::ctree(as.factor(fern.k4$cluster)~f03.alter+f04.geschlecht, data=fern2)
Rcmdr> plot(fern.baum)

Wir erkennen, dass der Geschlechterunterschied für keine der Gruppen signifikant zu sein scheint, da diese Kategorisierung im Baumdiagramm nicht auftaucht. Die Unterscheidung nach dem Alter erfolgt in zwei Stufen. Wir erinnern uns hierfür noch einmal an die Codierung der Variable f03.alter:

Codierung von Frage 3: Alter
Alter Codierung
<20 1
20 - 25 2
26 - 30 3
Älter als 30 4
keine Angabe NA

Die erste Unterteilung im Baumdiagramm entspricht also einer Teilung in Personen mit einem Alter \(\leq 25\) und \(> 25\). Die über 25 jährigen Personen fallen dabei in einen eigenen Knoten, der hauptsächlich aus Beobachtungen aus Gruppe 4 besteht. Weiter oben haben wir bereits analysiert, dass Befragte in Gruppe 1 einen auffällig niedrigen Wert der Variable f02h.beruf aufweisen. Dabei ist wieder zu beachten, dass niedrige Werte in dieser Variable einer hohen Zustimmung zur Aussage “Berufstätigkeit hindert mich am Besuch der Lehrveranstaltung” entsprechen. Das scheint plausibel, da ältere Studierende vermutlich eher berufstätig sind und dadurch auch die Gründe für das Fernbleiben von Vorlesungen gegeben sind. Für unter 25 jährige Personen sieht das Baumdiagramm eine weitere (feinere) Unterteilung in unter und über 20 Jährige vor. Hier ist wieder zu beobachten, dass Berufstätigkeit als Begründung für das Fernbleiben von Vorlesungen weiter an Wichtigkeit verliert je jünger der/die Befragte ist.