1. Grundlegendes zur Abschlussarbeit/Projektarbeit/Seminararbeit

Folgende Unterlagen als Dateien uploaden:

  1. Arbeit als PDF (Achtung: Fragebogen kommt immer in den Anhang der Arbeit, niemals die Auswertungen, diese kommen in die Arbeit, Siehe hierzu mein Leitfaden hilfreich.))

  2. Codebook: Hier ist die Kodierung der Fragen im Fragebogen enthalten (Genauer: Welche Variable in den Daten entspricht welcher Frage im Fragebogen)

  3. Daten als csv so codiert, dass die Daten mit dem Codebook übereinstimmen.

  4. Flüchtigen Quellen (Internetseiten)

  5. R-Skript der Datenanalyse

Achtung

2. Daten aus unterschiedlichen Formaten in R einlesen.

Wichtig: Datenfenster (rechts oben in RStudio) sollte vor dem Start der Datenanalyse immer leer sein.

Wo liegen die Daten?

=> Irgendwo in einem Ordner

=> Einfachste Möglichkeit: Einen relativen Pfad verwenden, d.h. man gibt nur den Dateinamen mit Endung an und muss aber das Skript im gleichen Ordner haben wie die Daten.

Arbeitsverzeichnis von R Studio

getwd() #Suchen des aktuelle Arbeitsverzeichnises
setwd('C://datei/pfad') #Wechselt das aktuelle Arbeitsverzeichnis.

=> Zum Start der Datenanalyse nicht RStudio, sondern das Skript mit RStudio öffnen.

Zur Kontrolle vom Workspace: getwd()

Wichtig noch vor dem Start: Einstellung RStudio: Tools/Options/Code: Hier bei Savings Default Text encoding auf UTF-8 einstellen.

Die Daten heißen “Daten_GFK.csv”

Sind die Daten auch csv? Überprüfen mit: anschauen mit Text-Editor. CSV ist immer ; separiert Zur Not mit Excel öffnen und als CSV (Trennzeichen getrennt) speichern.

Achtung: ; = deutsch und , = Rest der Welt

; = csv2 , = csv

Daten einlesen

Die Daten zum Repetitorium können Sie unter http://www.gansser.de/data/Daten_GFK.csv kostenlos downloaden. Wenn Sie die Daten in einen Ordner legen und dann ein Skript in R Studio anlegen, können Sie die Daten ganz einfach mit den folgenden Befehlen einlesen. Wenn Sie später mit einem RSkript die Daten einlesen möchten, genügt das Öffnen des Skiptes und ausführen der Befehle. Dieses Vorgehen macht den Umgang mit Daten sehr einfach.

Tipp: Wenn Sie Ihre Arbeit unterbrechen, dann hinterlassen Sie Ihr Skript so (Speichern nicht vergessen), das sie beim Öffnen des Skiptes das Skipt einfach durchlaufen lassen (Alles Markieren mit Str+Alt und dann Ausführen mit run) können und dann an der Stelle weiterarbeiten an der Sie zuletzt gearbeitet haben. Damit werden alle Prozesse vom Einlesen bis zur Aufbereitung und Datenanalyse nochmals durchgeführt. Das hat den Vorteil, dass Sie immer nur mit einem Datensatz und mit einem funktionierenden Skript arbeiten, dass Sie dann bei der Abgabe der Arbeit zusammen mit den Daten auch Fhelerfrei abgeben können. Was bei Ihnen läuft, läuft auch auf jedem anderen Rechner. Zudem kann auf diese Weise auch das Zusammenarbeit in Projektgruppen erleichtert werden z. B. über ein gemeinsames Laufwerk (wo auch immer das liegt).

Aus dem csv Datenformat:

data<-read.csv2("Daten_GFK.csv")

Aus Rdata Datenformat:

data<-load("filename.RData")

Daten speichern

Als csv Daten:

write.csv(data, "filename.csv")

Als RData:

