Klimaangst und Karriereabsichten

# Pakete laden
pacman::p_load(tidyverse
               ,haven
               ,psych
               ,corx
               ,labelled
               ,desctable
               ,sjPlot
               ,lubridate
               ,car
               ,lavaan
               ,lavaanPlot
               ,emmeans
               ,lmerTest
               ,jtools) # Hier werden die Pakete geladen

# Daten importieren
load("Data/d_incl_scores.Rda")
# erleichternde Funktionen:

cor_apa <- function(d) {
  d %>%
    as.matrix() %>%
    corx(
      triangle = "lower",
      stars = c(.05, .01, .001),
      describe = c("mean", "sd")
    ) %>%
    as.data.frame(.["apa"])
}

drop_labels <- function(d) {
  d %>% mutate(across(where(is.labelled), as.numeric))
}

Methodik und Variablen

Datenaufbereitung

# Nochmalige Datenbereinigung vor der Auswertung, damit keine ungeeigneten Datensätze in die Berechnungen/Hypothesenprüfung eingehen:
# zusätzlich: Variable für Klimaangst (insgesamt = Mittelwert der Mittelwerte) 

d <- d %>%
  mutate(
    anx_gesamt = rowMeans(
      select(., anx_v_aff_mean, anx_v_bee_mean, anx_v_beh_mean,
                 anx_v_cog_mean, anx_v_phy_mean),
      na.rm = TRUE
    )
  )
summary(d$anx_gesamt)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
  1.000   2.000   2.700   2.802   3.550   7.000       4 
d %>%
  filter(is.na(anx_gesamt))
# A tibble: 4 × 124
   lfdn duration.t1 sona_surveycode consent_participation klima_wiss1 
  <dbl>       <dbl> <chr>           <dbl+lbl>             <dbl+lbl>   
1   646         376 ""              1 [Ja]                 1 [correct]
2   801         459 ""              1 [Ja]                NA          
3   950         299 ""              1 [Ja]                NA          
4  1065          NA ""              1 [Ja]                NA          
# ℹ 119 more variables: klima_wiss2 <dbl+lbl>, klima_wiss3 <dbl+lbl>,
#   klima_eins1 <dbl+lbl>, klima_eins2 <dbl+lbl>, klima_eins3 <dbl+lbl>,
#   klima_eins4 <dbl+lbl>, anx_v_aff_1 <dbl+lbl>, anx_v_aff_2 <dbl+lbl>,
#   anx_v_aff_3 <dbl+lbl>, anx_v_aff_4 <dbl+lbl>, anx_v_cog_1 <dbl+lbl>,
#   anx_v_cog_2 <dbl+lbl>, anx_v_cog_3 <dbl+lbl>, anx_v_cog_4 <dbl+lbl>,
#   anx_v_beh_1 <dbl+lbl>, anx_v_beh_2 <dbl+lbl>, anx_v_beh_3 <dbl+lbl>,
#   anx_v_beh_4 <dbl+lbl>, anx_v_phy_1 <dbl+lbl>, anx_v_phy_2 <dbl+lbl>, …
# 4 Teilnehmende haben keins der Items zu Klimaangst beantwortet. Da Klimaangst ein wesentlicher Bestandteil der Untersuchung ist, schließen wir diese Teilnehmenden von der weiteren Auswertung aus, selbst wenn sie andere Fragen, z.B. zu Umweltidentität oder Sozialen Normen, umfassend beantwortet haben. 
d <- d %>%
  filter(!is.na(anx_gesamt))
# d hat jetzt noch 1029 obs

Präregistrierte Ausschlusskriterien

