3.13 Miniprojekt

Den Datensatz für dieses Miniprojekt findest du hier

Am Ende jedes Moduls gehen wir gemeinsam ein kleines Projekt durch, welches die Inhalte des Moduls nochmal an einem Beispiel rekapituliert. In diesem Projekt werden wir den Datensatz human_resources genauer betrachten. Der Datensatz stammt von dieser Seite und umfasst Daten einer fiktiven Firma. Unter anderem umfasst der Datensatz das Einkommen der Mitarbeiter, ihre Entfernung zum Arbeitsort, ihre Position im Unternehmen und ihr Bildungsniveau.

Wir werden uns in diesem Miniprojekt vor allem mit der Importierung, der Transformation und der Exploration der Daten beschäftigen. Gleichzeitig werden wir bereits Jamovi kennenlernen, indem wir deskriptive Werte durch Jamovi berechnen und in R einfügen. Die Transformation der Daten werden im nächsten Modul noch ausführlicher behandelt. Zudem verzichten wir in diesem Modul noch auf die Visualisierung der Daten.

Ziel dieses Miniprojekts: Einen Datensatz in R einlesen, betrachten, verändern und in eine CSV-Datei exportieren. Anschließend den Datensatz in Jamovi anschauen.

Wenn du das Miniprojekt selber umsetzen möchtest, erstelle zunächst in R-Studio eine neue R-Datei und speichere diese auf deinem Laptop:

Zunächst müssen wir immer in der ersten Zeile des Skripts die Pakete eintragen, welche wir für die Datenanalyse benötigen.

Anschließend laden wir den Datensatz in R. Stelle zunächst sicher, dass du das Arbeitsverzeichnis bestimmt hast (STRG + Umschalt + H). Am besten befindet sich die Datei hr_cleaned.csv im Arbeitsverzeichnis.

Zu Beginn der Datenanalyse schauen wir in der Regel, welche Variablen ein Datensatz umfasst:

## Observations: 1,470
## Variables: 17
## $ id                         <dbl> 1, 2, 3, 4, …
## $ age                        <dbl> 41, 49, 37, …
## $ department                 <chr> "Sales", "Re…
## $ distance_from_home         <dbl> 1, 8, 2, 3, …
## $ education                  <chr> "College", "…
## $ employee_count             <dbl> 1, 1, 1, 1, …
## $ gender                     <chr> "Female", "M…
## $ job_role                   <chr> "Sales Execu…
## $ job_satisfaction           <chr> "Very High",…
## $ marital_status             <chr> "Single", "M…
## $ monthly_income             <dbl> 5993, 5130, …
## $ num_companies_worked       <dbl> 8, 1, 6, 1, …
## $ performance_rating         <chr> "Excellent",…
## $ total_working_years        <dbl> 8, 10, 7, 8,…
## $ work_life_balance          <chr> "Bad", "Bett…
## $ years_at_company           <dbl> 6, 10, 0, 8,…
## $ years_since_last_promotion <dbl> 0, 1, 0, 3, …

Im Output siehst du, dass der Datensatz 17 Variablen und 1470 Reihen umfasst. Die Anzahl der Reihen können wir ebenso durch die Funktion nrow anzeigen lassen:

## [1] 1470

Die Anzahl der Variablen können wir uns durch die Funktion ncol anzeigen lassen:

## [1] 17

Nun wissen wir die wichtigsten Daten über den Datensatz. Uns interessieren allerdings etwas tiefgründigere Fragen. Beispielsweise, in welcher Häufigkeit geben die Mitarbeiter des Unternehmens, welche Angabe zur Arbeitszufriedenheit an?

## # A tibble: 4 x 2
##   job_satisfaction     n
##   <chr>            <int>
## 1 High               442
## 2 Low                289
## 3 Medium             280
## 4 Very High          459

count kannst du für alle Variablen verwenden, die nicht so viele Ausprägungen haben. Zum Beispiel nominalskalierte Daten. Für Variablen, die als Zahlen vorliegen, würde count wenig Sinn machen.

Ebenso könnten wir uns anschauen, wie sich die Work-Life-Balance der Mitarbeiter verteilt:

## # A tibble: 4 x 2
##   work_life_balance     n
##   <chr>             <int>
## 1 Bad                  80
## 2 Best                153
## 3 Better              893
## 4 Good                344

