Ein Unternehmen für Personalberatung nutzt Assessment-Center (AC)-Verfahren, um KandidatInnennnen für Führungspositionen zu bewerten. Ein Teil dieses Verfahrens umfasst drei standardisierte Leistungstests und drei Persönlichkeitsdimensionen wie Offenheit, Gewissenhaftigkeit und Verträglichkeit, deren Qualität und Validität überprüft werden sollen.
Zur Validierung dieses Testteils wird eine psychometrische Analyse durchgeführt. Mithilfe einer explorativen und konfirmatorischen Faktoranalyse (EFA, CFA) wird geprüft, ob die zugrunde liegende Faktorstruktur der erhobenen Daten die theoretisch erwarteten Dimensionen widerspiegelt. Die Analyse soll sicherstellen, dass die Tests valide zwischen Leistung und Persönlichkeit unterscheiden.
packages <- c("tidyverse", "remotes", "here", "psych", "lavaan")
lapply(packages, function(package){
if (!require(package, character.only = TRUE)) {
install.packages(package, dependencies = TRUE)
}
library(package, character.only = TRUE)
})
remotes::install_github("Buedenbender/datscience")
here::here()
data <- rio::import(file = "dataLAT.csv", sep = ";")
str(data)
## 'data.frame': 200 obs. of 6 variables:
## $ Leistung_Test1 : num -0.4291 -0.7454 0.7737 0.0349 0.4258 ...
## $ Leistung_Test2 : num 0.201 -0.152 0.919 -0.716 0.473 ...
## $ Leistung_Test3 : num -0.102 -0.444 1.207 0.612 0.203 ...
## $ Pers_Offenheit : num 1.041 0.399 -0.195 0.314 -1.565 ...
## $ Pers_Gewissenhaftigkeit: num 1.6292 0.4087 0.2667 -0.048 0.0665 ...
## $ Pers_Vertraeglichkeit : num 0.5563 0.3236 0.2249 0.0558 -0.0934 ...
Der Datensatz umfasst Werte von 200 Personen, die an einem Test zur Bewertung von Leistung und Persönlichkeit teilgenommen haben. Er enthält sechs metrische Variablen: drei Leistungstests und drei Persönlichkeitsdimensionen.
summary(data)
## Leistung_Test1 Leistung_Test2 Leistung_Test3 Pers_Offenheit
## Min. :-2.202935 Min. :-1.76760 Min. :-1.62903 Min. :-2.31892
## 1st Qu.:-0.577985 1st Qu.:-0.50556 1st Qu.:-0.45561 1st Qu.:-0.45758
## Median : 0.038738 Median :-0.05878 Median : 0.02425 Median : 0.09546
## Mean : 0.009888 Mean :-0.01608 Mean : 0.01431 Mean : 0.05468
## 3rd Qu.: 0.541735 3rd Qu.: 0.49669 3rd Qu.: 0.48639 3rd Qu.: 0.50695
## Max. : 3.010743 Max. : 2.44743 Max. : 1.85804 Max. : 2.07064
## Pers_Gewissenhaftigkeit Pers_Vertraeglichkeit
## Min. :-2.163167 Min. :-1.75849
## 1st Qu.:-0.451452 1st Qu.:-0.36837
## Median : 0.044129 Median : 0.06079
## Mean : 0.009585 Mean : 0.05318
## 3rd Qu.: 0.517977 3rd Qu.: 0.53170
## Max. : 2.091678 Max. : 1.87134
Die deskriptive Zusammenfassung zeigt keine Auffälligkeiten. Es gibt keine fehelnden oder irregulären Werte.
correlation_matrix <- psych::lowerCor(data)
## Ls_T1 Ls_T2 Ls_T3 Prs_O Prs_G Prs_V
## Leistung_Test1 1.00
## Leistung_Test2 0.60 1.00
## Leistung_Test3 0.51 0.44 1.00
## Pers_Offenheit 0.00 0.06 0.03 1.00
## Pers_Gewissenhaftigkeit -0.06 0.01 0.08 0.70 1.00
## Pers_Vertraeglichkeit 0.00 0.04 0.05 0.63 0.55 1.00
Die Korrelationsmatrix zeigt, dass die drei Leistungstests (Leistung_Test1, Leistung_Test2, Leistung_Test3) moderat korrelieren (𝑟=0.44 bis 𝑟=0.60), was auf ein gemeinsames zugrundeliegendes Konstrukt hindeutet. Ähnlich korrelieren die Persönlichkeitsdimensionen (Pers_Offenheit, Pers_Gewissenhaftigkeit, Pers_Vertraeglichkeit) moderat bis stark (𝑟=0.55 bis 𝑟=0.70), was ihre gemeinsame Dimension unterstützt. Zwischen den beiden Skalen (Leistung und Persönlichkeit) sind die Korrelationen sehr gering (𝑟=−0.06 bis 𝑟=0.08).
cor.plot(r = correlation_matrix)
Die Korrelationen lassen sich besonders anschaulich in einer Heatmap darstellen. Diese zeigt deutlich zwei getrennte Gruppen von Korrelationen.
Der KMO-Test wird verwendet, um zu prüfen, ob die Stichprobendaten für eine Faktoranalyse geeignet sind. Er bewertet, wie gut Variablen durch gemeinsame Faktoren erklärt werden können. Der Bartlett-Test ergänzt dies, indem er prüft, ob die Korrelationsmatrix signifikant von einer Identitätsmatrix abweicht, was auf ausreichende Zusammenhänge zwischen den Variablen hinweist. Beide Tests helfen, die Eignung der Daten für eine Faktoranalyse abzusichern.
kmo <- psych::KMO(correlation_matrix)
print(kmo)
## Kaiser-Meyer-Olkin factor adequacy
## Call: psych::KMO(r = correlation_matrix)
## Overall MSA = 0.68
## MSA for each item =
## Leistung_Test1 Leistung_Test2 Leistung_Test3
## 0.63 0.67 0.71
## Pers_Offenheit Pers_Gewissenhaftigkeit Pers_Vertraeglichkeit
## 0.65 0.68 0.78
bartlett <- psych::cortest.bartlett(correlation_matrix, n = 200)
print(bartlett)
## $chisq
## [1] 397.6005
##
## $p.value
## [1] 2.208489e-75
##
## $df
## [1] 15
Der KMO-Test ergibt mit 0.68 eine mäßige Eignung der Daten für eine Faktoranalyse, wobei Pers_Vertraeglichkeit mit 0.78 am besten abschneidet. Der Bartlett-Test zeigt, dass die Korrelationsmatrix signifikant von einer Identitätsmatrix abweicht. Damit sind die Daten grundsätzlich geeignet, um zugrunde liegende Faktoren zu identifizieren.
Um die Anzahl der latenten Faktoren zu identifizieren, welche die Zusammenhänge zwischen den Variablen erklären, wird als Extraktionsmethode die Hauptachsenanalyse (principal axis factor analysis) gewählt. Sie ist die Methode der Wahl, wenn es um inhaltlich-interpretierbare Faktoren geht.
Als Abbruchkriterium wird die Parallel-Analyse verwendet. Hierbei wird der Eigenwertverlauf der empirische ermittelten Korrelationsmatrix mit dem Eigenwertverlauf der Korrelationen zwischen normalverteilten Zufallsvariablen verglichen. Der Scree-Test sollte aufgrund des großen subjektiven Spielraums nicht verwendet werden.
psych::fa.parallel(data, fa = "fa", show.legend = TRUE, fm = "pa")
## Parallel analysis suggests that the number of factors = 2 and the number of components = NA
Die Parallel-Analyse empfiehlt, zwei Faktoren zu extrahieren.
Für die Faktorenrotation wird die Oblimin-Rotation verwendet, da sie auf eine gleichzeitige Optimierung eines orthogonalen und eines obliquen Rotationskriteriums abzielt.
efa_result <- psych::fa(data, nfactors = 2, rotate = "oblimin", fm = "ml")
## Lade nötigen Namensraum: GPArotation
print(efa_result)
## Factor Analysis using method = ml
## Call: psych::fa(r = data, nfactors = 2, rotate = "oblimin", fm = "ml")
## Standardized loadings (pattern matrix) based upon correlation matrix
## ML1 ML2 h2 u2 com
## Leistung_Test1 -0.04 0.84 0.70 0.30 1
## Leistung_Test2 0.03 0.71 0.51 0.49 1
## Leistung_Test3 0.05 0.61 0.37 0.63 1
## Pers_Offenheit 0.89 0.01 0.78 0.22 1
## Pers_Gewissenhaftigkeit 0.79 -0.03 0.62 0.38 1
## Pers_Vertraeglichkeit 0.71 0.02 0.50 0.50 1
##
## ML1 ML2
## SS loadings 1.91 1.58
## Proportion Var 0.32 0.26
## Cumulative Var 0.32 0.58
## Proportion Explained 0.55 0.45
## Cumulative Proportion 0.55 1.00
##
## With factor correlations of
## ML1 ML2
## ML1 1.00 0.02
## ML2 0.02 1.00
##
## Mean item complexity = 1
## Test of the hypothesis that 2 factors are sufficient.
##
## df null model = 15 with the objective function = 2.03 with Chi Square = 397.6
## df of the model are 4 and the objective function was 0.02
##
## The root mean square of the residuals (RMSR) is 0.02
## The df corrected root mean square of the residuals is 0.03
##
## The harmonic n.obs is 200 with the empirical chi square 1.81 with prob < 0.77
## The total n.obs was 200 with Likelihood Chi Square = 4.73 with prob < 0.32
##
## Tucker Lewis Index of factoring reliability = 0.993
## RMSEA index = 0.03 and the 90 % confidence intervals are 0 0.115
## BIC = -16.47
## Fit based upon off diagonal values = 1
## Measures of factor score adequacy
## ML1 ML2
## Correlation of (regression) scores with factors 0.93 0.89
## Multiple R square of scores with factors 0.86 0.80
## Minimum correlation of possible factor scores 0.73 0.60
Die explorative Faktoranalyse (EFA) identifiziert zwei Faktoren, die zusammen 58% der Gesamtvarianz erklären, wobei Faktor 1 (Persönlichkeit) 32% und Faktor 2 (Leistung) 26% beiträgt. Die Variablen laden erwartungsgemäß auf ihre jeweiligen Faktoren: Die drei Persönlichkeitsskalen (Pers_Offenheit, Pers_Gewissenhaftigkeit, Pers_Vertraeglichkeit) laden stark auf Faktor 1 (0.71 bis 0.89), während die drei Leistungstests (Leistung_Test1, Leistung_Test2, Leistung_Test3) hohe Ladungen auf Faktor 2 (0.61 bis 0.84) zeigen.
datscience::apa_factorLoadings(
efa_result,
filepath = NA,
table_caption = c("Table", "EFA Factor Loadings"),
overwrite = FALSE,
nod = c(3, 2),
n.obs = NA,
cutoff = 0.3,
orderbyloading = TRUE)
EFA Factor Loadings | |||||
|---|---|---|---|---|---|
Table | |||||
Item | ML1 | ML2 | Communality | Uniqueness | Complexity |
Pers_Offenheit | 0.886 | 0.78 | 0.22 | 1.00 | |
Pers_Gewissenhaftigkeit | 0.789 | 0.62 | 0.38 | 1.00 | |
Pers_Vertraeglichkeit | 0.705 | 0.50 | 0.50 | 1.00 | |
Leistung_Test1 | 0.837 | 0.70 | 0.30 | 1.00 | |
Leistung_Test2 | 0.714 | 0.51 | 0.49 | 1.00 | |
Leistung_Test3 | 0.609 | 0.37 | 0.63 | 1.01 | |
Die Kommunalitäten (ℎ2) zeigen, dass zwischen 37% und 78% der Varianz der einzelnen Variablen durch die beiden Faktoren erklärt werden können, wobei Pers_Offenheit am besten erklärt wird (78%) und Leistung_Test3 die geringste Erklärung bietet (37%). Die Einzigartigkeit der Items liegt im Bereich von 22% bis 63%, was zeigt, dass ein Teil der Variabilität der einzelnen Variablen nicht durch die gemeinsamen Faktoren erklärt wird, sondern auf individuelle Einflüsse zurückzuführen ist. Alle Items haben eine Komplexität nahe 1.0, was bedeutet, dass jedes Item fast ausschließlich auf einen einzigen Faktor lädt und somit ein klares und einfaches Ladungsmuster zeigt.
psych::fa.diagram(efa_result, main = "Faktorenstruktur")
Während die EFA Strukturen in den Daten exploriert, prüft die CFA, ob ein spezifisches Modell – in diesem Fall die Unterscheidung zwischen den Faktoren Leistung und Persönlichkeit – durch die Daten gestützt wird. Dies ermöglicht eine präzisere Validierung der angenommenen Faktorstruktur.
# Spezifikation des CFA-Modells
cfa_model <- '
Leistung =~ Leistung_Test1 + Leistung_Test2 + Leistung_Test3
Persoenlichkeit =~ Pers_Offenheit + Pers_Gewissenhaftigkeit + Pers_Vertraeglichkeit
'
# Durchführung der CFA
cfa_result <- lavaan::cfa(cfa_model, data = data, std.lv = TRUE)
summary(cfa_result, fit.measures = TRUE)
## lavaan 0.6-19 ended normally after 20 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 13
##
## Number of observations 200
##
## Model Test User Model:
##
## Test statistic 7.419
## Degrees of freedom 8
## P-value (Chi-square) 0.492
##
## Model Test Baseline Model:
##
## Test statistic 405.370
## Degrees of freedom 15
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 1.000
## Tucker-Lewis Index (TLI) 1.003
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -1163.782
## Loglikelihood unrestricted model (H1) -1160.072
##
## Akaike (AIC) 2353.563
## Bayesian (BIC) 2396.441
## Sample-size adjusted Bayesian (SABIC) 2355.256
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.000
## 90 Percent confidence interval - lower 0.000
## 90 Percent confidence interval - upper 0.079
## P-value H_0: RMSEA <= 0.050 0.781
## P-value H_0: RMSEA >= 0.080 0.047
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.028
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Expected
## Information saturated (h1) model Structured
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|)
## Leistung =~
## Leistung_Test1 0.665 0.060 11.039 0.000
## Leistung_Test2 0.535 0.055 9.733 0.000
## Leistung_Test3 0.419 0.050 8.421 0.000
## Persoenlichkeit =~
## Pers_Offenheit 0.743 0.053 13.955 0.000
## Prs_Gwssnhftgk 0.634 0.053 11.976 0.000
## Prs_Vrtrglchkt 0.469 0.044 10.595 0.000
##
## Covariances:
## Estimate Std.Err z-value P(>|z|)
## Leistung ~~
## Persoenlichket 0.018 0.085 0.216 0.829
##
## Variances:
## Estimate Std.Err z-value P(>|z|)
## .Leistung_Test1 0.204 0.055 3.686 0.000
## .Leistung_Test2 0.267 0.043 6.244 0.000
## .Leistung_Test3 0.288 0.035 8.153 0.000
## .Pers_Offenheit 0.144 0.043 3.362 0.001
## .Prs_Gwssnhftgk 0.253 0.039 6.522 0.000
## .Prs_Vrtrglchkt 0.223 0.027 8.119 0.000
## Leistung 1.000
## Persoenlichket 1.000
Die Ergebnisse der CFA zeigen, dass alle beobachteten Variablen signifikant auf die erwarteten latenten Faktoren laden (𝑝<0.001). Die drei Leistungstests laden moderat bis stark auf den Faktor Leistung (0.419 bis 0.665), während die drei Persönlichkeitsvariablen stark auf Persönlichkeit laden (0.469 bis 0.743). Die Kovarianz zwischen den beiden Faktoren (0.018,𝑝=0.829) ist sehr gering und nicht signifikant, was ihre Unabhängigkeit belegt.
Der Comparative Fit Index (CFI = 1.000) und der Tucker-Lewis Index (TLI = 1.003) liegen über dem Schwellenwert von 0.95, was eine sehr gute Modellanpassung zeigt. Der Standardized Root Mean Square Residual (SRMR = 0.028) liegt unter dem empfohlenen Grenzwert von 0.08 und weist darauf hin, dass die beobachteten und modellbasierten Korrelationen stark übereinstimmen. Diese Kennwerte bestätigen, dass die angenommene Faktorstruktur durch die Daten gut gestützt wird.
Die Kombination aus explorativer und konfirmatorischer Faktoranalyse zeigt, dass der Test eine klare zweifaktorielle Struktur besitzt und die Dimensionen Leistung und Persönlichkeit zuverlässig misst. Die Analysen bestätigen die Validität der Variablen und unterstützen die Beibehaltung der aktuellen Teststruktur. Einzelne Variablen könnten jedoch hinsichtlich ihrer Passung zum jeweiligen Faktor überprüft werden, um die Messqualität weiter zu optimieren. Insgesamt ist der Test gut geeignet für den diagnostischen Einsatz.