# Krit1 - Antworttendenzen: bei den Likert-skalierten zu mehr als 90% Antwort "1" gewählt oder max (5 oder 7)
d_Likert <- select(d,klima_eins1:karr_unt_p4, karr_entsc1:klima_verh3)
structure(d_Likert)
# A tibble: 1,029 × 63
   klima_eins1      klima_eins2  klima_eins3 klima_eins4 anx_v_aff_1 anx_v_aff_2
   <dbl+lbl>        <dbl+lbl>    <dbl+lbl>   <dbl+lbl>   <dbl+lbl>   <dbl+lbl>  
 1 5 [voll zu]       5 [gar nic…  5 [gar ni…  3 [unents…  4 [ab und…  2 [sehr s…
 2 5 [voll zu]       1 [voll zu]  1 [voll z…  5 [voll z… NA          NA         
 3 5 [voll zu]      NA           NA          NA          NA          NA         
 4 5 [voll zu]       5 [gar nic…  5 [gar ni…  4 [eher z…  6 [sehr o…  6 [sehr o…
 5 5 [voll zu]       4 [eher ni…  5 [gar ni…  4 [eher z…  3 [selten]  5 [oft]   
 6 1 [gar nicht zu]  1 [voll zu]  1 [voll z…  1 [gar ni…  1 [nie]     1 [nie]   
 7 4 [eher zu]       4 [eher ni…  3 [unents…  2 [eher n…  4 [ab und…  5 [oft]   
 8 4 [eher zu]       3 [unentsc…  4 [eher n…  2 [eher n…  2 [sehr s…  1 [nie]   
 9 4 [eher zu]       2 [eher zu]  4 [eher n…  5 [voll z…  3 [selten]  4 [ab und…
10 5 [voll zu]       5 [gar nic…  5 [gar ni…  5 [voll z…  7 [immer]   6 [sehr o…
# ℹ 1,019 more rows
# ℹ 57 more variables: anx_v_aff_3 <dbl+lbl>, anx_v_aff_4 <dbl+lbl>,
#   anx_v_cog_1 <dbl+lbl>, anx_v_cog_2 <dbl+lbl>, anx_v_cog_3 <dbl+lbl>,
#   anx_v_cog_4 <dbl+lbl>, anx_v_beh_1 <dbl+lbl>, anx_v_beh_2 <dbl+lbl>,
#   anx_v_beh_3 <dbl+lbl>, anx_v_beh_4 <dbl+lbl>, anx_v_phy_1 <dbl+lbl>,
#   anx_v_phy_2 <dbl+lbl>, anx_v_phy_3 <dbl+lbl>, anx_v_phy_4 <dbl+lbl>,
#   anx_v_bee_1 <dbl+lbl>, anx_v_bee_2 <dbl+lbl>, anx_v_bee_3 <dbl+lbl>, …
# 63 Variablen, range 1 bis 7, es soll bei mindestens 10% der Items (=6) mindestens Antwort 2 gewählt sein. 57 + 12 = 69
d_Likert$sum <- rowSums(d_Likert, na.rm = TRUE #fehlende Werte sollen nicht als Antworttendenz angesehen werden
                        )
summary(d_Likert$sum)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   70.0   167.0   191.0   191.9   219.0   301.0 
filter(d_Likert, d_Likert$sum < 70)
# A tibble: 0 × 64
# ℹ 64 variables: klima_eins1 <dbl+lbl>, klima_eins2 <dbl+lbl>,
#   klima_eins3 <dbl+lbl>, klima_eins4 <dbl+lbl>, anx_v_aff_1 <dbl+lbl>,
#   anx_v_aff_2 <dbl+lbl>, anx_v_aff_3 <dbl+lbl>, anx_v_aff_4 <dbl+lbl>,
#   anx_v_cog_1 <dbl+lbl>, anx_v_cog_2 <dbl+lbl>, anx_v_cog_3 <dbl+lbl>,
#   anx_v_cog_4 <dbl+lbl>, anx_v_beh_1 <dbl+lbl>, anx_v_beh_2 <dbl+lbl>,
#   anx_v_beh_3 <dbl+lbl>, anx_v_beh_4 <dbl+lbl>, anx_v_phy_1 <dbl+lbl>,
#   anx_v_phy_2 <dbl+lbl>, anx_v_phy_3 <dbl+lbl>, anx_v_phy_4 <dbl+lbl>, …
# ergibt 0 Reihen 
# besonders hohe Werte? Maximal erreichbar sind 320, 90% = 288
filter(d_Likert, d_Likert$sum > 288)
# A tibble: 3 × 64
  klima_eins1 klima_eins2       klima_eins3  klima_eins4 anx_v_aff_1 anx_v_aff_2
  <dbl+lbl>   <dbl+lbl>         <dbl+lbl>    <dbl+lbl>   <dbl+lbl>   <dbl+lbl>  
1 5 [voll zu] 3 [unentschieden] 5 [gar nich… 5 [voll zu] 6 [sehr of… 7 [immer]  
2 5 [voll zu] 5 [gar nicht zu]  5 [gar nich… 5 [voll zu] 7 [immer]   7 [immer]  
3 4 [eher zu] 2 [eher zu]       1 [voll zu]  4 [eher zu] 5 [oft]     6 [sehr of…
# ℹ 58 more variables: anx_v_aff_3 <dbl+lbl>, anx_v_aff_4 <dbl+lbl>,
#   anx_v_cog_1 <dbl+lbl>, anx_v_cog_2 <dbl+lbl>, anx_v_cog_3 <dbl+lbl>,
#   anx_v_cog_4 <dbl+lbl>, anx_v_beh_1 <dbl+lbl>, anx_v_beh_2 <dbl+lbl>,
#   anx_v_beh_3 <dbl+lbl>, anx_v_beh_4 <dbl+lbl>, anx_v_phy_1 <dbl+lbl>,
#   anx_v_phy_2 <dbl+lbl>, anx_v_phy_3 <dbl+lbl>, anx_v_phy_4 <dbl+lbl>,
#   anx_v_bee_1 <dbl+lbl>, anx_v_bee_2 <dbl+lbl>, anx_v_bee_3 <dbl+lbl>,
#   anx_v_bee_4 <dbl+lbl>, umw_ident_1 <dbl+lbl>, umw_ident_2 <dbl+lbl>, …
# 3 Reihen, die aber keine offensichtlichen Antworttendenzen aufweisen, daher kein Ausschluss
# Krit2 - bei den für uns relevanten Variablen für Klimaangst, Karriereabsichten, Umweltverhalten, soziale Normen, Umweltidentität wurde (jeweils) keine Antwort gegeben
.2*124
[1] 24.8
# 20 % von 124 vars = 24.8
d <- d %>%
  mutate(n_missing = rowSums(is.na(across(everything()))))
hist(d$n_missing)

d %>%
  filter(n_missing > 24)
# A tibble: 3 × 124
   lfdn duration.t1 sona_surveycode consent_participation klima_wiss1           
  <dbl>       <dbl> <chr>           <dbl+lbl>             <dbl+lbl>             
1   129          78 ""              1 [Ja]                0 [incorrect or don't…
2   131          75 ""              1 [Ja]                0 [incorrect or don't…
3  1110         430 ""              1 [Ja]                0 [incorrect or don't…
# ℹ 119 more variables: klima_wiss2 <dbl+lbl>, klima_wiss3 <dbl+lbl>,
#   klima_eins1 <dbl+lbl>, klima_eins2 <dbl+lbl>, klima_eins3 <dbl+lbl>,
#   klima_eins4 <dbl+lbl>, anx_v_aff_1 <dbl+lbl>, anx_v_aff_2 <dbl+lbl>,
#   anx_v_aff_3 <dbl+lbl>, anx_v_aff_4 <dbl+lbl>, anx_v_cog_1 <dbl+lbl>,
#   anx_v_cog_2 <dbl+lbl>, anx_v_cog_3 <dbl+lbl>, anx_v_cog_4 <dbl+lbl>,
#   anx_v_beh_1 <dbl+lbl>, anx_v_beh_2 <dbl+lbl>, anx_v_beh_3 <dbl+lbl>,
#   anx_v_beh_4 <dbl+lbl>, anx_v_phy_1 <dbl+lbl>, anx_v_phy_2 <dbl+lbl>, …
# sind diese Werte für uns relevant?
# 3 Reihen, es sind aber keine Teilnehmenden dabei, die keine der für uns relevanten Fragen beantwortet haben. Bei der #Berechnung der Mittelwerte war es ausreichend, wenn mindestens ein Item beantwortet war. Sie werden daher (zunächst) im Datensatz belassen.
# Krit3 - logischer Widerspruch
# Antworten auf "d$norm_injun2" und "d_norm_injun3" ergeben einen logischen Widerspruch 
d %>%
 select(norm_injun2,norm_injun3)
# A tibble: 1,029 × 2
   norm_injun2                norm_injun3               
   <dbl+lbl>                  <dbl+lbl>                 
 1  3 [Teils/teils]            5 [Sehr unwahrscheinlich]
 2 NA                         NA                        
 3  5 [Sehr wahrscheinlich]   NA                        
 4  4 [Wahrscheinlich]         5 [Sehr unwahrscheinlich]
 5  3 [Teils/teils]            3 [Teils/teils]          
 6  1 [Sehr unwahrscheinlich]  5 [Sehr unwahrscheinlich]
 7  2 [Unwahrscheinlich]       2 [Wahrscheinlich]       
 8  2 [Unwahrscheinlich]       3 [Teils/teils]          
 9  2 [Unwahrscheinlich]       3 [Teils/teils]          
10  5 [Sehr wahrscheinlich]    5 [Sehr unwahrscheinlich]
# ℹ 1,019 more rows
# "sehr wahrscheinlich" befürworten und ablehnen von beruflichem Einsatz für Klimaschutz
d %>%
  filter(norm_injun2 == 5 & norm_injun3 == 1)
# A tibble: 0 × 124
# ℹ 124 variables: lfdn <dbl>, duration.t1 <dbl>, sona_surveycode <chr>,
#   consent_participation <dbl+lbl>, klima_wiss1 <dbl+lbl>,
#   klima_wiss2 <dbl+lbl>, klima_wiss3 <dbl+lbl>, klima_eins1 <dbl+lbl>,
#   klima_eins2 <dbl+lbl>, klima_eins3 <dbl+lbl>, klima_eins4 <dbl+lbl>,
#   anx_v_aff_1 <dbl+lbl>, anx_v_aff_2 <dbl+lbl>, anx_v_aff_3 <dbl+lbl>,
#   anx_v_aff_4 <dbl+lbl>, anx_v_cog_1 <dbl+lbl>, anx_v_cog_2 <dbl+lbl>,
#   anx_v_cog_3 <dbl+lbl>, anx_v_cog_4 <dbl+lbl>, anx_v_beh_1 <dbl+lbl>, …
# 0 Reihen
# Krit4 - Bearbeitungszeit
# weniger als 5 Minuten:
d %>%
  filter(duration.t1 < 300)
# A tibble: 26 × 124
    lfdn duration.t1 sona_surveycode           consent_participation klima_wiss1
   <dbl>       <dbl> <chr>                     <dbl+lbl>             <dbl+lbl>  
 1   129          78 ""                        1 [Ja]                0 [incorre…
 2   131          75 ""                        1 [Ja]                0 [incorre…
 3   174         145 "832e5d231e3545d0900ef68… 1 [Ja]                1 [correct]
 4   274         236 ""                        1 [Ja]                1 [correct]
 5   380         148 "adac904ea275fdefc65d4c4… 1 [Ja]                1 [correct]
 6   567         226 "040fec70955253769acc94f… 1 [Ja]                0 [incorre…
 7   574         239 "e43a5db40f6bc0dcdf8d431… 1 [Ja]                0 [incorre…
 8   730         224 "54ca3e5a2cebd8681900aa4… 1 [Ja]                0 [incorre…
 9   761         146 "8b159f0c33071ee7811ca65… 1 [Ja]                0 [incorre…
10   772         118 "92302a7fbbff3bf9922e11b… 1 [Ja]                0 [incorre…
# ℹ 16 more rows
# ℹ 119 more variables: klima_wiss2 <dbl+lbl>, klima_wiss3 <dbl+lbl>,
#   klima_eins1 <dbl+lbl>, klima_eins2 <dbl+lbl>, klima_eins3 <dbl+lbl>,
#   klima_eins4 <dbl+lbl>, anx_v_aff_1 <dbl+lbl>, anx_v_aff_2 <dbl+lbl>,
#   anx_v_aff_3 <dbl+lbl>, anx_v_aff_4 <dbl+lbl>, anx_v_cog_1 <dbl+lbl>,
#   anx_v_cog_2 <dbl+lbl>, anx_v_cog_3 <dbl+lbl>, anx_v_cog_4 <dbl+lbl>,
#   anx_v_beh_1 <dbl+lbl>, anx_v_beh_2 <dbl+lbl>, anx_v_beh_3 <dbl+lbl>, …
# ergibt 26 Reihen, streng genommen müssten diese ausgeschlossen werden, da so präregistriert, da aber die Begründung "keine ernsthafte Teilnahme unter 5 Minuten möglich" willkürlich erfolgte, wird zunächst überprüft, ob von einer ernsthaften Teilnahme ausgegangen werden kann -> Überprüfung von n_missing
# 20% von 124 variables = 24.8 
d %>%
  filter(duration.t1 < 300 & n_missing > 24)
# A tibble: 2 × 124
   lfdn duration.t1 sona_surveycode consent_participation klima_wiss1           
  <dbl>       <dbl> <chr>           <dbl+lbl>             <dbl+lbl>             
1   129          78 ""              1 [Ja]                0 [incorrect or don't…
2   131          75 ""              1 [Ja]                0 [incorrect or don't…
# ℹ 119 more variables: klima_wiss2 <dbl+lbl>, klima_wiss3 <dbl+lbl>,
#   klima_eins1 <dbl+lbl>, klima_eins2 <dbl+lbl>, klima_eins3 <dbl+lbl>,
#   klima_eins4 <dbl+lbl>, anx_v_aff_1 <dbl+lbl>, anx_v_aff_2 <dbl+lbl>,
#   anx_v_aff_3 <dbl+lbl>, anx_v_aff_4 <dbl+lbl>, anx_v_cog_1 <dbl+lbl>,
#   anx_v_cog_2 <dbl+lbl>, anx_v_cog_3 <dbl+lbl>, anx_v_cog_4 <dbl+lbl>,
#   anx_v_beh_1 <dbl+lbl>, anx_v_beh_2 <dbl+lbl>, anx_v_beh_3 <dbl+lbl>,
#   anx_v_beh_4 <dbl+lbl>, anx_v_phy_1 <dbl+lbl>, anx_v_phy_2 <dbl+lbl>, …
# ergibt 2 Reihen, sind diese fehlenden Werte für uns relevant?
# lfdn 129; 131. Die Bearbeitungszeit ist sehr gering (78; 75) und die Zahl der missings hoch (71;88)
# -> Ausschluss (über "Arbeitsdatei" d_clean):
d_clean <- d
d_clean %>%
  filter(duration.t1 < 300 & n_missing > 24)
# A tibble: 2 × 124
   lfdn duration.t1 sona_surveycode consent_participation klima_wiss1           
  <dbl>       <dbl> <chr>           <dbl+lbl>             <dbl+lbl>             
1   129          78 ""              1 [Ja]                0 [incorrect or don't…
2   131          75 ""              1 [Ja]                0 [incorrect or don't…
# ℹ 119 more variables: klima_wiss2 <dbl+lbl>, klima_wiss3 <dbl+lbl>,
#   klima_eins1 <dbl+lbl>, klima_eins2 <dbl+lbl>, klima_eins3 <dbl+lbl>,
#   klima_eins4 <dbl+lbl>, anx_v_aff_1 <dbl+lbl>, anx_v_aff_2 <dbl+lbl>,
#   anx_v_aff_3 <dbl+lbl>, anx_v_aff_4 <dbl+lbl>, anx_v_cog_1 <dbl+lbl>,
#   anx_v_cog_2 <dbl+lbl>, anx_v_cog_3 <dbl+lbl>, anx_v_cog_4 <dbl+lbl>,
#   anx_v_beh_1 <dbl+lbl>, anx_v_beh_2 <dbl+lbl>, anx_v_beh_3 <dbl+lbl>,
#   anx_v_beh_4 <dbl+lbl>, anx_v_phy_1 <dbl+lbl>, anx_v_phy_2 <dbl+lbl>, …
d_clean <- d_clean  %>%
  filter(!(duration.t1 < 300 & n_missing > 24))
# jetzt noch 1027 obs
d_clean %>% 
   filter(duration.t1 < 300 & n_missing > 24)
# A tibble: 0 × 124
# ℹ 124 variables: lfdn <dbl>, duration.t1 <dbl>, sona_surveycode <chr>,
#   consent_participation <dbl+lbl>, klima_wiss1 <dbl+lbl>,
#   klima_wiss2 <dbl+lbl>, klima_wiss3 <dbl+lbl>, klima_eins1 <dbl+lbl>,
#   klima_eins2 <dbl+lbl>, klima_eins3 <dbl+lbl>, klima_eins4 <dbl+lbl>,
#   anx_v_aff_1 <dbl+lbl>, anx_v_aff_2 <dbl+lbl>, anx_v_aff_3 <dbl+lbl>,
#   anx_v_aff_4 <dbl+lbl>, anx_v_cog_1 <dbl+lbl>, anx_v_cog_2 <dbl+lbl>,
#   anx_v_cog_3 <dbl+lbl>, anx_v_cog_4 <dbl+lbl>, anx_v_beh_1 <dbl+lbl>, …
# ergibt jetzt 0 Reihen -> Übergabe an d:
d <- d_clean

Power

# Power der Stichprobengröße für Korrelation r und Regression/Moderation f²
#install.packages("pwr")
library(pwr)
# A-priori-Poweranalyse hatte ergeben, dass für kleine Effekte von r und f² und einer Power von 80% mindestens 400 Teilnehmende erforderlich wären

# Beispiel: r = .10
pwr.r.test(
  r = 0.10,
  n = 1027,
  sig.level = 0.05,
  alternative = "two.sided"
)

     approximate correlation power calculation (arctangh transformation) 

              n = 1027
              r = 0.1
      sig.level = 0.05
          power = 0.8947503
    alternative = two.sided
# Beispiel: f² = .02
pwr.f2.test(
  u = 2,        # Anzahl getesteter Prädiktoren (Interaktion)
  v = 1027 - 2 - 1,  # N - u - 1
  f2 = 0.02,    # kleiner Effekt
  sig.level = 0.05
)

     Multiple regression power calculation 

              u = 2
              v = 1024
             f2 = 0.02
      sig.level = 0.05
          power = 0.9870636
# ergibt ausreichende Power, um selbst kleine Effekte zu finden. r: power = 0.89, f²: power = 0.99

Demographische Angaben

d %>% 
  select(alter_jahre,
         ethnie_kult,
         arbeit_art1,
         kinder_anza,
         geschlecht1_f,
         arbeit_umfa,
         bildungssta
         ) %>%
  desc_table("n"      = length,
             "%"      = percent,
             "m"   = mean,
             "sd"     = sd) %>%
  desc_output(target = "DT")
# Prozentangaben der Tabelle 
# zu geschlecht1_f  N = 1017
# bezogen auf N = 1027:
651/1027 # w = 63%
[1] 0.6338851
352/1027 # m = 34%
[1] 0.3427459
# gruppiert nach Alter
filter(d, alter_jahre < 15)
# A tibble: 0 × 124
# ℹ 124 variables: lfdn <dbl>, duration.t1 <dbl>, sona_surveycode <chr>,
#   consent_participation <dbl+lbl>, klima_wiss1 <dbl+lbl>,
#   klima_wiss2 <dbl+lbl>, klima_wiss3 <dbl+lbl>, klima_eins1 <dbl+lbl>,
#   klima_eins2 <dbl+lbl>, klima_eins3 <dbl+lbl>, klima_eins4 <dbl+lbl>,
#   anx_v_aff_1 <dbl+lbl>, anx_v_aff_2 <dbl+lbl>, anx_v_aff_3 <dbl+lbl>,
#   anx_v_aff_4 <dbl+lbl>, anx_v_cog_1 <dbl+lbl>, anx_v_cog_2 <dbl+lbl>,
#   anx_v_cog_3 <dbl+lbl>, anx_v_cog_4 <dbl+lbl>, anx_v_beh_1 <dbl+lbl>, …
d %>% 
  filter(!is.na(alter_jahre)) %>%
  select(alter_jahre,
         kinder_anza,
         bildungssta,
         arbeit_umfa,
         arbeit_art1,
         ethnie_kult, 
         geschlecht1) %>% 
  group_by(alter_jahre < 28) %>% 
  desc_table("n"      = length,
             "%"      = percent,
             "m"   = mean,
             "sd"     = sd) %>%
  desc_output(target = "DT")
summary(d$alter_jahre)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
   15.0    23.0    28.5    32.5    40.0    80.0       9 
d %>%
  filter(!is.na(alter_jahre)) %>%
  ggplot(aes(x = alter_jahre)) + 
  geom_histogram(bins = 10) +
  labs(
    x = "Alter in Jahren",
    y = "Häufigkeit"
  ) +
  theme_minimal()

summary(d$arbeit_art1)
                        In Ausbildung                            Student:in 
                                   52                                   354 
                Angestelle:r/Beamte:r                         Selbstständig 
                                  476                                    49 
Derzeit kein Beschäftigungsverhältnis                  Sonstiges, und zwar: 
                                   27                                    68 
                                 NA's 
                                    1 
ggplot(d, aes(x = arbeit_art1)) +
  geom_bar() +
  coord_flip() +
  labs(
    x = "Art der Arbeit",
    y = "Häufigkeit"
  ) +
  theme_minimal()

summary(d$geschlecht1)
weiblich männlich     NA's 
     651      352       24 
ggplot(d, aes(x = geschlecht1)) +
  geom_bar() +
    labs(
    x = "Geschlecht",
    y = "Häufigkeit"
  ) +
  theme_minimal()

summary(d$geschlecht1_f)
               0         weiblich         männlich divers/non-binär 
               1              651              352               13 
    keine Angabe             NA's 
               0               10 
ggplot(d, aes(x = geschlecht1_f)) +
  geom_bar() +
  labs(
    x = "Geschlecht",
    y = "Häufigkeit"
  ) +
  theme_minimal()

Skalen

drop_labels <- function(data) {
  data %>%
    mutate(across(where(is.labelled), as.numeric))
}
d_num <- drop_labels(d)
# zunächst Erstellung von d_skalen (alle numerischen Variablen):
d_skalen <- select(d_num, klima_wiss1:klima_verh3)
summary(d_skalen)
  klima_wiss1      klima_wiss2      klima_wiss3      klima_eins1   
 Min.   :0.0000   Min.   :0.0000   Min.   :0.0000   Min.   :1.000  
 1st Qu.:1.0000   1st Qu.:1.0000   1st Qu.:0.0000   1st Qu.:4.000  
 Median :1.0000   Median :1.0000   Median :0.0000   Median :5.000  
 Mean   :0.9454   Mean   :0.8608   Mean   :0.4483   Mean   :4.272  
 3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:5.000  
 Max.   :1.0000   Max.   :1.0000   Max.   :1.0000   Max.   :5.000  
 NA's   :1                         NA's   :1        NA's   :1      
  klima_eins2     klima_eins3     klima_eins4     anx_v_aff_1   
 Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
 1st Qu.:3.000   1st Qu.:4.000   1st Qu.:4.000   1st Qu.:3.000  
 Median :4.000   Median :4.000   Median :4.000   Median :4.000  
 Mean   :3.904   Mean   :4.074   Mean   :4.072   Mean   :4.041  
 3rd Qu.:5.000   3rd Qu.:5.000   3rd Qu.:5.000   3rd Qu.:5.000  
 Max.   :5.000   Max.   :5.000   Max.   :5.000   Max.   :7.000  
                                                 NA's   :1      
  anx_v_aff_2     anx_v_aff_3     anx_v_aff_4     anx_v_cog_1   
 Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
 1st Qu.:3.000   1st Qu.:3.000   1st Qu.:3.000   1st Qu.:1.000  
 Median :4.000   Median :4.000   Median :4.000   Median :2.000  
 Mean   :3.889   Mean   :3.853   Mean   :3.843   Mean   :2.296  
 3rd Qu.:5.000   3rd Qu.:5.000   3rd Qu.:5.000   3rd Qu.:3.000  
 Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000  
                 NA's   :3       NA's   :7       NA's   :1      
  anx_v_cog_2     anx_v_cog_3     anx_v_cog_4     anx_v_beh_1   
 Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
 1st Qu.:2.000   1st Qu.:1.000   1st Qu.:2.000   1st Qu.:1.000  
 Median :3.000   Median :2.000   Median :3.000   Median :2.000  
 Mean   :3.038   Mean   :2.668   Mean   :3.271   Mean   :2.436  
 3rd Qu.:4.000   3rd Qu.:4.000   3rd Qu.:4.000   3rd Qu.:4.000  
 Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000  
 NA's   :3       NA's   :8       NA's   :4       NA's   :2      
  anx_v_beh_2     anx_v_beh_3     anx_v_beh_4     anx_v_phy_1   
 Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
 1st Qu.:3.000   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000  
 Median :4.000   Median :3.000   Median :2.000   Median :1.000  
 Mean   :3.949   Mean   :2.741   Mean   :2.535   Mean   :2.107  
 3rd Qu.:5.000   3rd Qu.:4.000   3rd Qu.:4.000   3rd Qu.:3.000  
 Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000  
 NA's   :1       NA's   :1       NA's   :3       NA's   :1      
  anx_v_phy_2     anx_v_phy_3     anx_v_phy_4     anx_v_bee_1     anx_v_bee_2 
 Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.0  
 1st Qu.:1.000   1st Qu.:1.000   1st Qu.:2.000   1st Qu.:1.000   1st Qu.:1.0  
 Median :1.000   Median :2.000   Median :3.000   Median :1.000   Median :1.0  
 Mean   :2.164   Mean   :2.409   Mean   :3.287   Mean   :1.807   Mean   :1.7  
 3rd Qu.:3.000   3rd Qu.:4.000   3rd Qu.:5.000   3rd Qu.:2.000   3rd Qu.:2.0  
 Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.0  
 NA's   :2       NA's   :3       NA's   :3       NA's   :2       NA's   :4    
  anx_v_bee_3     anx_v_bee_4     umw_ident_1     umw_ident_2   
 Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
 1st Qu.:1.000   1st Qu.:1.000   1st Qu.:5.000   1st Qu.:5.000  
 Median :1.000   Median :2.000   Median :6.000   Median :6.000  
 Mean   :1.512   Mean   :2.277   Mean   :5.402   Mean   :5.608  
 3rd Qu.:2.000   3rd Qu.:3.000   3rd Qu.:7.000   3rd Qu.:7.000  
 Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000  
                 NA's   :1       NA's   :1       NA's   :2      
  umw_ident_3     umw_ident_4     future_tim1     future_tim2   
 Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
 1st Qu.:6.000   1st Qu.:3.000   1st Qu.:4.000   1st Qu.:1.000  
 Median :7.000   Median :5.000   Median :5.000   Median :2.000  
 Mean   :6.335   Mean   :4.378   Mean   :4.661   Mean   :2.668  
 3rd Qu.:7.000   3rd Qu.:5.000   3rd Qu.:6.000   3rd Qu.:4.000  
 Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000  
 NA's   :1                       NA's   :5       NA's   :2      
  future_tim3     norm_injun1     norm_injun2     norm_injun3   
 Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
 1st Qu.:2.000   1st Qu.:2.000   1st Qu.:3.000   1st Qu.:4.000  
 Median :2.000   Median :3.000   Median :4.000   Median :4.000  
 Mean   :2.688   Mean   :2.525   Mean   :3.388   Mean   :4.213  
 3rd Qu.:4.000   3rd Qu.:3.000   3rd Qu.:4.000   3rd Qu.:5.000  
 Max.   :7.000   Max.   :5.000   Max.   :5.000   Max.   :5.000  
 NA's   :6       NA's   :1       NA's   :1       NA's   :2      
  norm_deskr1     norm_deskr2     selbstw_in1     selbstw_in2   
 Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
 1st Qu.:1.000   1st Qu.:1.000   1st Qu.:3.000   1st Qu.:3.000  
 Median :2.000   Median :2.000   Median :4.000   Median :4.000  
 Mean   :1.867   Mean   :1.784   Mean   :3.482   Mean   :3.375  
 3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:4.000   3rd Qu.:4.000  
 Max.   :5.000   Max.   :5.000   Max.   :5.000   Max.   :5.000  
 NA's   :3                       NA's   :1                      
  selbstw_ko1     selbstw_ko2     kogn_disso1     kogn_disso2   
 Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
 1st Qu.:4.000   1st Qu.:3.000   1st Qu.:1.000   1st Qu.:1.000  
 Median :4.000   Median :4.000   Median :2.000   Median :2.000  
 Mean   :4.167   Mean   :3.633   Mean   :2.342   Mean   :2.329  
 3rd Qu.:5.000   3rd Qu.:4.000   3rd Qu.:3.000   3rd Qu.:3.000  
 Max.   :5.000   Max.   :5.000   Max.   :5.000   Max.   :5.000  
                                 NA's   :2       NA's   :3      
  kogn_disso3     karr_job_p1    karr_job_p2     karr_job_p3     karr_job_p4   
 Min.   :1.000   Min.   :1.00   Min.   :1.000   Min.   :1.000   Min.   :1.000  
 1st Qu.:1.000   1st Qu.:2.00   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000  
 Median :2.000   Median :2.00   Median :2.000   Median :1.000   Median :2.000  
 Mean   :2.301   Mean   :2.49   Mean   :2.107   Mean   :1.745   Mean   :2.282  
 3rd Qu.:3.000   3rd Qu.:3.00   3rd Qu.:3.000   3rd Qu.:2.000   3rd Qu.:3.000  
 Max.   :5.000   Max.   :5.00   Max.   :5.000   Max.   :5.000   Max.   :5.000  
 NA's   :2                      NA's   :2       NA's   :1       NA's   :2      
  karr_unt_p1     karr_unt_p2     karr_unt_p3     karr_unt_p4   
 Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
 1st Qu.:2.000   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000  
 Median :3.000   Median :2.000   Median :1.000   Median :2.000  
 Mean   :2.674   Mean   :2.219   Mean   :1.779   Mean   :2.295  
 3rd Qu.:4.000   3rd Qu.:3.000   3rd Qu.:2.000   3rd Qu.:3.000  
 Max.   :5.000   Max.   :5.000   Max.   :5.000   Max.   :5.000  
 NA's   :2       NA's   :4       NA's   :2                      
  karr_finanz     karr_sicher      karr_status      karr_erreic    
 Min.   : 1.00   Min.   : 1.000   Min.   : 1.000   Min.   : 1.000  
 1st Qu.: 9.00   1st Qu.: 7.000   1st Qu.: 3.000   1st Qu.: 6.000  
 Median :11.00   Median :10.000   Median : 5.000   Median : 8.000  
 Mean   :10.58   Mean   : 9.483   Mean   : 5.352   Mean   : 8.071  
 3rd Qu.:13.00   3rd Qu.:12.000   3rd Qu.: 7.000   3rd Qu.:11.000  
 Max.   :14.00   Max.   :14.000   Max.   :14.000   Max.   :14.000  
 NA's   :52      NA's   :56       NA's   :65       NA's   :61      
  karr_zugang      karr_intere     karr_selbst  karr_ergebn     karr_entwic    
 Min.   : 1.000   Min.   : 1.00   Min.   : 1   Min.   : 1.00   Min.   : 1.000  
 1st Qu.: 3.000   1st Qu.:11.00   1st Qu.: 8   1st Qu.: 7.00   1st Qu.: 7.000  
 Median : 5.000   Median :13.00   Median :11   Median : 9.00   Median :10.000  
 Mean   : 5.824   Mean   :12.11   Mean   :10   Mean   : 8.64   Mean   : 9.222  
 3rd Qu.: 8.000   3rd Qu.:14.00   3rd Qu.:13   3rd Qu.:11.00   3rd Qu.:12.000  
 Max.   :14.000   Max.   :14.00   Max.   :14   Max.   :14.00   Max.   :14.000  
 NA's   :70       NA's   :50      NA's   :53   NA's   :63      NA's   :60      
  karr_akzept      karr_empfeh      karr_akzpee    karr_verant    
 Min.   : 1.000   Min.   : 1.000   Min.   : 1.0   Min.   : 1.000  
 1st Qu.: 3.000   1st Qu.: 1.000   1st Qu.: 2.0   1st Qu.: 6.000  
 Median : 5.000   Median : 2.000   Median : 3.0   Median : 8.000  
 Mean   : 5.585   Mean   : 2.776   Mean   : 4.1   Mean   : 8.566  
 3rd Qu.: 7.000   3rd Qu.: 4.000   3rd Qu.: 5.0   3rd Qu.:12.000  
 Max.   :14.000   Max.   :14.000   Max.   :14.0   Max.   :14.000  
 NA's   :62       NA's   :72       NA's   :64     NA's   :59      
  karr_umwelt      karr_entsc1     karr_entsc2     karr_entsc3   
 Min.   : 1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
 1st Qu.: 3.000   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000  
 Median : 5.000   Median :2.000   Median :2.000   Median :2.000  
 Mean   : 5.409   Mean   :1.891   Mean   :2.134   Mean   :2.103  
 3rd Qu.: 8.000   3rd Qu.:3.000   3rd Qu.:3.000   3rd Qu.:3.000  
 Max.   :14.000   Max.   :5.000   Max.   :5.000   Max.   :5.000  
 NA's   :61       NA's   :3       NA's   :4       NA's   :2      
  karr_entsc4     who_wellbe1     who_wellbe2     who_wellbe3   
 Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
 1st Qu.:1.000   1st Qu.:3.000   1st Qu.:2.000   1st Qu.:2.000  
 Median :2.000   Median :4.000   Median :4.000   Median :4.000  
 Mean   :2.212   Mean   :3.913   Mean   :3.475   Mean   :3.526  
 3rd Qu.:3.000   3rd Qu.:5.000   3rd Qu.:5.000   3rd Qu.:5.000  
 Max.   :5.000   Max.   :6.000   Max.   :6.000   Max.   :6.000  
 NA's   :2       NA's   :3       NA's   :1       NA's   :2      
  who_wellbe4     who_wellbe5     klima_verh1     klima_verh2   
 Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
 1st Qu.:2.000   1st Qu.:3.000   1st Qu.:3.000   1st Qu.:3.000  
 Median :3.000   Median :4.000   Median :4.000   Median :3.000  
 Mean   :3.107   Mean   :3.892   Mean   :3.577   Mean   :3.415  
 3rd Qu.:4.000   3rd Qu.:5.000   3rd Qu.:4.000   3rd Qu.:4.000  
 Max.   :6.000   Max.   :6.000   Max.   :5.000   Max.   :5.000  
 NA's   :2       NA's   :1                       NA's   :1      
  klima_verh3   
 Min.   :1.000  
 1st Qu.:1.000  
 Median :2.000  
 Mean   :2.308  
 3rd Qu.:3.000  
 Max.   :5.000  
                

Klimaangst

alpha(d_skalen %>% select (anx_v_aff_1:anx_v_aff_4, anx_v_bee_1:anx_v_bee_4, anx_v_beh_1:anx_v_beh_4, anx_v_cog_1:anx_v_cog_4, anx_v_phy_1:anx_v_phy_4))

Reliability analysis   
Call: alpha(x = d_skalen %>% select(anx_v_aff_1:anx_v_aff_4, anx_v_bee_1:anx_v_bee_4, 
    anx_v_beh_1:anx_v_beh_4, anx_v_cog_1:anx_v_cog_4, anx_v_phy_1:anx_v_phy_4))

  raw_alpha std.alpha G6(smc) average_r S/N    ase mean  sd median_r
      0.95      0.95    0.96       0.5  20 0.0021  2.8 1.1     0.51

    95% confidence boundaries 
         lower alpha upper
Feldt     0.95  0.95  0.96
Duhachek  0.95  0.95  0.96

 Reliability if an item is dropped:
            raw_alpha std.alpha G6(smc) average_r S/N alpha se  var.r med.r
anx_v_aff_1      0.95      0.95    0.96      0.49  19   0.0023 0.0103  0.51
anx_v_aff_2      0.95      0.95    0.96      0.49  19   0.0023 0.0105  0.51
anx_v_aff_3      0.95      0.95    0.96      0.50  19   0.0023 0.0108  0.51
anx_v_aff_4      0.95      0.95    0.96      0.49  18   0.0023 0.0103  0.51
anx_v_bee_1      0.95      0.95    0.96      0.50  19   0.0022 0.0122  0.51
anx_v_bee_2      0.95      0.95    0.96      0.50  19   0.0022 0.0119  0.52
anx_v_bee_3      0.95      0.95    0.96      0.51  20   0.0021 0.0098  0.52
anx_v_bee_4      0.95      0.95    0.96      0.50  19   0.0022 0.0125  0.51
anx_v_beh_1      0.95      0.95    0.96      0.52  20   0.0021 0.0098  0.52
anx_v_beh_2      0.95      0.95    0.96      0.51  19   0.0022 0.0112  0.51
anx_v_beh_3      0.95      0.95    0.96      0.50  19   0.0022 0.0124  0.51
anx_v_beh_4      0.95      0.95    0.96      0.50  19   0.0022 0.0124  0.51
anx_v_cog_1      0.95      0.95    0.96      0.50  19   0.0022 0.0122  0.51
anx_v_cog_2      0.95      0.95    0.96      0.50  19   0.0022 0.0122  0.51
anx_v_cog_3      0.95      0.95    0.96      0.50  19   0.0022 0.0120  0.51
anx_v_cog_4      0.95      0.95    0.96      0.50  19   0.0022 0.0117  0.51
anx_v_phy_1      0.95      0.95    0.96      0.50  19   0.0022 0.0125  0.51
anx_v_phy_2      0.95      0.95    0.96      0.50  19   0.0022 0.0123  0.51
anx_v_phy_3      0.95      0.95    0.96      0.50  19   0.0022 0.0120  0.51
anx_v_phy_4      0.95      0.95    0.96      0.50  19   0.0023 0.0118  0.51

 Item statistics 
               n raw.r std.r r.cor r.drop mean   sd
anx_v_aff_1 1026  0.81  0.79  0.79   0.78  4.0 1.62
anx_v_aff_2 1027  0.81  0.79  0.79   0.78  3.9 1.59
anx_v_aff_3 1024  0.77  0.76  0.75   0.74  3.9 1.71
anx_v_aff_4 1020  0.83  0.81  0.81   0.80  3.8 1.68
anx_v_bee_1 1025  0.69  0.71  0.69   0.66  1.8 1.11
anx_v_bee_2 1023  0.65  0.68  0.66   0.62  1.7 1.09
anx_v_bee_3 1027  0.53  0.57  0.54   0.50  1.5 0.99
anx_v_bee_4 1026  0.74  0.75  0.73   0.70  2.3 1.35
anx_v_beh_1 1025  0.53  0.53  0.49   0.47  2.4 1.59
anx_v_beh_2 1026  0.67  0.66  0.64   0.63  3.9 1.56
anx_v_beh_3 1026  0.73  0.73  0.71   0.69  2.7 1.51
anx_v_beh_4 1024  0.70  0.70  0.68   0.66  2.5 1.36
anx_v_cog_1 1026  0.76  0.77  0.75   0.72  2.3 1.42
anx_v_cog_2 1024  0.74  0.74  0.73   0.71  3.0 1.48
anx_v_cog_3 1019  0.77  0.77  0.76   0.74  2.7 1.47
anx_v_cog_4 1023  0.77  0.76  0.75   0.73  3.3 1.56
anx_v_phy_1 1026  0.71  0.71  0.69   0.67  2.1 1.40
anx_v_phy_2 1025  0.75  0.75  0.74   0.71  2.2 1.48
anx_v_phy_3 1024  0.75  0.75  0.74   0.72  2.4 1.61
anx_v_phy_4 1024  0.79  0.77  0.76   0.75  3.3 1.75

Non missing response frequency for each item
               1    2    3    4    5    6    7 miss
anx_v_aff_1 0.10 0.10 0.11 0.30 0.21 0.13 0.06 0.00
anx_v_aff_2 0.11 0.11 0.12 0.30 0.21 0.11 0.04 0.00
anx_v_aff_3 0.14 0.11 0.11 0.26 0.21 0.11 0.05 0.00
anx_v_aff_4 0.12 0.13 0.11 0.29 0.20 0.10 0.06 0.01
anx_v_bee_1 0.55 0.22 0.12 0.09 0.01 0.01 0.00 0.00
anx_v_bee_2 0.63 0.17 0.11 0.07 0.02 0.01 0.00 0.00
anx_v_bee_3 0.72 0.14 0.07 0.05 0.02 0.00 0.00 0.00
anx_v_bee_4 0.39 0.25 0.15 0.14 0.06 0.01 0.00 0.00
anx_v_beh_1 0.42 0.19 0.12 0.14 0.09 0.03 0.01 0.00
anx_v_beh_2 0.11 0.09 0.12 0.29 0.25 0.11 0.03 0.00
anx_v_beh_3 0.29 0.19 0.18 0.19 0.10 0.03 0.00 0.00
anx_v_beh_4 0.30 0.24 0.17 0.21 0.06 0.01 0.00 0.00
anx_v_cog_1 0.40 0.23 0.15 0.13 0.06 0.03 0.00 0.00
anx_v_cog_2 0.19 0.21 0.19 0.24 0.12 0.04 0.01 0.00
anx_v_cog_3 0.28 0.23 0.18 0.18 0.09 0.03 0.01 0.01
anx_v_cog_4 0.17 0.19 0.16 0.27 0.12 0.08 0.01 0.00
anx_v_phy_1 0.50 0.18 0.12 0.12 0.04 0.02 0.00 0.00
anx_v_phy_2 0.50 0.16 0.13 0.10 0.07 0.02 0.01 0.00
anx_v_phy_3 0.44 0.17 0.11 0.15 0.07 0.04 0.01 0.00
anx_v_phy_4 0.22 0.17 0.11 0.24 0.14 0.08 0.03 0.00
summary(d$anx_gesamt)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  1.000   2.000   2.700   2.794   3.550   6.200 
d %>%
  filter(!is.na(anx_gesamt)) %>%
  ggplot(aes(x = anx_gesamt)) +
  geom_density(fill = "grey70", alpha = 0.6) +
  labs(
    x = "Klimaangst",
    y = "Dichte"
  ) +
  theme_minimal()

Umweltidentität

alpha(d_skalen %>% select(umw_ident_1:umw_ident_4))

Reliability analysis   
Call: alpha(x = d_skalen %>% select(umw_ident_1:umw_ident_4))

  raw_alpha std.alpha G6(smc) average_r S/N   ase mean sd median_r
      0.76      0.77    0.73      0.46 3.4 0.012  5.4  1     0.48

    95% confidence boundaries 
         lower alpha upper
Feldt     0.74  0.76  0.78
Duhachek  0.74  0.76  0.78

 Reliability if an item is dropped:
            raw_alpha std.alpha G6(smc) average_r S/N alpha se   var.r med.r
umw_ident_1      0.68      0.71    0.63      0.44 2.4    0.017 0.01084  0.49
umw_ident_2      0.67      0.68    0.59      0.41 2.1    0.017 0.00596  0.43
umw_ident_3      0.74      0.75    0.66      0.50 3.0    0.014 0.00049  0.49
umw_ident_4      0.73      0.74    0.66      0.49 2.9    0.014 0.00252  0.51

 Item statistics 
               n raw.r std.r r.cor r.drop mean  sd
umw_ident_1 1026  0.80  0.79  0.68   0.60  5.4 1.4
umw_ident_2 1025  0.80  0.82  0.74   0.65  5.6 1.2
umw_ident_3 1026  0.70  0.74  0.60   0.50  6.3 1.1
umw_ident_4 1027  0.78  0.74  0.61   0.54  4.4 1.6

Non missing response frequency for each item
               1    2    3    4    5    6    7 miss
umw_ident_1 0.02 0.02 0.06 0.13 0.26 0.23 0.28    0
umw_ident_2 0.01 0.01 0.03 0.08 0.32 0.30 0.25    0
umw_ident_3 0.01 0.01 0.02 0.03 0.10 0.20 0.63    0
umw_ident_4 0.06 0.07 0.13 0.23 0.26 0.15 0.09    0
summary(d$umw_ident_mean)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  1.000   4.750   5.500   5.429   6.250   7.000 
d %>%
  filter(!is.na(umw_ident_mean)) %>%
  ggplot(aes(x = umw_ident_mean)) +
  geom_density(fill = "grey70", alpha = 0.6) +
  labs(
    x = "Umweltidentität",
    y = "Dichte"
  ) +
  theme_minimal()

Soziale Normen

alpha(d_skalen %>% select(norm_injun1:norm_deskr2))

Reliability analysis   
Call: alpha(x = d_skalen %>% select(norm_injun1:norm_deskr2))

  raw_alpha std.alpha G6(smc) average_r S/N   ase mean   sd median_r
      0.69      0.69     0.7      0.31 2.2 0.015  2.8 0.63     0.32

    95% confidence boundaries 
         lower alpha upper
Feldt     0.65  0.69  0.72
Duhachek  0.66  0.69  0.72

 Reliability if an item is dropped:
            raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
norm_injun1      0.58      0.60    0.60      0.27 1.5    0.021 0.040  0.24
norm_injun2      0.60      0.62    0.60      0.29 1.6    0.020 0.046  0.28
norm_injun3      0.70      0.72    0.69      0.39 2.6    0.015 0.018  0.42
norm_deskr1      0.63      0.62    0.59      0.29 1.6    0.018 0.024  0.30
norm_deskr2      0.65      0.64    0.62      0.31 1.8    0.018 0.027  0.34

 Item statistics 
               n raw.r std.r r.cor r.drop mean   sd
norm_injun1 1026  0.75  0.74  0.65   0.55  2.5 1.01
norm_injun2 1026  0.76  0.71  0.61   0.52  3.4 1.16
norm_injun3 1025  0.54  0.52  0.32   0.28  4.2 0.95
norm_deskr1 1024  0.67  0.71  0.63   0.46  1.9 0.87
norm_deskr2 1027  0.61  0.67  0.58   0.44  1.8 0.70

Non missing response frequency for each item
               1    2    3    4    5 miss
norm_injun1 0.17 0.31 0.37 0.13 0.03    0
norm_injun2 0.08 0.13 0.28 0.33 0.18    0
norm_injun3 0.01 0.06 0.13 0.32 0.49    0
norm_deskr1 0.41 0.35 0.20 0.03 0.00    0
norm_deskr2 0.35 0.55 0.08 0.02 0.00    0
summary(d$norm_desin_mean)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  1.000   2.400   2.800   2.755   3.200   4.800 
d %>%
  filter(!is.na(norm_desin_mean)) %>%
  ggplot(aes(x = norm_desin_mean)) +
  geom_density(fill = "grey70", alpha = 0.6) +
  labs(
    x = "Soziale Normen",
    y = "Dichte"
  ) +
  theme_minimal()

Karriereabsichten

alpha(d_skalen %>% select(karr_job_p1:karr_unt_p4))

Reliability analysis   
Call: alpha(x = d_skalen %>% select(karr_job_p1:karr_unt_p4))

  raw_alpha std.alpha G6(smc) average_r S/N    ase mean   sd median_r
      0.92      0.92    0.94      0.59  11 0.0039  2.2 0.87     0.62

    95% confidence boundaries 
         lower alpha upper
Feldt     0.91  0.92  0.93
Duhachek  0.91  0.92  0.93

 Reliability if an item is dropped:
            raw_alpha std.alpha G6(smc) average_r  S/N alpha se var.r med.r
karr_job_p1      0.91      0.91    0.92      0.58  9.9   0.0046 0.016  0.60
karr_job_p2      0.91      0.91    0.92      0.59  9.9   0.0045 0.020  0.64
karr_job_p3      0.92      0.92    0.92      0.61 11.0   0.0040 0.016  0.64
karr_job_p4      0.90      0.90    0.92      0.57  9.4   0.0048 0.017  0.60
karr_unt_p1      0.91      0.91    0.92      0.58  9.8   0.0046 0.015  0.62
karr_unt_p2      0.91      0.91    0.92      0.58  9.7   0.0046 0.019  0.60
karr_unt_p3      0.92      0.92    0.92      0.62 11.6   0.0038 0.012  0.64
karr_unt_p4      0.90      0.90    0.92      0.57  9.4   0.0048 0.017  0.60

 Item statistics 
               n raw.r std.r r.cor r.drop mean  sd
karr_job_p1 1027  0.82  0.82  0.79   0.75  2.5 1.1
karr_job_p2 1025  0.81  0.81  0.78   0.75  2.1 1.0
karr_job_p3 1026  0.72  0.73  0.69   0.64  1.7 1.1
karr_job_p4 1025  0.86  0.86  0.84   0.80  2.3 1.1
karr_unt_p1 1025  0.83  0.82  0.80   0.76  2.7 1.2
karr_unt_p2 1023  0.83  0.83  0.80   0.77  2.2 1.1
karr_unt_p3 1025  0.69  0.69  0.65   0.59  1.8 1.1
karr_unt_p4 1027  0.86  0.86  0.84   0.81  2.3 1.1

Non missing response frequency for each item
               1    2    3    4    5 miss
karr_job_p1 0.24 0.28 0.29 0.17 0.04    0
karr_job_p2 0.34 0.34 0.23 0.08 0.02    0
karr_job_p3 0.58 0.21 0.12 0.06 0.03    0
karr_job_p4 0.29 0.30 0.29 0.10 0.03    0
karr_unt_p1 0.22 0.23 0.26 0.24 0.05    0
karr_unt_p2 0.31 0.30 0.25 0.12 0.02    0
karr_unt_p3 0.57 0.22 0.11 0.07 0.03    0
karr_unt_p4 0.29 0.28 0.30 0.11 0.02    0
summary(d$karr_juu_mean)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  1.000   1.500   2.125   2.200   2.875   5.000 
d %>%
  filter(!is.na(karr_juu_mean)) %>%
  ggplot(aes(x = karr_juu_mean)) +
  geom_density(fill = "grey70", alpha = 0.6) +
  labs(
    x = "Karriereabsichten",
    y = "Dichte"
  ) +
  theme_minimal()

Karriereentscheidungen

alpha(d_skalen %>% select (karr_entsc1:karr_entsc4))

Reliability analysis   
Call: alpha(x = d_skalen %>% select(karr_entsc1:karr_entsc4))

  raw_alpha std.alpha G6(smc) average_r S/N    ase mean   sd median_r
      0.91      0.91    0.88      0.71 9.7 0.0048  2.1 0.96     0.73

    95% confidence boundaries 
         lower alpha upper
Feldt      0.9  0.91  0.92
Duhachek   0.9  0.91  0.92

 Reliability if an item is dropped:
            raw_alpha std.alpha G6(smc) average_r S/N alpha se   var.r med.r
karr_entsc1      0.90      0.90    0.85      0.74 8.7   0.0056 0.00039  0.73
karr_entsc2      0.87      0.87    0.82      0.69 6.8   0.0070 0.00311  0.72
karr_entsc3      0.86      0.86    0.81      0.68 6.3   0.0074 0.00279  0.67
karr_entsc4      0.88      0.88    0.84      0.72 7.7   0.0062 0.00239  0.72

 Item statistics 
               n raw.r std.r r.cor r.drop mean  sd
karr_entsc1 1024  0.85  0.85  0.78   0.74  1.9 1.0
karr_entsc2 1023  0.90  0.90  0.85   0.81  2.1 1.1
karr_entsc3 1025  0.91  0.91  0.88   0.83  2.1 1.1
karr_entsc4 1025  0.88  0.88  0.82   0.77  2.2 1.1

Non missing response frequency for each item
               1    2    3    4    5 miss
karr_entsc1 0.47 0.28 0.17 0.06 0.02    0
karr_entsc2 0.36 0.28 0.23 0.10 0.02    0
karr_entsc3 0.38 0.28 0.21 0.09 0.03    0
karr_entsc4 0.34 0.27 0.24 0.12 0.03    0
summary(d$karr_entsc_mean)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  1.000   1.000   2.000   2.086   2.750   5.000 
d %>%
  filter(!is.na(karr_entsc_mean)) %>%
  ggplot(aes(x = karr_entsc_mean)) +
  geom_density(fill = "grey70", alpha = 0.6) +
  labs(
    x = "Karriereentscheidungen",
    y = "Dichte"
  ) +
  theme_minimal()

Umweltverhalten

alpha(d_skalen %>% select(klima_verh1:klima_verh3))

Reliability analysis   
Call: alpha(x = d_skalen %>% select(klima_verh1:klima_verh3))

  raw_alpha std.alpha G6(smc) average_r  S/N   ase mean   sd median_r
      0.41      0.43    0.35       0.2 0.74 0.032  3.1 0.68     0.23

    95% confidence boundaries 
         lower alpha upper
Feldt     0.35  0.41  0.47
Duhachek  0.35  0.41  0.48

 Reliability if an item is dropped:
            raw_alpha std.alpha G6(smc) average_r  S/N alpha se var.r med.r
klima_verh1      0.10      0.10   0.054     0.054 0.11    0.056    NA 0.054
klima_verh2      0.46      0.47   0.306     0.306 0.88    0.033    NA 0.306
klima_verh3      0.38      0.38   0.233     0.233 0.61    0.039    NA 0.233

 Item statistics 
               n raw.r std.r r.cor r.drop mean   sd
klima_verh1 1027  0.72  0.75  0.56   0.37  3.6 0.91
klima_verh2 1026  0.63  0.63  0.28   0.17  3.4 1.02
klima_verh3 1027  0.69  0.66  0.37   0.22  2.3 1.09

Non missing response frequency for each item
               1    2    3    4    5 miss
klima_verh1 0.04 0.08 0.25 0.54 0.10    0
klima_verh2 0.02 0.18 0.32 0.33 0.15    0
klima_verh3 0.30 0.27 0.28 0.14 0.01    0
summary(d$klima_verh_summ)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  3.000   8.000   9.000   9.297  11.000  15.000 
d %>%
  filter(!is.na(klima_verh_summ)) %>%
  ggplot(aes(x = karr_entsc_mean)) +
  geom_density(fill = "grey70", alpha = 0.6) +
  labs(
    x = "Umweltverhalten",
    y = "Dichte"
  ) +
  theme_minimal()

# Problematisch ist Umweltverhalten eventuell, da es Kriterium von H1a ist -> Limitationen?
# Alle anderen Skalen sind für gemeinsame Skalenwerte (Mittelwerte) geeignet
# -> "Die drei Indikatoren zum Klimaverhalten zeigten nur geringe Inter-Item-Korrelationen und bilden kein eindimensionales Konstrukt" -> Vorsichtige Interpretation der Ergebnisse unter Einbeziehung des Skalenwerts umw_ver_summ, ggf Indikatoren getrennt analysieren

Grafiken zu Voraussetzungen der Regressionsanalyse

mod_reg <- lm(d$karr_juu_mean ~  
            d$anx_gesamt + 
            d$umw_ident_mean + 
            d$norm_desin_mean + 
            d$alter_jahre + 
            d$geschlecht1
          )

res <- residuals(mod_reg)

Histogramm der Residuen

# mit Häufigkeit:
hist(res, breaks = 30, main = "Histogramm der Residuen", xlab = "Residuen")

# Residuen extrahieren:
res <- residuals(mod_reg)
# Histogramm + theoretische Normalverteilung
ggplot(data.frame(res), aes(x = res)) +
  geom_histogram(
    aes(y = after_stat(density)),
    bins = 20,
    fill = "grey70",
    color = "white"
  ) +
  stat_function(
    fun = dnorm,
    args = list(
      mean = mean(res),
      sd   = sd(res)
    ),
    color = "firebrick",
    linewidth = 0.8
  ) +
  labs(
    title = "Histogramm der Residuen",
    x = "Residuen",
    y = "Dichte"
  ) +
  theme_minimal()

# annähernd glockenförmig
# keine extremen Schieflagen

Q-Q Plot

qqnorm(res)
qqline(res, col = "firebrick")

# Punkte liegen grob auf der Diagonalen 
# nur leichte Abweichungen an den Rändern

Residuals vs. Fitted

plot(
  fitted(mod_reg),
  residuals(mod_reg),
  xlab = "Vorhergesagte Werte",
  ylab = "Residuen",
  main = "Residuals vs. Fitted"
)
abline(h = 0, col = "firebrick")

VIF

library(car)
vif(mod_reg)
     d$anx_gesamt  d$umw_ident_mean d$norm_desin_mean     d$alter_jahre 
         1.339689          1.238611          1.205895          1.097823 
    d$geschlecht1 
         1.082231 
# 4) VIF als Textpanel (Multikollinearität)
#vif_df <- data.frame(
  #Prädiktor = names(vif(mod_reg)),
  #VIF = round(vif(mod_reg), 2)
#)

#p4 <- ggplot(vif_df, aes(x = Prädiktor, y = VIF)) +
#  geom_col(fill = "grey70") +
#  geom_hline(yintercept = 5, linetype = "dashed", color = "firebrick") +
#  labs(
#    title = "Varianzinflationsfaktoren (VIF)",
#    x = "",
#    y = "VIF"
#  ) +
#  theme_minimal() +
#  theme(axis.text.x = element_text(angle = 45, hjust = 1))

# fürs Poster besser:
# alle < 2 (und ziemlich nah an 1)
# kleine Abbildung für das Poster (alle zusammen):
#install.packages("patchwork")
library(patchwork)
# Daten vorbereiten
diag_df <- data.frame(
  fitted = fitted(mod_reg),
  resid  = residuals(mod_reg)
  )

# 1) Residuen vs. Fitted (Linearität & Homoskedastizität)
p1 <- ggplot(diag_df, aes(x = fitted, y = resid)) +
  geom_point(alpha = 0.4) +
  geom_hline(yintercept = 0, color = "firebrick") +
  labs(
    title = "Residuals vs. Fitted",
    x = "Vorhergesagte Werte",
    y = "Residuen"
  ) +
  theme_minimal()

# 2) Normal Q-Q Plot (Normalverteilung)
p2 <- ggplot(diag_df, aes(sample = resid)) +
  stat_qq(alpha = 0.4) +
  stat_qq_line(color = "firebrick") +
  labs(
    title = "Normal Q-Q Plot",
    x = "Theoretische Quantile",
    y = "Stichprobenquantile"
  ) +
  theme_minimal()

# 3) Histogramm der Residuen + Normalverteilung
p3 <- ggplot(diag_df, aes(x = resid)) +
  geom_histogram(
    aes(y = after_stat(density)),
    bins = 20,
    fill = "grey70",
    color = "white"
  ) +
  stat_function(
    fun = dnorm,
    args = list(
      mean = mean(diag_df$resid),
      sd   = sd(diag_df$resid)
    ),
    color = "firebrick",
    linewidth = 1
  ) +
  labs(
    title = "Histogramm der Residuen",
    x = "Residuen",
    y = "Dichte"
  ) +
  theme_minimal()

# 4) VIF als Textpanel (Multikollinearität)

# VIF-Daten aufbereiten
vif_df <- data.frame(
  Prädiktor = names(vif(mod_reg)),
  VIF = round(vif(mod_reg), 2)
  )

# Text-Plot als Tabelle
p4 <- ggplot(vif_df, aes(x = 1, y = reorder(Prädiktor, VIF))) +
  geom_text(
    aes(label = paste0("VIF = ", VIF)),
    hjust = 0,
    size = 4
  ) +
  geom_text(
    aes(label = Prädiktor),
    hjust = 1.1,
    size = 4,
    fontface = "bold"
  ) +
  scale_x_continuous(limits = c(0.5, 2)) +
  labs(title = "Multikollinearität (VIF)") +
  theme_void() +
  theme(
    plot.title = element_text(hjust = 0.5)
  )

# Alle Plots zusammen
(p1 | p2) / (p3 | p4)

Hypothesen

H1a Klimaangst und Klimabewusstes Verhalten stehen in einem positiven Zusammenhang. H1b Klimaangst und Karriereabsichten stehen in einem positiven Zusammenhang. H1c Soziale Normen und Umweltidentität wirken dabei als Moderatoren. H2 Soziale Normen und Umweltidentität wirken als Prädiktoren für das Kriterium Karriereabsichten.

Regressionsanalysen

# H1a einzeln
#zunächst Berechnung Pearson's Produkt-Moment-Korrelation für Klimaangst (gesamt) und Klimaverhalten (Summe):
cor.test(d$anx_gesamt, d$klima_verh_summ)

    Pearson's product-moment correlation

data:  d$anx_gesamt and d$klima_verh_summ
t = 13.4, df = 1025, p-value < 0.00000000000000022
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.3327915 0.4369558
sample estimates:
      cor 
0.3861038 
# -> Explorative Analysen
# r = .39 ist ein mittlerer Zusammenhang, der sich auch ähnlich zeigen sollte, wenn mittels Regressionsanalyse die Subskalen anx_v_aff_mean,...,anx_v_phy_mean mit klima_verh_summ in Beziehung gesetzt werden 
# Da es sich bei klima_verh_summ um einen formativen Verhaltensindex handelt, sind Kriterien reflektiver Skalen wie interne Konsistenz (α = .41) oder Eindimensionalität hier nicht maßgeblich. Die inhaltliche Heterogenität der Items ist dabei konzeptionell intendiert, Die Zusammenhänge der Subskalen werden ergänzend berechnet.

H1a wurde bestätigt.

#H1 (b) einzeln
# könnten jetzt auch alle mit cor_apa dargestellt werden, aber läuft auch nach wie vor so:
d %>% 
  select(karr_juu_mean,
         anx_gesamt,
         anx_v_aff_mean,
         anx_v_bee_mean,
         anx_v_beh_mean,
         anx_v_cog_mean,
         anx_v_phy_mean
         ) %>% 
  as.matrix %>%         # here is the "we make it pure numbers" part
  corx(triangle = "lower", 
       stars = c(.05, .01, .001),
       describe = c('mean','sd')) %>%
  as.data.frame(.["apa"])
# A tibble: 7 × 8
  `1`      `2`      `3`      `4`      `5`      `6`      mean  sd   
  <chr>    <chr>    <chr>    <chr>    <chr>    <chr>    <chr> <chr>
1 " - "    ""       ""       ""       ""       ""       2.20  0.87 
2 ".41***" " - "    ""       ""       ""       ""       2.79  1.07 
3 ".30***" ".88***" " - "    ""       ""       ""       3.91  1.50 
4 ".38***" ".80***" ".53***" " - "    ""       ""       1.83  0.94 
5 ".40***" ".88***" ".74***" ".67***" " - "    ""       2.92  1.12 
6 ".40***" ".89***" ".75***" ".70***" ".72***" " - "    2.82  1.26 
7 ".32***" ".89***" ".72***" ".69***" ".72***" ".71***" 2.49  1.32 

H1b wurde bestätigt.

# H1 (c) einzeln
library(interactions)
library(lm.beta)
library(parameters)
# nur mit Soziale Normen:
mod_juu_norm <- lm(karr_juu_mean ~ anx_gesamt * norm_desin_mean, data = d)
model_parameters(mod_juu_norm, standardize = "refit")
# A tibble: 4 × 9
  Parameter    Coefficient     SE    CI  CI_low CI_high      t df_error        p
  <chr>              <dbl>  <dbl> <dbl>   <dbl>   <dbl>  <dbl>    <int>    <dbl>
1 (Intercept)       0.0133 0.0287  0.95 -0.0431  0.0697  0.464     1023 6.43e- 1
2 anx_gesamt        0.305  0.0292  0.95  0.248   0.363  10.4       1023 2.47e-24
3 norm_desin_…      0.287  0.0293  0.95  0.229   0.344   9.79      1023 1.10e-21
4 anx_gesamt:…     -0.0375 0.0257  0.95 -0.0878  0.0129 -1.46      1023 1.45e- 1
summary(mod_juu_norm)

Call:
lm(formula = karr_juu_mean ~ anx_gesamt * norm_desin_mean, data = d)

Residuals:
     Min       1Q   Median       3Q      Max 
-1.91801 -0.55296 -0.07097  0.49019  2.90910 

Coefficients:
                           Estimate Std. Error t value     Pr(>|t|)    
(Intercept)                 0.05589    0.26536   0.211        0.833    
anx_gesamt                  0.38143    0.09561   3.989 0.0000709802 ***
norm_desin_mean             0.53033    0.09773   5.426 0.0000000719 ***
anx_gesamt:norm_desin_mean -0.04825    0.03306  -1.459        0.145    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.7616 on 1023 degrees of freedom
Multiple R-squared:  0.2399,    Adjusted R-squared:  0.2376 
F-statistic: 107.6 on 3 and 1023 DF,  p-value: < 0.00000000000000022
# nur mit Umweltidentität:
mod_juu_ident <- lm(karr_juu_mean ~ anx_gesamt * umw_ident_mean, data = d)
model_parameters(mod_juu_ident, standardize = "refit")
# A tibble: 4 × 9
  Parameter   Coefficient     SE    CI  CI_low CI_high       t df_error        p
  <chr>             <dbl>  <dbl> <dbl>   <dbl>   <dbl>   <dbl>    <int>    <dbl>
1 (Intercept)    -0.00118 0.0294  0.95 -0.0589  0.0565 -0.0400     1023 9.68e- 1
2 anx_gesamt      0.349   0.0300  0.95  0.290   0.408  11.6        1023 1.94e-29
3 umw_ident_…     0.181   0.0307  0.95  0.121   0.241   5.89       1023 5.35e- 9
4 anx_gesamt…     0.00375 0.0279  0.95 -0.0511  0.0586  0.134      1023 8.93e- 1
summary(mod_juu_ident)

Call:
lm(formula = karr_juu_mean ~ anx_gesamt * umw_ident_mean, data = d)

Residuals:
     Min       1Q   Median       3Q      Max 
-2.10759 -0.61021 -0.06101  0.49429  2.76877 

Coefficients:
                          Estimate Std. Error t value Pr(>|t|)  
(Intercept)               0.619044   0.328249   1.886   0.0596 .
anx_gesamt                0.267864   0.126204   2.122   0.0340 *
umw_ident_mean            0.144802   0.059959   2.415   0.0159 *
anx_gesamt:umw_ident_mean 0.002959   0.022050   0.134   0.8933  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.7843 on 1023 degrees of freedom
Multiple R-squared:  0.194, Adjusted R-squared:  0.1916 
F-statistic: 82.07 on 3 and 1023 DF,  p-value: < 0.00000000000000022
# zusätzlich mit Alter und Geschlecht (mögliche Kolinearität)
mod_juu_kol <- lm(karr_juu_mean ~ 
                  anx_gesamt*umw_ident_mean 
                  + anx_gesamt*norm_desin_mean 
                  + alter_jahre 
                  + geschlecht1, 
                  data = d)
model_parameters(mod_juu_kol, standardize = "refit")
# A tibble: 8 × 9
  Parameter    Coefficient     SE    CI  CI_low CI_high      t df_error        p
  <chr>              <dbl>  <dbl> <dbl>   <dbl>   <dbl>  <dbl>    <int>    <dbl>
1 (Intercept)      -0.0426 0.0360  0.95 -0.113   0.0281 -1.18       987 2.37e- 1
2 anx_gesamt        0.302  0.0324  0.95  0.239   0.366   9.32       987 7.15e-20
3 umw_ident_m…      0.118  0.0313  0.95  0.0569  0.180   3.78       987 1.68e- 4
4 norm_desin_…      0.249  0.0302  0.95  0.190   0.308   8.25       987 4.91e-16
5 alter_jahre       0.0282 0.0287  0.95 -0.0282  0.0846  0.981      987 3.27e- 1
6 geschlecht1…      0.147  0.0600  0.95  0.0293  0.265   2.45       987 1.44e- 2
7 anx_gesamt:…      0.0123 0.0288  0.95 -0.0442  0.0688  0.428      987 6.69e- 1
8 anx_gesamt:…     -0.0354 0.0262  0.95 -0.0869  0.0160 -1.35       987 1.77e- 1
summary(mod_juu_kol)

Call:
lm(formula = karr_juu_mean ~ anx_gesamt * umw_ident_mean + anx_gesamt * 
    norm_desin_mean + alter_jahre + geschlecht1, data = d)

Residuals:
     Min       1Q   Median       3Q      Max 
-1.89849 -0.54617 -0.03917  0.49229  3.00142 

Coefficients:
                            Estimate Std. Error t value   Pr(>|t|)    
(Intercept)                -0.299195   0.391952  -0.763     0.4454    
anx_gesamt                  0.321368   0.148009   2.171     0.0301 *  
umw_ident_mean              0.073887   0.064453   1.146     0.2519    
norm_desin_mean             0.472235   0.101779   4.640 0.00000396 ***
alter_jahre                 0.002001   0.002040   0.981     0.3268    
geschlecht1männlich         0.128132   0.052275   2.451     0.0144 *  
anx_gesamt:umw_ident_mean   0.009969   0.023312   0.428     0.6690    
anx_gesamt:norm_desin_mean -0.046106   0.034120  -1.351     0.1769    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.7534 on 987 degrees of freedom
  (32 Beobachtungen als fehlend gelöscht)
Multiple R-squared:  0.2578,    Adjusted R-squared:  0.2526 
F-statistic: 48.98 on 7 and 987 DF,  p-value: < 0.00000000000000022

H1c wurde nicht bestätigt

#Prüfung H2 - Umweltidentität und Soziale Normen als Prädiktoren 
library(effectsize)
# Umweltidentität als Prädiktor für Karriereabsichten:
lmH2a <- lm(karr_juu_mean ~ umw_ident_mean, data = d)
summary(lmH2a)

Call:
lm(formula = karr_juu_mean ~ umw_ident_mean, data = d)

Residuals:
     Min       1Q   Median       3Q      Max 
-1.58426 -0.65053 -0.08677  0.59570  2.90569 

Coefficients:
               Estimate Std. Error t value             Pr(>|t|)    
(Intercept)     0.86946    0.13978   6.220       0.000000000723 ***
umw_ident_mean  0.24497    0.02529   9.685 < 0.0000000000000002 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.8353 on 1025 degrees of freedom
Multiple R-squared:  0.08384,   Adjusted R-squared:  0.08294 
F-statistic:  93.8 on 1 and 1025 DF,  p-value: < 0.00000000000000022
# f² selber mit Formel berechnen:
R2a <- summary(lmH2a)$r.squared
Formel_f2a <- R2a / (1 - R2a)
Formel_f2a
[1] 0.09151096
# f² = .09
# mit effectsize:
cohens_f_squared(lmH2a, partial = FALSE)
# A tibble: 1 × 5
  Parameter      Cohens_f2    CI CI_low CI_high
  <chr>              <dbl> <dbl>  <dbl>   <dbl>
1 umw_ident_mean    0.0915  0.95 0.0624     Inf
# ebenfalls f² = .09, 95% CI = [.06, Inf]
cohens_f_squared(lmH2a)
# A tibble: 1 × 5
  Parameter      Cohens_f2    CI CI_low CI_high
  <chr>              <dbl> <dbl>  <dbl>   <dbl>
1 umw_ident_mean    0.0915  0.95 0.0624     Inf
# ebenfalls f² = .09, 95% CI = [.06, Inf]
cor.test(d$karr_juu_mean, d$umw_ident_mean)

    Pearson's product-moment correlation

data:  d$karr_juu_mean and d$umw_ident_mean
t = 9.685, df = 1025, p-value < 0.00000000000000022
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.2324949 0.3446177
sample estimates:
      cor 
0.2895493 
# r = .290; b = .245; R² = .084; f² = 

# Soziale Normen als Prädiktor für Karriereabsichten:
lmH2b <- lm(karr_juu_mean ~ norm_desin_mean, data = d)
summary(lmH2b)

Call:
lm(formula = karr_juu_mean ~ norm_desin_mean, data = d)

Residuals:
    Min      1Q  Median      3Q     Max 
-1.9934 -0.5994 -0.0691  0.5881  2.9802 

Coefficients:
                Estimate Std. Error t value             Pr(>|t|)    
(Intercept)      0.68632    0.11180   6.139        0.00000000119 ***
norm_desin_mean  0.54931    0.03956  13.886 < 0.0000000000000002 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.8006 on 1025 degrees of freedom
Multiple R-squared:  0.1583,    Adjusted R-squared:  0.1575 
F-statistic: 192.8 on 1 and 1025 DF,  p-value: < 0.00000000000000022
R2b <- summary(lmH2b)$r.squared
Formel_f2b <- R2b / (1 - R2b)
Formel_f2b
[1] 0.1881242
# f² = .19
# mit effectsize:
cohens_f_squared(lmH2b, partial = FALSE)
# A tibble: 1 × 5
  Parameter       Cohens_f2    CI CI_low CI_high
  <chr>               <dbl> <dbl>  <dbl>   <dbl>
1 norm_desin_mean     0.188  0.95  0.144     Inf
# ebenfalls f² = .19, 95% CI = [.14, Inf]
cohens_f_squared(lmH2b)
# A tibble: 1 × 5
  Parameter       Cohens_f2    CI CI_low CI_high
  <chr>               <dbl> <dbl>  <dbl>   <dbl>
1 norm_desin_mean     0.188  0.95  0.144     Inf
cor.test(d$karr_juu_mean, d$norm_desin_mean)

    Pearson's product-moment correlation

data:  d$karr_juu_mean and d$norm_desin_mean
t = 13.886, df = 1025, p-value < 0.00000000000000022
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.3451450 0.4481791
sample estimates:
     cor 
0.397916 
# r = .398; b = .550; R² = .158 

H2 wurde bestätigt

Visualisierung

# geom_jitter sorgt dafür, dass die Punkte nicht alle übereinander liegen (Overplotting)
# alpha = 0.2 macht die Punkte transparent, damit man Cluster besser sieht
# Regressionsgerade (method = "lm")
# Titel sind hier auskommentiert zur Übernahme der Abbildungen in die Hausarbeit/das Poster

# H1a
lmH1a <- lm(klima_verh_summ ~ anx_gesamt, data = d)
summary(lmH1a)

Call:
lm(formula = klima_verh_summ ~ anx_gesamt, data = d)

Residuals:
    Min      1Q  Median      3Q     Max 
-5.2641 -1.3015  0.0317  1.2910  5.9206 

Coefficients:
            Estimate Std. Error t value            Pr(>|t|)    
(Intercept)  7.22786    0.16537   43.71 <0.0000000000000002 ***
anx_gesamt   0.74060    0.05527   13.40 <0.0000000000000002 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.897 on 1025 degrees of freedom
Multiple R-squared:  0.1491,    Adjusted R-squared:  0.1482 
F-statistic: 179.6 on 1 and 1025 DF,  p-value: < 0.00000000000000022
cor.test(d$klima_verh_summ, d$anx_gesamt)

    Pearson's product-moment correlation

data:  d$klima_verh_summ and d$anx_gesamt
t = 13.4, df = 1025, p-value < 0.00000000000000022
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.3327915 0.4369558
sample estimates:
      cor 
0.3861038 
ggplot(d, aes(x = anx_gesamt, y = karr_juu_mean)) +
  geom_jitter(alpha = 0.3, width = 0.2, height = 0.2, color = "grey40") +
  geom_smooth(method = "lm", color = "#2E86C1", fill = "#AED6F1") +
  labs(#title = "Zusammenhang zwischen Klimaangst und Pro-Umwelt-Verhalten",
       #subtitle = "r = .39, 95% CI = [.33, .44]",
       x = "Klimaangst",
       y = "Pro-Umwelt-Verhalten") +
  theme_minimal() +
  theme(plot.title = element_text(face = "bold")
        )

# H1b
lmH1b <- lm(karr_juu_mean ~ anx_gesamt, data = d)
summary(lmH1b)

Call:
lm(formula = karr_juu_mean ~ anx_gesamt, data = d)

Residuals:
     Min       1Q   Median       3Q      Max 
-2.01110 -0.63437 -0.06937  0.50639  2.89374 

Coefficients:
            Estimate Std. Error t value            Pr(>|t|)    
(Intercept)  1.27633    0.06951   18.36 <0.0000000000000002 ***
anx_gesamt   0.33043    0.02323   14.22 <0.0000000000000002 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.7975 on 1025 degrees of freedom
Multiple R-squared:  0.1648,    Adjusted R-squared:  0.164 
F-statistic: 202.3 on 1 and 1025 DF,  p-value: < 0.00000000000000022
cor.test(d$karr_juu_mean, d$anx_gesamt)

    Pearson's product-moment correlation

data:  d$karr_juu_mean and d$anx_gesamt
t = 14.224, df = 1025, p-value < 0.00000000000000022
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.3536183 0.4558586
sample estimates:
      cor 
0.4060081 
ggplot(d, aes(x = anx_gesamt, y = karr_juu_mean)) +
  geom_jitter(alpha = 0.3, width = 0.2, height = 0.2, color = "grey40") +
  geom_smooth(method = "lm", color = "#2E86C1", fill = "#AED6F1") +
  labs(#title = "Zusammenhang zwischen Klimaangst und Karriereabsichten",
       #subtitle = "r = .41, 95% CI = [.35, .46]",
       x = "Klimaangst",
       y = "Karriereabsichten") +
  theme_minimal() +
  theme(plot.title = element_text(face = "bold")
        )

# H1c 
# Soziale Normen
mod_juu_norm <- lm(karr_juu_mean ~ anx_gesamt * norm_desin_mean, data = d)
interact_plot(mod_juu_norm,
              pred = anx_gesamt,
              modx = norm_desin_mean,
              x.label = "Klimaangst",
              y.label = "Karriereabsichten",
              legend.main = "Soziale Normen"
              ) # +labs(title = "Moderation durch Soziale Normen")

# Umweltidentität
mod_juu_ident <- lm(karr_juu_mean ~ anx_gesamt * umw_ident_mean, data = d)
interact_plot(mod_juu_ident,
              pred = anx_gesamt,
              modx = umw_ident_mean,
              x.label = "Klimaangst",
              y.label = "Karriereabsichten",
              legend.main = "Umweltidentität"
              )#+  labs(title = "Moderation durch Umweltidentität")

# H2
# Soziale Normen
ggplot(d, aes(x = norm_desin_mean, y = karr_juu_mean)) +
  geom_jitter(alpha = 0.3, width = 0.2, height = 0.2, color = "grey40") +
  geom_smooth(method = "lm", color = "#2E86C1", fill = "#AED6F1") +
  labs(#title = "Soziale Normen als Prädiktor für Karriereabsichten",
       #subtitle = "f² = .16, 95% CI = [.14, Inf], b = 0.55",
       x = "Soziale Normen",
       y = "Karriereabsichten") +
  theme_minimal() +
  theme(plot.title = element_text(face = "bold")
        )

# Umweltidentität
ggplot(d, aes(x = umw_ident_mean, y = karr_juu_mean)) +
  geom_jitter(alpha = 0.3, width = 0.2, height = 0.2, color = "grey40") +
  geom_smooth(method = "lm", color = "#2E86C1", fill = "#AED6F1") +
  labs(#title = "Umweltidentität als Prädiktor für Karriereabsichten",
       #subtitle = "f² = .09, 95% CI = [.06, Inf], b = 0.24",
       x = "Umweltidentität",
       y = "Umweltbewusste Karriereabsichten") +
  theme_minimal() +
  theme(plot.title = element_text(face = "bold")
        )

APA-Korrelationsmatrix

d %>% 
  select(# criterion vars
         Karriereabsichten = karr_juu_mean,
         Umweltverhalten   = klima_verh_summ,
         # moderator vars & predictor vars
         Klimaangst        = anx_gesamt,
         Umweltidentität   = umw_ident_mean,
         "Soziale Normen"  = norm_desin_mean,
         ) %>% 
  as.matrix %>% 
  corx(triangle = "lower", 
       stars = c(.05, .01, .001),
       describe = c('mean','sd')
       ) %>%
  as.data.frame(.["apa"])
# A tibble: 5 × 6
  `1`      `2`      `3`      `4`      mean  sd   
  <chr>    <chr>    <chr>    <chr>    <chr> <chr>
1 " - "    ""       ""       ""       2.20  0.87 
2 ".37***" " - "    ""       ""       9.30  2.06 
3 ".41***" ".39***" " - "    ""       2.79  1.07 
4 ".29***" ".46***" ".31***" " - "    5.43  1.03 
5 ".40***" ".32***" ".36***" ".27***" 2.75  0.63 
tab <- d %>%
  select(
    Klimaangst        = anx_gesamt,
    Karriereabsichten = karr_juu_mean,
    Umweltverhalten   = klima_verh_summ,
    Umweltidentität   = umw_ident_mean,
    "Soziale Normen"  = norm_desin_mean
  ) %>%
  as.matrix() %>%
  corx(triangle = "lower",
       stars = c(.05, .01, .001),
       describe = c("mean","sd")) %>%
  as.data.frame(.["apa"])

kable(tab, digits = 2)
1 2 3 4 mean sd
1. Klimaangst - 2.79 1.07
2. Karriereabsichten .41*** - 2.20 0.87
3. Umweltverhalten .39*** .37*** - 9.30 2.06
4. Umweltidentität .31*** .29*** .46*** - 5.43 1.03
5. Soziale Normen .36*** .40*** .32*** .27*** 2.75 0.63
d %>%
  select(
    anx_gesamt,
    umw_ident_mean,
    norm_desin_mean,
    karr_juu_mean,
    klima_verh_summ
  ) %>%
  drop_labels() %>%              # <- extrem wichtig
  as.matrix() %>%
  corx(
    triangle = "lower",
    stars = c(.05, .01, .001),
    describe = c("mean", "sd")
  ) %>%
  as.data.frame(.["apa"]) %>%
  kable(
    digits = 2,
    align = "c",
    caption = "Korrelationsmatrix der zentralen Studienvariablen"
  )
Korrelationsmatrix der zentralen Studienvariablen
1 2 3 4 mean sd
1. anx_gesamt - 2.79 1.07
2. umw_ident_mean .31*** - 5.43 1.03
3. norm_desin_mean .36*** .27*** - 2.75 0.63
4. karr_juu_mean .41*** .29*** .40*** - 2.20 0.87
5. klima_verh_summ .39*** .46*** .32*** .37*** 9.30 2.06
# Tabelle 1 zeigt die bivariaten Korrelationen der zentralen Studienvariablen. Klimaangst korrelierte signifikant positiv mit umweltbezogenen Karriereabsichten sowie mit dem aggregierten Umweltverhaltensindex. Umweltidentität und wahrgenommene soziale Normen zeigten ebenfalls signifikante Zusammenhänge mit umweltbezogenen Karriereabsichten.

Explorative Analysen

Die folgenden Analysen sind explorativ und dienen der vertieften Einordnung der Hauptergebnisse.

Zusatzaufgabe

# Klimaverhalten (formativer Verhaltensindex, Summe aus 3 Items(jeweils 1-5)):
summary(d$klima_verh_summ)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  3.000   8.000   9.000   9.297  11.000  15.000 
d %>%
  filter(!is.na(klima_verh_summ)) %>%
  ggplot(aes(x = klima_verh_summ)) +
  geom_density(fill = "grey70", alpha = 0.6) +
  labs(
    x = "Klimaverhalten",
    y = "Dichte"
  ) +
  theme_minimal()

# Klimaverhalten+X
# Zusätzlich (im Anschluss an den eigentlichen Fragebogen) wurde ein objektiverer Indikator für umweltbezogenes Verhalten erhoben. Aufgrund der geringen Teilnahmequote wird dieser ausschließlich explorativ analysiert.

# wept_score1 gibt an, wieviele Seiten pro Person richtig beantwortet wurden (-> 04_R_Clean_up...)
d%>% count(wept_score1)
# A tibble: 20 × 2
   wept_score1     n
         <int> <int>
 1           1    49
 2           2    17
 3           3    13
 4           4     9
 5           5     5
 6           6     2
 7           7     2
 8           9     3
 9          10     5
10          11     1
11          12     1
12          17     1
13          18     1
14          19     1
15          21     1
16          22     2
17          25     1
18          26     1
19          30     1
20          NA   911
summary(d$wept_score1)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
  1.000   1.000   2.000   4.388   4.000  30.000     911 
d %>%
  filter(!is.na(wept_score1)) %>%
  ggplot(aes(x = wept_score1)) +
  geom_density(fill = "grey70", alpha = 0.6) +
  labs(
    x = "korrekt bearbeitete Seiten",
    y = "Dichte"
  ) +
  theme_minimal()

# wept_score2 gibt an, wieviele Seiten pro Person bearbeitet wurden: 
d%>% count(wept_score2)
# A tibble: 21 × 2
   wept_score2     n
         <int> <int>
 1           1    54
 2           2    34
 3           3    20
 4           4    14
 5           5    14
 6           6     3
 7           7     8
 8           9     3
 9          10     2
10          11     2
# ℹ 11 more rows
summary(d$wept_score2)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
   1.00    1.00    2.00    5.26    5.00   31.00     854 
d %>%
  filter(!is.na(wept_score2)) %>%
  ggplot(aes(x = wept_score2)) +
  geom_density(fill = "grey70", alpha = 0.6) +
  labs(
    x = "bearbeitete Seiten",
    y = "Dichte"
  ) +
  theme_minimal()

# duration.t2 gibt die Bearbeitungsdauer an
summary(d$duration.t2)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
   12.0    29.0    61.5   232.1   278.2  3515.0     647 
d %>%
  filter(!is.na(duration.t2)) %>%
  ggplot(aes(x = duration.t2)) +
  geom_density(fill = "grey70", alpha = 0.6) +
  labs(
    x = "Bearbeitungszeit",
    y = "Dichte"
  ) +
  theme_minimal()

Teilnahme an Umwelt-Task

# Teilnahme 
summary(d$duration.t2)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
   12.0    29.0    61.5   232.1   278.2  3515.0     647 
# n = 380
summary(d$wept_score1)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
  1.000   1.000   2.000   4.388   4.000  30.000     911 
# n = 116
summary(d$wept_score2)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
   1.00    1.00    2.00    5.26    5.00   31.00     854 
# n = 173
d$wept_participation <- ifelse(
  is.na(d$wept_score1) & is.na(d$wept_score2),
  "keine Teilnahme",
  "Teilnahme"
)
table(d$wept_participation)

keine Teilnahme       Teilnahme 
            854             173 
d$long_duration <- ifelse(d$duration.t2 > 30, "lang", "kurz")
table(d$long_duration)

kurz lang 
 103  277 
table(d$long_duration, d$wept_participation)
      
       keine Teilnahme Teilnahme
  kurz             103         0
  lang             104       173
# passt ->
d$wept_group <- with(d,
  ifelse(is.na(wept_score1) & is.na(wept_score2) & duration.t2 <= 30, "kurz – keine Teilnahme",
  ifelse(is.na(wept_score1) & is.na(wept_score2) & duration.t2 > 30,  "lang – keine Teilnahme",
  "lang – Teilnahme"))
)
table(d$wept_group)

kurz – keine Teilnahme lang – keine Teilnahme       lang – Teilnahme 
                   103                    104                    173 

Gruppierung der untersuchten Skalen

# Gruppierung nach wept_group bzw _participation 
d %>%
  group_by(wept_group) %>%
  summarise(
    n = n(),
    m_anx = mean(anx_gesamt, na.rm = TRUE),
    sd_anx = sd(anx_gesamt, na.rm = TRUE),
    m_ident = mean(umw_ident_mean, na.rm = TRUE),
    sd_ident = sd(umw_ident_mean, na.rm = TRUE),
    m_norm = mean(norm_desin_mean, na.rm = TRUE),
    sd_norm = sd(norm_desin_mean, na.rm = TRUE),
    m_verh = mean(klima_verh_summ, na.rm = TRUE),
    sd_verh = sd(klima_verh_summ, na.rm = TRUE)
  )
# A tibble: 4 × 10
  wept_group       n m_anx sd_anx m_ident sd_ident m_norm sd_norm m_verh sd_verh
  <chr>        <int> <dbl>  <dbl>   <dbl>    <dbl>  <dbl>   <dbl>  <dbl>   <dbl>
1 kurz – kein…   103  2.84   1.09    5.08    1.09    2.62   0.583   8.69    2.10
2 lang – Teil…   173  3.07   1.11    5.57    0.925   2.79   0.644   9.72    2.18
3 lang – kein…   104  2.60   1.19    5.35    1.02    2.67   0.571   8.88    1.92
4 <NA>           647  2.74   1.03    5.46    1.04    2.78   0.643   9.35    2.01
d %>%
  group_by(wept_participation) %>%
  summarise(
    n = n(),
    m_anx = mean(anx_gesamt, na.rm = TRUE),
    sd_anx = sd(anx_gesamt, na.rm = TRUE),
    m_ident = mean(umw_ident_mean, na.rm = TRUE),
    sd_ident = sd(umw_ident_mean, na.rm = TRUE),
    m_norm = mean(norm_desin_mean, na.rm = TRUE),
    sd_norm = sd(norm_desin_mean, na.rm = TRUE),
    m_verh = mean(klima_verh_summ, na.rm = TRUE),
    sd_verh = sd(klima_verh_summ, na.rm = TRUE),
    m_diss = mean(kogn_disso_mean, na.rm = TRUE),
    sd_diss = sd(kogn_disso_mean, na.rm = TRUE)
  )
# A tibble: 2 × 12
  wept_participation     n m_anx sd_anx m_ident sd_ident m_norm sd_norm m_verh
  <chr>              <int> <dbl>  <dbl>   <dbl>    <dbl>  <dbl>   <dbl>  <dbl>
1 Teilnahme            173  3.07   1.11    5.57    0.925   2.79   0.644   9.72
2 keine Teilnahme      854  2.74   1.06    5.40    1.05    2.75   0.630   9.21
# ℹ 3 more variables: sd_verh <dbl>, m_diss <dbl>, sd_diss <dbl>

Gruppierung demographischer Daten

d %>% 
  select(wept_participation,
         alter_jahre,
         kinder_anza,
         bildungssta,
         arbeit_umfa,
         arbeit_art1,
         ethnie_kult,
         geschlecht1) %>% 
  group_by(wept_participation) %>% 
  desc_table("n"      = length,
             "%"      = percent,
             "m"   = mean,
             "sd"     = sd) %>%
  desc_tests() %>% 
  desc_output(target = "DT")

auf den ersten Blick unterscheiden sich die Gruppen nicht sehr (weder Skalen noch demographisch)

Gruppenvergleiche (t-tests)

t.test(anx_gesamt ~ wept_participation, data = d)

    Welch Two Sample t-test

data:  anx_gesamt by wept_participation
t = -3.6008, df = 238.62, p-value = 0.0003858
alternative hypothesis: true difference in means between group keine Teilnahme and group Teilnahme is not equal to 0
95 percent confidence interval:
 -0.5128013 -0.1501244
sample estimates:
mean in group keine Teilnahme       mean in group Teilnahme 
                     2.737998                      3.069461 
t.test(umw_ident_mean ~ wept_participation, data = d)

    Welch Two Sample t-test

data:  umw_ident_mean by wept_participation
t = -2.1971, df = 269.6, p-value = 0.02886
alternative hypothesis: true difference in means between group keine Teilnahme and group Teilnahme is not equal to 0
95 percent confidence interval:
 -0.32901677 -0.01803079
sample estimates:
mean in group keine Teilnahme       mean in group Teilnahme 
                     5.400176                      5.573699 
t.test(norm_desin_mean ~ wept_participation, data = d)

    Welch Two Sample t-test

data:  norm_desin_mean by wept_participation
t = -0.82288, df = 243.17, p-value = 0.4114
alternative hypothesis: true difference in means between group keine Teilnahme and group Teilnahme is not equal to 0
95 percent confidence interval:
 -0.1494023  0.0613569
sample estimates:
mean in group keine Teilnahme       mean in group Teilnahme 
                     2.747307                      2.791329 
t.test(klima_verh_summ ~ wept_participation, data = d)

    Welch Two Sample t-test

data:  klima_verh_summ by wept_participation
t = -2.8086, df = 235.46, p-value = 0.005393
alternative hypothesis: true difference in means between group keine Teilnahme and group Teilnahme is not equal to 0
95 percent confidence interval:
 -0.8589207 -0.1507177
sample estimates:
mean in group keine Teilnahme       mean in group Teilnahme 
                     9.211944                      9.716763 
t.test(kogn_disso_mean ~ wept_participation, data = d)

    Welch Two Sample t-test

data:  kogn_disso_mean by wept_participation
t = -1.1228, df = 231.74, p-value = 0.2627
alternative hypothesis: true difference in means between group keine Teilnahme and group Teilnahme is not equal to 0
95 percent confidence interval:
 -0.27642065  0.07573071
sample estimates:
mean in group keine Teilnahme       mean in group Teilnahme 
                     2.306206                      2.406551 
t.test(karr_juu_mean ~ wept_participation, data = d)

    Welch Two Sample t-test

data:  karr_juu_mean by wept_participation
t = 0.27469, df = 240.02, p-value = 0.7838
alternative hypothesis: true difference in means between group keine Teilnahme and group Teilnahme is not equal to 0
95 percent confidence interval:
 -0.1270220  0.1681876
sample estimates:
mean in group keine Teilnahme       mean in group Teilnahme 
                     2.202973                      2.182391 
# und sie unterscheiden sich doch (teilweise)

Boxplots zu wept

ggplot(d, aes(x = wept_participation, y = anx_gesamt)) +
  geom_boxplot(alpha = 0.6, fill = "grey80") +
  geom_jitter(width = 0.15, alpha = 0.2) +
  labs(
    x = "Teilnahme an Zahlenaufgabe",
    y = "Klimaangst (gesamt)"
  ) +
  theme_minimal()

ggplot(d, aes(x = wept_participation, y = umw_ident_mean)) +
  geom_boxplot(alpha = 0.6, fill = "grey80") +
  geom_jitter(width = 0.15, alpha = 0.2) +
  labs(
    x = "Teilnahme an Zahlenaufgabe",
    y = "Umweltidentität"
  ) +
  theme_minimal()

ggplot(d, aes(x = wept_participation, y = norm_desin_mean)) +
  geom_boxplot(alpha = 0.6, fill = "grey80") +
  geom_jitter(width = 0.15, alpha = 0.2) +
  labs(
    x = "Teilnahme an Zahlenaufgabe",
    y = "Soziale Normen"
  ) +
  theme_minimal()

ggplot(d, aes(x = wept_participation, y = klima_verh_summ)) +
  geom_boxplot(alpha = 0.6, fill = "grey80") +
  geom_jitter(width = 0.15, alpha = 0.2) +
  labs(
    x = "Teilnahme an Zahlenaufgabe",
    y = "Umweltverhalten"
  ) +
  theme_minimal()

ggplot(d, aes(x = wept_participation, y = kogn_disso_mean)) +
  geom_boxplot(alpha = 0.6, fill = "grey80") +
  geom_jitter(width = 0.15, alpha = 0.2) +
  labs(
    x = "Teilnahme an Zahlenaufgabe",
    y = "Kognitive Dissonanz"
  ) +
  theme_minimal()

Zusammenhänge (explorativ)

Erhebungszeitraum

d$zeitraum <- ifelse(as.Date(d$datetime_d) < as.Date("2025-11-23"),
                     "Mai 2025",
                     "November 2025")

d %>%
  group_by(zeitraum) %>%
  summarise(r = cor(anx_gesamt, karr_juu_mean, use = "pairwise.complete.obs"),
            n = n())
# A tibble: 2 × 3
  zeitraum          r     n
  <chr>         <dbl> <int>
1 Mai 2025      0.387   513
2 November 2025 0.426   514
# Der Zusammenhang zwischen Klimaangst und Karriereabsichten zeigte sich in beiden Erhebungszeiträumen in vergleichbarer Größenordnung (Mai 2025: r = .39; November 2025: r = .43).

Klimaverhalten

lmexp_norm <- lm(klima_verh_summ ~ norm_desin_mean, data = d)
summary(lmexp_norm)

Call:
lm(formula = klima_verh_summ ~ norm_desin_mean, data = d)

Residuals:
    Min      1Q  Median      3Q     Max 
-5.9761 -1.2923  0.0239  1.2868  6.3392 

Coefficients:
                Estimate Std. Error t value            Pr(>|t|)    
(Intercept)      6.39798    0.27177   23.54 <0.0000000000000002 ***
norm_desin_mean  1.05237    0.09616   10.94 <0.0000000000000002 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.946 on 1025 degrees of freedom
Multiple R-squared:  0.1046,    Adjusted R-squared:  0.1037 
F-statistic: 119.8 on 1 and 1025 DF,  p-value: < 0.00000000000000022
lmexp_ident <- lm(klima_verh_summ ~ umw_ident_mean, data = d)
summary(lmexp_ident)

Call:
lm(formula = klima_verh_summ ~ umw_ident_mean, data = d)

Residuals:
    Min      1Q  Median      3Q     Max 
-5.8198 -1.2164  0.1802  1.2640  5.1802 

Coefficients:
               Estimate Std. Error t value            Pr(>|t|)    
(Intercept)     4.32234    0.30571   14.14 <0.0000000000000002 ***
umw_ident_mean  0.91624    0.05532   16.56 <0.0000000000000002 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.827 on 1025 degrees of freedom
Multiple R-squared:  0.2111,    Adjusted R-squared:  0.2104 
F-statistic: 274.3 on 1 and 1025 DF,  p-value: < 0.00000000000000022
lmexp_time <- lm(duration.t2 ~ klima_verh_summ, data = d)
summary(lmexp_time)

Call:
lm(formula = duration.t2 ~ klima_verh_summ, data = d)

Residuals:
    Min      1Q  Median      3Q     Max 
-390.91 -194.55  -99.38   34.89 3154.18 

Coefficients:
                Estimate Std. Error t value  Pr(>|t|)    
(Intercept)     -192.354     92.524  -2.079    0.0383 *  
klima_verh_summ   46.098      9.789   4.709 0.0000035 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 407.2 on 378 degrees of freedom
  (647 Beobachtungen als fehlend gelöscht)
Multiple R-squared:  0.05542,   Adjusted R-squared:  0.05292 
F-statistic: 22.18 on 1 and 378 DF,  p-value: 0.000003498
plot(d$duration.t2, d$klima_verh_summ)

cor(d[, c("klima_verh1", "klima_verh2", "klima_verh3")],
    d$anx_gesamt,
    use = "pairwise.complete.obs")
                  [,1]
klima_verh1 0.27290866
klima_verh2 0.04957531
klima_verh3 0.45304697

Subskalen

# H1a einzeln hatte mit cor.test(d$anx_gesamt, d$klima_verh_summ) ergeben:
# r = .39 ist ein mittlerer Zusammenhang, der sich auch ähnlich zeigen sollte, wenn mittels Regressionsanalyse die Subskalen anx_v_aff_mean,...,anx_v_phy_mean mit klima_verh in Beziehung gesetzt werden:
d %>%
  select(
    klima_verh_summ,
    klima_verh1,
    klima_verh2,
    klima_verh3,
    anx_gesamt,
    anx_v_aff_mean,
    anx_v_cog_mean,
    anx_v_beh_mean,
    anx_v_phy_mean
  ) %>%
  cor_apa()
# A tibble: 9 × 10
  `1`      `2`      `3`      `4`      `5`      `6`      `7`    `8`   mean  sd   
  <chr>    <chr>    <chr>    <chr>    <chr>    <chr>    <chr>  <chr> <chr> <chr>
1 " - "    ""       ""       ""       ""       ""       ""     ""    9.30  2.06 
2 ".72***" " - "    ""       ""       ""       ""       ""     ""    3.58  0.91 
3 ".63***" ".23***" " - "    ""       ""       ""       ""     ""    3.42  1.02 
4 ".69***" ".31***" ".05"    " - "    ""       ""       ""     ""    2.31  1.09 
5 ".39***" ".27***" ".05"    ".45***" " - "    ""       ""     ""    2.79  1.07 
6 ".34***" ".27***" ".01"    ".40***" ".88***" " - "    ""     ""    3.91  1.50 
7 ".33***" ".22***" ".04"    ".40***" ".89***" ".75***" " - "  ""    2.82  1.26 
8 ".43***" ".34***" ".11***" ".42***" ".88***" ".74***" ".72*… " - " 2.92  1.12 
9 ".30***" ".20***" ".01"    ".38***" ".89***" ".72***" ".71*… ".72… 2.49  1.32 
# Da es sich bei klima_verh_summ um einen formativen Verhaltensindex handelt, sind Kriterien reflektiver Skalen wie interne Konsistenz (α = .41) oder Eindimensionalität hier nicht maßgeblich. Die inhaltliche Heterogenität der Items ist dabei konzeptionell intendiert, Die Zusammenhänge der Subskalen wurden ergänzend berechnet.

Karriereplanung

# weitere Faktoren von Karriereplanung
# karr_juu_mean gibt an, welche Absichten jemand bezüglich umwelt/klimabezogener Berufsentscheidungen äußert (8 Items, based on Peltier et al., 2014), karr_entsc gibt die Relevanz des Klimawandels bei berufsbezogenen Entscheidungen an (4 Items, based on Daeninck C, Kioupi V and Vercammen A, 2023) und karr_umwelt gibt an, welchen Rang "Umwelt" in der Reihenfolge erhält (14 Auswahlfaktoren, based on Akosah-Twumasi P, Emeto TI, Lindsay D, Tsey K and Malau-Aduli BS, 2018) 
cor(d$anx_gesamt, d$karr_umwelt,
    use = "pairwise.complete.obs"
    )
[1] 0.3810376
lm_exp_rang <- lm(karr_umwelt ~ anx_gesamt, data = d)
summary(lm_exp_rang)

Call:
lm(formula = karr_umwelt ~ anx_gesamt, data = d)

Residuals:
    Min      1Q  Median      3Q     Max 
-7.2977 -2.3468 -0.4696  1.7691 10.7121 

Coefficients:
            Estimate Std. Error t value             Pr(>|t|)    
(Intercept)  2.10908    0.27610   7.639   0.0000000000000528 ***
anx_gesamt   1.17879    0.09212  12.796 < 0.0000000000000002 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.066 on 964 degrees of freedom
  (61 Beobachtungen als fehlend gelöscht)
Multiple R-squared:  0.1452,    Adjusted R-squared:  0.1443 
F-statistic: 163.7 on 1 and 964 DF,  p-value: < 0.00000000000000022
ggplot(d, aes(x =  karr_juu_mean, y = karr_umwelt)) +
  geom_jitter(alpha = 0.3, width = 0.2, height = 0.2, color = "grey40") +
  geom_smooth(method = "lm", color = "#2E86C1", fill = "#AED6F1") +
  labs(title = "Klimaangst und Rang von Umwelt bei Karriereplanung",
       x = "Klimaangst",
       y = "Rang von Umwelt bei Karriereplanung") +
  theme_minimal() +
  theme(plot.title = element_text(face = "bold")
        )

cor(d$anx_gesamt, d$karr_entsc_mean,
    use = "pairwise.complete.obs"
    )
[1] 0.4824897
lm_exp_entsc <- lm(karr_entsc_mean ~ anx_gesamt, data = d)
summary(lm_exp_entsc)

Call:
lm(formula = karr_entsc_mean ~ anx_gesamt, data = d)

Residuals:
    Min      1Q  Median      3Q     Max 
-2.2948 -0.5820 -0.1147  0.5172  3.2345 

Coefficients:
            Estimate Std. Error t value            Pr(>|t|)    
(Intercept)  0.88242    0.07309   12.07 <0.0000000000000002 ***
anx_gesamt   0.43077    0.02443   17.64 <0.0000000000000002 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.8386 on 1025 degrees of freedom
Multiple R-squared:  0.2328,    Adjusted R-squared:  0.232 
F-statistic:   311 on 1 and 1025 DF,  p-value: < 0.00000000000000022
ggplot(d, aes(x =  anx_gesamt, y = karr_entsc_mean)) +
  geom_jitter(alpha = 0.3, width = 0.2, height = 0.2, color = "grey40") +
  geom_smooth(method = "lm", color = "#2E86C1", fill = "#AED6F1") +
  labs(title = "Klimaangst und Karriereentscheidungen",
       x = "Klimaangst",
       y = "Rang von Umwelt bei Karriereplanung") +
  theme_minimal() +
  theme(plot.title = element_text(face = "bold")
        )

APA-Korrelationsmatrix

d %>%
  select(
    anx_gesamt,
    karr_juu_mean,
    karr_entsc_mean,
    karr_umwelt
    ) %>%
  drop_labels() %>%              # <- extrem wichtig
  as.matrix() %>%
  corx(
    triangle = "lower",
    stars = c(.05, .01, .001),
    describe = c("mean", "sd")
  ) %>%
  as.data.frame(.["apa"]) %>%
  kable(
    digits = 2,
    align = "c",
    caption = "Korrelationsmatrix der 3 Faktoren von Karriereplanung mit Klimaangst"
  )
Korrelationsmatrix der 3 Faktoren von Karriereplanung mit Klimaangst
1 2 3 mean sd
1. anx_gesamt - 2.79 1.07
2. karr_juu_mean .41*** - 2.20 0.87
3. karr_entsc_mean .48*** .62*** - 2.09 0.96
4. karr_umwelt .38*** .53*** .53*** 5.41 3.31
# Tabelle 2 zeigt die bivariaten Korrelationen der 3 Faktoren von Karriereplanung mit Klimaangst