Man könnte sich ebenso fragen, wie alt die Mitarbeiter im Schnitt sind:

## [1] 36.92381
## [1] 36.92381

Du siehst, dass wir im zweiten Beispiel den Pipe-Operator verwendet haben, um dessen Konzept nochmal zu verdeutlichen. Der Pipe-Operator übergibt den Output des Befehls human_resources$age in die Funktion mean. Da das erste Argument der Funktion mean ein Vektor ist, kann die Variable durch den Pipe-Operator übergeben werden. Wir hätten auch schreiben können:

Genausogut können wir das monatliche Gehalt der 1470 Mitarbeiter berechnen:

## [1] 6502.931

Der Betrag scheint relativ hoch, dieser ist allerdings vermutlich in Dollar und in Brutto angegeben.

Stell dir vor, du möchtest nun klären, wie das Alter und das Einkommen der Mitarbeiter korreliert, die mit ihrem Job nicht zufrieden sind. Hierfür müssen wir mehrere Schritte umsetzen. Zunächst müssen wir die Mitarbeiter aus den Daten filtern, die nicht zufrieden sind. Anschließend müssen wir diese Daten in einer Variable speichern und eine Korrelation berechnen. Versuchen wir zunächst die unglücklichen Mitarbeiter aus dem Datensatz zu filtern. Diese Informationen stecken in der Variable job_satisfaction:

## # A tibble: 4 x 2
##   job_satisfaction     n
##   <chr>            <int>
## 1 High               442
## 2 Low                289
## 3 Medium             280
## 4 Very High          459

Uns interessieren demnach die Mitarbeiter, die Low bei der Arbeitszufriedenheit angeben. Diese können wir aus dem Datensatz filtern und in der Variable unhappy_employees speichern.

Nun können wir die Korrelation der beiden Variablen berechnen:

## [1] 0.4840949

Es handelt sich um eine mittlere positive Korrelation. Je älter man ist, desto mehr verdient man, bzw. je mehr man verdient, desto älter ist man.

Wir werden später Daten, die wir gereinigt haben, exportieren wollen, um mit den gereinigten Daten statistische Verfahren berechnen zu können. Um die gereinigten Daten zu exportieren, verwendest du die Funktion write_csv :

Führe diese Funktion einmal selbst aus. Im Arbeitsverzeichnis solltest du nun eine neue CSV-Datei mit eben diesem Namen finden. Diese Datei können wir nun in Jamovi laden:

Wir möchten im nächsten Schritt mit Jamovi die deskriptive Statistik einzelner Variablen des Datensatzes berechnen:

Wir möchten im nächsten Schritt die zentralen Kennwerte der wichtigen intervallskalierten Variablen berechnen:

Diese Ergebnisse können wir anschließend in R überführen, indem wir auf das Menü rechts oben in Jamovi klicken:

Dort können wir nun auf das Feld Syntax mode klicken und den Output für R kopieren:

Diesen Code fügen wir anschließend in R ein:

## 
##  DESCRIPTIVES
## 
##  Descriptives                                                                                       
##  -------------------------------------------------------------------------------------------------- 
##                          age     years_at_company    monthly_income    years_since_last_promotion   
##  -------------------------------------------------------------------------------------------------- 
##    N                      289                 289               289                           289   
##    Missing                  0                   0                 0                             0   
##    Mean                  36.9                6.99              6562                          2.31   
##    Median                36.0                5.00              4968                          1.00   
##    Standard deviation    9.25                6.24              4645                          3.46   
##    Variance              85.5                39.0           2.16e+7                          11.9   
##    Range                 41.0                36.0             18852                          15.0   
##    Minimum               19.0                0.00              1091                          0.00   
##    Maximum               60.0                36.0             19943                          15.0   
##  --------------------------------------------------------------------------------------------------

Achte darauf, dass wir den Namen des Datensatzes geändert haben (data = unhappy_employees). Dies müssen wir jedes Mal machen, da das Paket jmv ansonsten nicht weiß, aus welchem Datensatz er die Berechnungen durchführen soll. Wir werden in diesem Kurs immer wieder den Output von Jamovi kopieren und ihn in R speichern. Hierdurch können wir unsere Ergebnisse besser dokumentieren.