save(df, file = "filename.csv)

3. Daten für die Analyse aufbereiten (Umbenennen von Variablennamen, Datenklassen definieren, Umgang mit Missing Values, Datenhandling und Umgang mit RSkript).

# Laden von Mosaic (ggf. vorher installieren mit install.packages())
library(mosaic)

3.1 Verwendete Daten / Beschreibung

In den nachfolgenden Analyse wird ein Datensatz verwenden bei dem die Berufliche Belastung und die Gesundheit als multiattributes Konstrukt gemessen wurde. Zusätzlich wurde die Berufliche Belastung als Auswahlentscheidung (ja/nein) gemessen. Außerdem wurde das Geschlecht und der akademische Abschluss erfasst Nachfolgend die Codierung der Konstrukte:


Berufliche Belastung (Maslach MBI)
V3_1 Ich fühle mich von meiner Arbeit emotional ausgelaugt
V3_2 Ich fühle mich am Ende eines Arbeitstages geschafft
V3_3 Ich fühle mich erschöpft, wenn ich morgens aufstehe und wieder einen Arbeitstag vor mir habe
V3_4 Immer mit Menschen zu arbeiten, bedeutet eine große Anspannung für mich
V3_5 Ich fühle mich ausgebrannt von meiner Arbeit.
V3_6 Ich fühle mich frustriert in meinem Beruf
V3_7 Ich fühle, dass ich in meinem Beruf zu hart arbeite
V3_8 Es bedeutet für mich zu viel Stress, direkt mit Menschen zu arbeiten
V3_9 Ich habe das Gefühl, als ob ich am Ende wäre

Berufliche Belastung
V8 Wenn Sie eine Entscheidung treffen müssten, wie würden Sie antworten? (ja = 1, nein = 2)

Gesundheit
V9_1 Waren Sie in den letzten 12 Monaten aufgrund ihrer Arbeitsbelastung oft krankgeschrieben?
V9_2 Haben Sie den Wunsch nach einer Auszeit?
V9_3 Hatten Sie schon einmal darüber nachgedacht, alles hinzuschmeißen?
V9_4 Gibt es in Ihrem Unternehmen psychisch beanspruchte Mitarbeiter mit auffälligem Arbeitsverhalten?
V10_1 Konzentrationsstörungen
V10_2 Schlafstörungen
V10_3 Antriebslosigkeit
V10_4 Müdigkeitserscheinungen
V10_5 Überlastungserscheinungen
V10_6 Angespanntheitserscheinungen

Soziodemographische Daten
V11_1 Was für ein Geschlecht haben Sie? (männlich = 1, weiblich = 2)
V11_3 Haben Sie einen akademischen Abschluss?

3.2 Daten anschauen (inspizieren)

inspect(data)
## Warning: `data_frame()` is deprecated as of tibble 1.1.0.
## Please use `tibble()` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_warnings()` to see where this warning was generated.
## 
## categorical variables:  
##    name  class levels   n missing                                  distribution
## 1 V11_3 factor      5 134       0 Universität (37.3%) ...                      
## 
## quantitative variables:  
##     name   class min   Q1 median   Q3 max     mean       sd   n missing
## 1   V3_1 integer   1 2.00    3.0 5.00   6 3.335821 1.440259 134       0
## 2   V3_2 integer   1 2.00    3.0 4.00   6 2.985075 1.359926 134       0
## 3   V3_3 integer  -9 2.00    4.0 5.00   6 3.701493 1.923460 134       0
## 4   V3_4 integer  -9 3.25    5.0 5.00   6 4.343284 1.856120 134       0
## 5   V3_5 integer  -9 3.00    5.0 5.00   6 4.208955 1.911873 134       0
## 6   V3_6 integer  -9 3.00    4.0 6.00   6 3.895522 2.528837 134       0
## 7   V3_7 integer  -9 2.00    3.0 5.00   6 3.313433 2.132519 134       0
## 8   V3_8 integer  -9 4.00    5.0 6.00   6 4.589552 2.177163 134       0
## 9   V3_9 integer   1 4.00    5.0 6.00   6 4.731343 1.532427 134       0
## 10    V8 integer  -9 1.00    1.0 2.00   2 1.022388 1.824917 134       0
## 11  V9_1 integer   1 4.25    6.0 6.00   6 4.932836 1.467430 134       0
## 12  V9_2 integer   1 2.00    3.0 5.00   6 3.373134 1.817507 134       0
## 13  V9_3 integer   1 1.00    3.0 5.00   6 3.388060 1.969353 134       0
## 14  V9_4 integer   1 1.25    2.5 4.00   6 2.880597 1.617781 134       0
## 15 V10_1 integer   1 2.00    4.0 5.75   6 3.992537 1.692515 134       0
## 16 V10_2 integer   1 2.00    5.0 5.75   6 4.059701 1.711356 134       0
## 17 V10_3 integer   1 2.00    4.0 5.00   6 3.858209 1.730544 134       0
## 18 V10_4 integer  -9 2.00    3.0 5.00   6 3.089552 1.997979 134       0
## 19 V10_5 integer   1 2.00    3.0 5.00   6 3.619403 1.684939 134       0
## 20 V10_6 integer   1 2.00    3.0 5.00   6 3.447761 1.706102 134       0
## 21 V11_1 integer  -9 1.00    1.0 2.00   2 1.052239 2.045781 134       0

Daten, falls nötig recodieren (z. B. bei 6 Stufen):

data$Variable<-7-data$Variable

3.3 -9 durch NA ersetzen

data[data == -9] <- NA

3.4 Fälle die weniger als 80% im Fragebogen ausgefüllt haben löschen

# data<-data[-which(rowMeans(is.na(data)) > 0.2), ] 

# Alternativ kann auch einen Variablenauswahl vorgenommen werden mit is.na(data[])

3.5 Sind alle Factorvariablen richtig klassifiziert?

Klassentypen

data$Variable<- as.logical(data$Variable) 
data$Variable<- as.numeric(data$Variable)
data$Variable<- as.charachter(data$Variable)
data$Variable<- as.factor(data$Variable)

Nützliche Umgebungsbefehle

ls() # Listet alle geladenen Objekte auf
rm(data) #löscht geladene einzelne Objekte

Wir sehen in der Rohdatenmatrix, dass V8 und V11_1 noch numerisch sind, aber eigentlich kategorial sein müssen.

# numerisch in factor wandeln
data$V8<-as.factor(data$V8)
# Levels anzeigen
levels(data$V8)
## [1] "1" "2"
# Wörter zuweisen
levels(data$V8)<-c("ja", "nein")

Hier nochmal mit beruflicher Belastung (V11_1)

data$V11_1<-as.factor(data$V11_1)
levels(data$V11_1)
## [1] "1" "2"
levels(data$V11_1)<-c("männlich", "weiblich")

3.6 Missing Values ersetzten durch den Mittelwert der Spalte

library(imputeTS) #(ggf. vorher installieren mit install.packages())
data<-data%>%
  na.mean() # nur die metrischen Variablen 

3.7 Alle quantitativen Variablen auf numerisch klassifizieren

data<-data%>% 
  mutate_if(is.integer, as.numeric)

4. Datenstruktur prüfen (Korrelation, Dimensionsreduktion, Dimensionen zusammenfassen).

Mit Matritzen arbeiten

data[1,]    # zieht eine Ziele aus den Daten, hier die Zeile 1
data[,1]    # Zieht eine Spalte aus den Daten, heir die Spalte 1
data[1,1]   # Zieht den Wert von Zeile 1 und Spalte 1 aus den Daten
nrow(data)  # Anzahl zeiolen in der Matrix
ncol(data)  # Anzahl Soalten in der Matrix
dim(data)   # Anzahl Zeilen und Spalten in der Matrix

4.1. Kontrolle der Variablennummern

Oftmals ist es nützlich zu wissen, welche Variable in welcher Spalte im Datensatz steht. Bsp. will man für eine Analyse die Variablen 1 bis 9 analysieren.

t(colnames(data))
##      [,1]   [,2]   [,3]   [,4]   [,5]   [,6]   [,7]   [,8]   [,9]   [,10]
## [1,] "V3_1" "V3_2" "V3_3" "V3_4" "V3_5" "V3_6" "V3_7" "V3_8" "V3_9" "V8" 
##      [,11]  [,12]  [,13]  [,14]  [,15]   [,16]   [,17]   [,18]   [,19]  
## [1,] "V9_1" "V9_2" "V9_3" "V9_4" "V10_1" "V10_2" "V10_3" "V10_4" "V10_5"
##      [,20]   [,21]   [,22]  
## [1,] "V10_6" "V11_1" "V11_3"

4.2. Korrelation

Ab einer bestimmten Anzahl Variablen sind Korrelationen als Matrix unübersichtlich:

cor(data[1:9])
##           V3_1      V3_2      V3_3      V3_4      V3_5      V3_6      V3_7
## V3_1 1.0000000 0.6935573 0.5881608 0.3927289 0.6316085 0.5005854 0.5292586
## V3_2 0.6935573 1.0000000 0.5964152 0.3237101 0.4716255 0.4090624 0.4717270
## V3_3 0.5881608 0.5964152 1.0000000 0.4049673 0.5958989 0.5978151 0.3637820
## V3_4 0.3927289 0.3237101 0.4049673 1.0000000 0.6146430 0.4983124 0.4175743
## V3_5 0.6316085 0.4716255 0.5958989 0.6146430 1.0000000 0.7597488 0.5682926
## V3_6 0.5005854 0.4090624 0.5978151 0.4983124 0.7597488 1.0000000 0.5083527
## V3_7 0.5292586 0.4717270 0.3637820 0.4175743 0.5682926 0.5083527 1.0000000
## V3_8 0.3601449 0.2513178 0.3689557 0.7673639 0.6070410 0.5768449 0.4371243
## V3_9 0.5147096 0.4057528 0.5626059 0.5334195 0.8163757 0.7567309 0.5351847
##           V3_8      V3_9
## V3_1 0.3601449 0.5147096
## V3_2 0.2513178 0.4057528
## V3_3 0.3689557 0.5626059
## V3_4 0.7673639 0.5334195
## V3_5 0.6070410 0.8163757
## V3_6 0.5768449 0.7567309
## V3_7 0.4371243 0.5351847
## V3_8 1.0000000 0.6140501
## V3_9 0.6140501 1.0000000

Besser ist ein chart.Correlation Plot. Der zeigt nicht nur die Korrelationen, sondern auch die Verteilung und die Signifikanz der Korrelationen.

data[,1:9]%>% # Alternativ anstatt 1:9 geht auch c(1,2,3,4,...9)
  chart.Correlation()

4.3 Dimensionsreduktion (Ausführlich im Skript Dimensionsreduktion)

Pakete laden

Hauptkomponentenanalyse

# 1. Korrelation (s.o.), diesmal die einfache, wegen der Übersicht. 

corrplot(cor(data[1:9]), order="hclust")

# 2. Screeplot

VSS.scree(data[1:9])

# 3. PCA (Principal component analysis=Hauptkomponentenanalyse)

pca<-principal(data[1:9], 2) # hier nicht vergessen die Anzahl Komponenten einzutragen
print(pca, cut=0.4, sort=TRUE)
## Principal Components Analysis
## Call: principal(r = data[1:9], nfactors = 2)
## Standardized loadings (pattern matrix) based upon correlation matrix
##      item  RC1  RC2   h2   u2 com
## V3_8    8 0.90      0.81 0.19 1.0
## V3_4    4 0.83      0.71 0.29 1.1
## V3_9    9 0.74 0.45 0.75 0.25 1.7
## V3_5    5 0.72 0.53 0.81 0.19 1.8
## V3_6    6 0.69 0.47 0.70 0.30 1.8
## V3_2    2      0.88 0.78 0.22 1.0
## V3_1    1      0.83 0.76 0.24 1.2
## V3_3    3      0.73 0.64 0.36 1.4
## V3_7    7 0.46 0.53 0.49 0.51 2.0
## 
##                        RC1  RC2
## SS loadings           3.43 3.03
## Proportion Var        0.38 0.34
## Cumulative Var        0.38 0.72
## Proportion Explained  0.53 0.47
## Cumulative Proportion 0.53 1.00
## 
## Mean item complexity =  1.4
## Test of the hypothesis that 2 components are sufficient.
## 
## The root mean square of the residuals (RMSR) is  0.07 
##  with the empirical chi square  49.8  with prob <  0.00014 
## 
## Fit based upon off diagonal values = 0.98

Anpassung der PCA durch Wegnahme von V3_7

VSS.scree(data[c(1:6,8:9)])

pca<-principal(data[c(1:6,8:9)], 2) # hier nicht vergessen die Anzahl Komponenten einzutragen
print(pca, cut=0.4, sort=TRUE)
## Principal Components Analysis
## Call: principal(r = data[c(1:6, 8:9)], nfactors = 2)
## Standardized loadings (pattern matrix) based upon correlation matrix
##      item  RC1  RC2   h2   u2 com
## V3_8    7 0.90      0.81 0.19 1.0
## V3_4    4 0.83      0.71 0.29 1.1
## V3_9    8 0.74 0.44 0.75 0.25 1.6
## V3_5    5 0.73 0.53 0.81 0.19 1.8
## V3_6    6 0.70 0.47 0.71 0.29 1.8
## V3_2    2      0.88 0.78 0.22 1.0
## V3_1    1      0.83 0.76 0.24 1.2
## V3_3    3      0.75 0.69 0.31 1.4
## 
##                        RC1  RC2
## SS loadings           3.27 2.75
## Proportion Var        0.41 0.34
## Cumulative Var        0.41 0.75
## Proportion Explained  0.54 0.46
## Cumulative Proportion 0.54 1.00
## 
## Mean item complexity =  1.4
## Test of the hypothesis that 2 components are sufficient.
## 
## The root mean square of the residuals (RMSR) is  0.07 
##  with the empirical chi square  42  with prob <  6.5e-05 
## 
## Fit based upon off diagonal values = 0.98

Reliabilität der Konstrukte prüfen (Cronbach’s Alpha) => Güteprüfung

cronbach.alpha(data[1:3]) # Erschöpfung
## 
## Cronbach's alpha for the 'data[1:3]' data-set
## 
## Items: 3
## Sample units: 134
## alpha: 0.83
cronbach.alpha(data[c(4:6,8,9)]) # Stress
## 
## Cronbach's alpha for the 'data[c(4:6, 8, 9)]' data-set
## 
## Items: 5
## Sample units: 134
## alpha: 0.904

Bildung der Hauptkomponente

data$Erschoepft<-rowMeans(data[1:3], na.rm = TRUE)
data$Stress<-rowMeans(data[c(4:6,8,9)], na.rm = TRUE)

Umbenennung von Variablen

data$Erschoepfung<-data$Erschoepft #Varuable unter neuem Namen speichern
data$Erschoepft<-NULL # Alte Variable löschen

Überprüfung der Struktur für Gesundheit und Bildung des Konstrukts

t(colnames(data))
##      [,1]   [,2]   [,3]   [,4]   [,5]   [,6]   [,7]   [,8]   [,9]   [,10]
## [1,] "V3_1" "V3_2" "V3_3" "V3_4" "V3_5" "V3_6" "V3_7" "V3_8" "V3_9" "V8" 
##      [,11]  [,12]  [,13]  [,14]  [,15]   [,16]   [,17]   [,18]   [,19]  
## [1,] "V9_1" "V9_2" "V9_3" "V9_4" "V10_1" "V10_2" "V10_3" "V10_4" "V10_5"
##      [,20]   [,21]   [,22]   [,23]    [,24]         
## [1,] "V10_6" "V11_1" "V11_3" "Stress" "Erschoepfung"
VSS.scree(data[11:20])

pca<-principal(data[11:20], 1) # hier nicht vergessen die Anzahl Komponenten einzutragen
print(pca, cut=0.4, sort=TRUE)
## Principal Components Analysis
## Call: principal(r = data[11:20], nfactors = 1)
## Standardized loadings (pattern matrix) based upon correlation matrix
##        V  PC1   h2   u2 com
## V10_4  8 0.91 0.82 0.18   1
## V10_5  9 0.90 0.81 0.19   1
## V10_6 10 0.87 0.76 0.24   1
## V10_3  7 0.86 0.74 0.26   1
## V10_1  5 0.80 0.65 0.35   1
## V9_2   2 0.78 0.61 0.39   1
## V9_3   3 0.76 0.58 0.42   1
## V10_2  6 0.69 0.47 0.53   1
## V9_1   1 0.68 0.46 0.54   1
## V9_4   4 0.60 0.36 0.64   1
## 
##                 PC1
## SS loadings    6.26
## Proportion Var 0.63
## 
## Mean item complexity =  1
## Test of the hypothesis that 1 component is sufficient.
## 
## The root mean square of the residuals (RMSR) is  0.06 
##  with the empirical chi square  49.61  with prob <  0.052 
## 
## Fit based upon off diagonal values = 0.99
data$Gesundheit<-rowMeans(data[11:20], na.rm = TRUE)

5. Voraussetzung für eine barrierefreie Datenanalyse.

=> alle Schritte bis hierher durchführen:

  1. Die Daten müssen richtig klassifiziert sein.
  2. Die Konstrukte müssen über z. B. Mittelwertbildung gebildet sein.

6. Daten skalieren.

=> Verweis auf Skript Dimensionsreduktion

Der Befehl lautet scale(). Mit dem Befehl kann entweder einen ganze Datenmatrix oder nur eine Auswahl von Variablen skaliert werden.

7. Grundlagen der Inferenzstatistik (Kurze Wiederholung aus dem Studium: Was ist wirklich relevant, um die Inferenz zu verstehen!

Was ist ein p-value?

p-value = Wahrscheinlichkeit für die Teststatistik unter Annahme der Nullhypothese.

Forschungshypothese: Mein Untersuchungsgegenstand Nullhypothese: Es gibt keinen Effekt!

Wichtig: Es gibt 5 Signifikanzniveaus:

  • n.s.: Nicht signifikant
  • 0,10: Zum 10 Prozent Niveau signifikant
  • 0,05: zum 5 Prozent Niveau signifikant
  • 0,01: zum 1 Prozent Niveau signifikant
  • 0,001: zum 0,1 Prozent Niveau signifikant

Achtung: Signifikanz heißt nicht Repräsentativität!!!!

Wichtig: Niemals in der Abschlussarbeit die H0 erwähnen, immer nur die Forschungshypothesen.

7.1 Test auf Normalverteilung

Z.B. für Gesundheit

shapiro.test(data$Stress)
## 
##  Shapiro-Wilk normality test
## 
## data:  data$Stress
## W = 0.89833, p-value = 4.38e-08
shapiro.test(data$Erschoepfung)
## 
##  Shapiro-Wilk normality test
## 
## data:  data$Erschoepfung
## W = 0.96559, p-value = 0.001811
shapiro.test(data$Gesundheit)
## 
##  Shapiro-Wilk normality test
## 
## data:  data$Gesundheit
## W = 0.95636, p-value = 0.0002858

Wir verwenden den zentralen Grenzwertsatz. Der heißt: Wenn n>30, dann gehen wir von normalverteilten Daten aus. Das ist OK so und legitim.

7.2 Korrelationstest

corr.test(data$Stress, data$Gesundheit)
## Call:corr.test(x = data$Stress, y = data$Gesundheit)
## Correlation matrix 
## [1] 0.77
## Sample Size 
## [1] 134
## Probability values  adjusted for multiple tests. 
## [1] 0
## 
##  To see confidence intervals of the correlations, print with the short=FALSE option

schöner

data[,c("Stress", "Gesundheit")]%>% 
  chart.Correlation()

7.3 Lineare einfache und multiple Regressionsanalyse

Forschungshypothese: Stress und Erschöpfung hat einen negativen Einfluss auf Gesundheit. (Achtung: Auf die Skalierung achten!)

Anwendung: Bei der linearen Regressionsanalyse wird der Einfluss einer metrischen oder kategorialen Variablen auf einen metrische abhängige Variabel geprüft.

Wird oft als Hypothese so formuliert: Wenn….dann… Bsp.: wenn Stress, dann ungesund.

xyplot(Gesundheit~Stress, data=data)

xyplot(Gesundheit~Erschoepfung, data=data)

model<-lm(Gesundheit~Stress+Erschoepfung, data=data)
plotModel(model)

summary(model)
## 
## Call:
## lm(formula = Gesundheit ~ Stress + Erschoepfung, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.54165 -0.46541 -0.02126  0.41680  2.32457 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -0.26846    0.22931  -1.171    0.244    
## Stress        0.50230    0.06195   8.108 3.21e-13 ***
## Erschoepfung  0.49945    0.06264   7.974 6.67e-13 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7128 on 131 degrees of freedom
## Multiple R-squared:  0.7239, Adjusted R-squared:  0.7197 
## F-statistic: 171.8 on 2 and 131 DF,  p-value: < 2.2e-16

Ergebnis: Je weniger Stress (ß=0,50) und je weniger Erschöpfung (ß=0,50), desto gesünder (t=8,1, p<0,001 und t=7,9, p<0,001). Mit dem Modell können 72% der Streuung von Gesundheit durch Stress und Erschöpfung erklärt werden.

7.4 t-Tests

t Test (für unabhängige Stipo): Wenn zwei Gruppen, und Unterschied in metrischer Variablen getestet werden soll.

Forschungshypothese: Männer sind gesünder als Frauen

  1. deskriptiv
favstats(Gesundheit~V11_1, data=data)
##   fav_stats min  Q1 median    Q3 max    mean       sd  n missing
## 1  männlich 1.0 2.6    4.0 4.825   6 3.76250 1.389846 72       0
## 2  weiblich 1.7 2.5    3.1 4.800   6 3.57751 1.263368 57       0
  1. explorativ
gf_boxplot(Gesundheit~V11_1, data=data)

  1. t.test
t.test(Gesundheit~V11_1, alternative="greater",data=data) # "less" für kleiner
## 
##  Welch Two Sample t-test
## 
## data:  Gesundheit by V11_1
## t = 0.79002, df = 124.54, p-value = 0.2155
## alternative hypothesis: true difference in means is greater than 0
## 95 percent confidence interval:
##  -0.2030536        Inf
## sample estimates:
## mean in group männlich mean in group weiblich 
##                3.76250                3.57751

Ergebnis: Männer sind nicht gesünder als Frauen (t=0,79, n.s.)

t-Test für gepaarte Stipo macht nur Sinn bei Vorher-Nachher Befragungen: t.test(~(V1-V2), data=data)

7.5 Varianzanalyse

Varianzanalyse: Wenn mehr als zwei Gruppen, und Unterschied in metrischer Variablen getestet werden soll.

Forschungshypothese: Es gibt einen Unterschied in der Gesundheit, je nach Abschluss.

data<-droplevels(data)
favstats(Gesundheit~V11_3, data=data)
##                       fav_stats min    Q1 median   Q3 max     mean       sd  n
## 1                Fachhochschule 1.2 2.775   3.85 4.65 6.0 3.765625 1.356135 32
## 2                    Hochschule 1.7 2.425   3.45 5.25 5.6 3.707143 1.440867 14
## 3 Keinen akademischen Abschluss 1.2 2.350   2.85 4.60 5.6 3.319444 1.292355 36
## 4                   Universität 1.0 2.900   4.10 4.90 6.0 3.902361 1.346948 50
##   missing
## 1       0
## 2       0
## 3       0
## 4       0
gf_boxplot(Gesundheit~V11_3, data=data)

summary(aov(Gesundheit~V11_3, data=data))
##              Df Sum Sq Mean Sq F value Pr(>F)
## V11_3         3   7.39   2.462   1.362  0.257
## Residuals   128 231.36   1.808               
## 2 observations deleted due to missingness

Ergebnis: Keine Gruppe unterscheidet sich signifikant von den anderen (F=1,36, n.s.)

Post-hoc Test bei der Varianzanalyse

Um nun einzele t-Tests zwischen den Gruppen durchzuführen eignet sich der pairwise.t.test. Dies ist allerdings nur sinnvoll, wenn die ANOVA signifikant ist. Dies ist hier nicht der Fall. Aus Veranschaulichungsgründen wird der Post-hoch Test trotzdem durchgeführt.

pairwise.t.test(data$Gesundheit, data$V11_3)
## 
##  Pairwise comparisons using t tests with pooled SD 
## 
## data:  data$Gesundheit and data$V11_3 
## 
##                               Fachhochschule Hochschule
## Hochschule                    1.00           -         
## Keinen akademischen Abschluss 0.87           1.00      
## Universität                   1.00           1.00      
##                               Keinen akademischen Abschluss
## Hochschule                    -                            
## Keinen akademischen Abschluss -                            
## Universität                   0.30                         
## 
## P value adjustment method: holm

Wie zu erwarten, sind keine der paarweisen t-Tests signifikant. In der Matrix stehen die p-values der getesteten Vergleichspaare.

7.6 Chi-Quadrat-Unabhängigkeitstest

Chi-Square: Abhängigkeit zwischen zwei nominalen Variablen

Forschungsfrage: Gibt es eine Abhängigkeit zwischen Geschlecht und Berufliche Belastung?

data<-na.omit(data) # Löschen aller NAs bei den kategorialen Daten
tally(V11_1~V8, format="percent", data=data)
##           V8
## V11_1            ja     nein
##   männlich 51.85185 64.28571
##   weiblich 48.14815 35.71429
xchisq.test(tally(V11_1~V8, data=data))
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  x
## X-squared = 1.2681, df = 1, p-value = 0.2601
## 
##    42       27   
## (45.44)  (23.56) 
##  [0.19]   [0.37] 
## <-0.51>  < 0.71> 
##    
##    39       15   
## (35.56)  (18.44) 
##  [0.24]   [0.47] 
## < 0.58>  <-0.80> 
##    
## key:
##  observed
##  (expected)
##  [contribution to X-squared]
##  <Pearson residual>

Ergebnis: Keine Abhängigkeit zwischen Geschlecht und Berufliche Belastung (Chi-Square=1,27, n.s.)

7.7 Auf was ist zu achten bei der Fragebogenerstellung (Art der Fragen, Skalierung, etc.)?

Hierzu ist mein Leitfaden hilfreich.

8. Darstellung von Tabellen in der Abschlussarbeit

Mit APA-Tables können viele Ergebnis in perfekter Form als Word Tabelle im APA Style gespeichert werden.

An den Code ist nur anzupassen:

  • Datendateiname
  • Variablenauswahl mit data[]