# RESPONDENTS’ PREFERRED SURVEY TOPICS: MEASUREMENT AND PREVALENCE

### Replication Files: Study 2

#### Tobias Gummer, Saskia Bartholomäus, and Bernd Weiss

#### 19.01.2026

# Introduction

Gummer, Tobias, Bartholomäus, Saskia, and Weiss, Bernd (2026): “Respondents’ Preferred Survey Topics: Measurement and Prevalence.” Survey Research Methods.

Respondents’ interest in a survey’s topic is used frequently by survey researchers to explain and predict survey errors. Whether respondents are interested in a survey’s content relates to their participation and cognitive answering processes, which consequently impacts nonresponse and measurement errors. Since the content of a survey is under the control of the researchers who design and conduct it, the content could be varied to improve participation and answering behavior. Unfortunately, research is lacking as to (i) how to measure these preferences, (ii) whether groups of respondents differ in their topic preferences, and (iii) the topic preferences in the social science survey samples. We have addressed this research gap by presenting the findings of three experimental studies that we conducted. In our study, we validated a measurement instrument to assess respondents’ topic interests. Moreover, we found that topic preferences varied between samples and respondent subgroups. However, across samples we consistently found that respondents were more interested in answering questions on personal rather than political topics. Based on our empirical findings, we provide practical recommendations for survey research and outline future research opportunities.

The ReplicationFileStudy2.html contains all analyses of study 2 reported in the cited article. The published R.Rmd files allow users to replicate the results. To access the data set required for replication, a data use agreement is necessary. To reproduce the analyses, please follow these steps:

1. Place all R.Rmd files in a subfolder named scripts and the data set in a subfolder named data.
2. Required R packages are listed and loaded in 01am_pop.Rmd. Please review this file to ensure that all necessary packages are installed before proceeding. Note that running 01am_pop.Rmd will automatically create all required subfolders for the workflow.
3. For the file 02dp_pop.Rmd, include the path to required data set in the first code chunk.
4. After making any necessary adjustments, you only need to run 05re_pop.Rmd. This file will source all other scripts and reproduce the analyses and results as described in the project.

GESIS – Leibniz Institute for the Social Sciences (2024). GESIS Panel - Standard Edition (ZA5665; Version 54.0.0) [Data set]. https://doi.org/10.4232/1.14386

    # Random Number Generation
    set.seed(42)

# Data Preparation

The data required for the replication code can be accessed under a data use agreement.

GESIS – Leibniz Institute for the Social Sciences (2024). GESIS Panel - Standard Edition (ZA5665; Version 54.0.0) [Data set]. https://doi.org/10.4232/1.14386

    # Loading Dataset
    cat("gesispanel_dta <- read_dta('[INCLUDE PATH TO THE PRETEST DATA SET HERE]/ZA5665_GESIS_Panel_v54-0-0.dta')")

    ## gesispanel_dta <- read_dta('[INCLUDE PATH TO THE PRETEST DATA SET HERE]/ZA5665_GESIS_Panel_v54-0-0.dta')

    cat("gesispanel_dta   <- remove_all_labels(gesispanel_dta)")

    ## gesispanel_dta   <- remove_all_labels(gesispanel_dta)

    # Renaming Variables
    gesispanel_dta <- dplyr::rename(gesispanel_dta,
      tp_well = kaea069a,
      tp_pol = kaea070a,
      tp_nature = kaea071a,
      tp_personal = kaea072a,
      tp_media = kaea073a,
      tp_work = kaea074a,
      tp_migration = kaea075a,
      tp_economy = kaea076a,
      tp_leisure = kaea077a,
      tp_crisis = kaea078a,

      i_polinterest = kazc030a,
      i_trust = kazc056a,

      i_gender = jdzh023b,
      year = jdzh024c,
      i_education = jdzh030a,
      east_a12 = a12d021b,
      east_d12 = d12d025b,
      east_f12 = f12d021b,
      east_i12 = i12c049b)

    # Variable Labels
    labels <- list(
      i_gender         = "Gender",
      i_age            = "Age in Years",
      i_education      = "Educaional Level",
      i_east           = "Eastern Germany",

      i_polinterest    = "Political Interest",
      i_trust          = "General Trust",

      tp_pol           = "Topic Interest Politics",
      tp_well          = "Topic Interest Well-Being",
      tp_nature        = "Topic Interest Nature",
      tp_media         = "Topic Interest Media",
      tp_work          = "Topic Interest Work",
      tp_migration     = "Topic Interest Migration",
      tp_economy       = "Topic Interest Economy",
      tp_crisis        = "Topic Interest Crisis",
      tp_personal      = "Topic Interest Personality",
      tp_leisure       = "Topic Interest Leisure")

    # Value Labels
    gesispanel_dta <- set_labels(gesispanel_dta, i_gender, labels = c("male" = 1, "female" = 2))
    gesispanel_dta <- set_labels(gesispanel_dta, i_education, labels = c("low" = 1, "medium" = 2, "high" = 3))
    gesispanel_dta <- set_labels(gesispanel_dta, i_east, labels = c("west" = 1, "east" = 2))
    gesispanel_dta <- set_labels(gesispanel_dta, i_trust, labels = c("not at all" = 1, "very strong" = 7))
    gesispanel_dta <- set_labels(gesispanel_dta, i_polinterest, labels = c("not at all" = 1, "very strong" = 5))
    gesispanel_dta <- set_labels(gesispanel_dta, tp_pol, tp_well, tp_nature, tp_personal, tp_media, tp_work, tp_migration, tp_economy, tp_crisis, tp_leisure,
      labels = c("very interested" = 7, "not interestes at all" = 1))

    # Creating Subsets
    subset <- select(gesispanel_dta, z000001a, tp_well:tp_crisis, i_polinterest, i_trust, i_gender, year, i_education, east_a12, east_d12, east_f12, east_i12)

    # Defining Missing Values
    subset[subset == -11 | subset == -22 | subset == -33 | subset == -55 | subset == -77 | subset == -88 | subset == -99 | subset == -111 | subset == 97 | subset == 98] <- NA
    save(subset, labels, file = "data/subset.RData")

    # Merging Variables of Groups
    subset <- mutate(subset, i_east = ifelse(!is.na(subset$east_a12), east_a12, east_d12))
    subset <- mutate(subset, i_east = ifelse(!is.na(subset$i_east),  i_east, east_f12))
    subset <- mutate(subset, i_east = ifelse(!is.na(subset$i_east), i_east, east_i12))

    # Recoding Age in Years
    subset <- mutate(subset, i_age = 2023-year)

    subset <- mutate(subset, age_group = case_when(i_age <= 48 ~ 1, i_age > 48 & i_age <= 63 ~ 2, i_age > 63 ~ 3))
    subset <- set_labels(subset, age_group, labels = c("<= 48" = 1, "49 - 63" = 2, "> 63" = 3))

    # Categorizing Education
    subset <- mutate(subset, i_education = case_match(i_education,  1 ~ 2, 2 ~ 1, 3 ~ 1, 4 ~ 1, 5 ~ 2, 6 ~ 1, 7 ~ 2, 8 ~ 3, 9 ~ 3))

    # Recoding Political Interest
    subset <- mutate(subset, i_polinterest = case_match(i_polinterest, 1 ~ 5, 2 ~ 4, 3 ~ 3, 4 ~ 2, 5 ~ 1))

    # Defining Factor Variables
    subset$i_gender <- as_factor(subset$i_gender)
    subset$i_education <- as_factor(subset$i_education)
    subset$i_east <- as_factor(subset$i_east)
    subset$age_group <- as_factor(subset$age_group)

    # Save Datasets
    save(subset, labels, file = "data/subset.RData")
    rm(list = setdiff(ls(), c("custom_theme")))

## Descriptive Results

Political Engagement

    sumtable(subset, vars=c("i_polinterest"), add.median = TRUE, digits = 3, out = "kable") %>%
      kableExtra::kable_styling(bootstrap_options = "basic")

Summary Statistics
Variable | N | Mean | Std. Dev. | Min | Pctl. 25 | Pctl. 50 | Pctl. 75 | Max
--- | --- | --- | --- | --- | --- | --- | --- | ---
i_polinterest | 4560 | 3.21 | 0.993 | 1 | 3 | 3 | 4 | 5

    #rm(subset, labels)

    sumtable(subset, vars=c("i_trust"), add.median = TRUE, digits = 3, out = "kable") %>%
      kableExtra::kable_styling(bootstrap_options = "basic")

Summary Statistics
Variable | N | Mean | Std. Dev. | Min | Pctl. 25 | Pctl. 50 | Pctl. 75 | Max
--- | --- | --- | --- | --- | --- | --- | --- | ---
i_trust | 4546 | 3.76 | 1.7 | 1 | 2 | 4 | 5 | 7

    #rm(subset, labels)

Age Groups

    sumtable(subset, vars = "i_age", label = "Age in Years",
      add.median = TRUE, digits = 3, out = "kable") %>%
      kableExtra::kable_styling(bootstrap_options = "basic")

Summary Statistics
Variable | N | Mean | Std. Dev. | Min | Pctl. 25 | Pctl. 50 | Pctl. 75 | Max
--- | --- | --- | --- | --- | --- | --- | --- | ---
Age in Years | 4610 | 58 | 14.3 | 28 | 48 | 59 | 69 | 80

    sumtable(subset, vars = "age_group", label = "Age Group", out = "kable") %>%
      kableExtra::kable_styling(bootstrap_options = "basic")

Summary Statistics
Variable | N | Percent
--- | --- | ---
Age Group | 4610 |
… 1 | 1181 | 26%
… 2 | 1621 | 35%
… 3 | 1808 | 39%

Gender

    sumtable(subset, vars = "i_gender", label = "Gender", out = "kable") %>%
      kableExtra::kable_styling(bootstrap_options = "basic")

Summary Statistics
Variable | N | Percent
--- | --- | ---
Gender | 4648 |
… 1 | 2328 | 50%
… 2 | 2320 | 50%

Education

    sumtable(subset, vars = "i_education", label = "Education", out = "kable") %>%
      kableExtra::kable_styling(bootstrap_options = "basic")

Summary Statistics
Variable | N | Percent
--- | --- | ---
Education | 4613 |
… 1 | 733 | 16%
… 2 | 1522 | 33%
… 3 | 2358 | 51%

Eastern Germany

    sumtable(subset, vars = "i_east", label = "Residence in Germany", out = "kable") %>%
      kableExtra::kable_styling(bootstrap_options = "basic")

Summary Statistics
Variable | N | Percent
--- | --- | ---
Residence in Germany | 9025 |
… 1 | 6712 | 74%
… 2 | 2313 | 26%

# Research Question 4. Analyses

## Measurement Properties

Topic Popularity

    subset_tp <- select(subset, tp_nature, tp_crisis, tp_personal, tp_economy, tp_leisure, tp_well, tp_migration, tp_work, tp_pol, tp_media )
    subset_tp <- subset_tp[complete.cases(subset_tp), ]

    sumtable(subset_tp, vars=c("tp_nature", "tp_crisis", "tp_personal", "tp_economy", "tp_leisure", "tp_well", "tp_migration", "tp_work", "tp_pol", "tp_media"),
      labels = c("Nature", "Crisis", "Personality", "Economy", "Leisure", "Well-Being", "Migration", "Work", "Politics", "Media"), out = "kable", add.median = TRUE, digits = 3) %>%
      kableExtra::kable_styling(bootstrap_options = "basic")

Summary Statistics
Variable | N | Mean | Std. Dev. | Min | Pctl. 25 | Pctl. 50 | Pctl. 75 | Max
--- | --- | --- | --- | --- | --- | --- | --- | ---
Nature | 4336 | 5.43 | 1.34 | 1 | 5 | 6 | 6 | 7
Crisis | 4336 | 5.32 | 1.42 | 1 | 5 | 6 | 6 | 7
Personality | 4336 | 5.26 | 1.36 | 1 | 4 | 5 | 6 | 7
Economy | 4336 | 5.08 | 1.36 | 1 | 4 | 5 | 6 | 7
Leisure | 4336 | 4.96 | 1.34 | 1 | 4 | 5 | 6 | 7
Well-Being | 4336 | 4.85 | 1.51 | 1 | 4 | 5 | 6 | 7
Migration | 4336 | 4.83 | 1.58 | 1 | 4 | 5 | 6 | 7
Work | 4336 | 4.7 | 1.62 | 1 | 4 | 5 | 6 | 7
Politics | 4336 | 4.52 | 1.61 | 1 | 4 | 5 | 6 | 7
Media | 4336 | 4.42 | 1.51 | 1 | 4 | 4 | 5 | 7

Test of Comparisons

    topics <- c("tp_nature", "tp_crisis", "tp_personal", "tp_economy", "tp_leisure", "tp_well", "tp_migration", "tp_work", "tp_pol", "tp_media")
    tt_results <- list()

    for (i in 1:(length(topics) - 1)) {
        for (j in (i + 1):length(topics)) {
          var1 <- topics[i]
          var2 <- topics[j]

         tab <- map_df(list(t.test(subset_tp[[var1]], subset_tp[[var2]], paired = TRUE, alternative = "two.sided")), tidy)

         tt_results[[paste(var1, "_vs_", var2, sep = "")]] <- tab
        }
    }

    ttresults_df <- do.call(rbind, tt_results)
      ttresults_df$Comparison <- gsub("_vs_", " vs. ", rownames(ttresults_df))
      ttresults_df <- ttresults_df[c("Comparison", "estimate", "statistic", "p.value", "conf.low", "conf.high", "method")]

    ttresults_df[c("Comparison", "estimate", "statistic", "p.value", "conf.low", "conf.high", "method")] %>%
      kbl(align = "llllll", col.names = c("Comparison", "Difference in Means", "t", "p.value", "conf.low", "conf.high", "Method"),
          digits = 3, caption = "Difference of Topic Popularity") %>%
      kable_styling() %>%
      kableExtra::scroll_box(width = "100%", height = "300px")

Difference of Topic Popularity
Comparison | Difference in Means | t | p.value | conf.low | conf.high | Method
--- | --- | --- | --- | --- | --- | ---
tp_nature vs. tp_crisis | 0.116 | 5.004 | 0.000 | 0.070 | 0.161 | Paired t-test
tp_nature vs. tp_personal | 0.175 | 8.662 | 0.000 | 0.135 | 0.215 | Paired t-test
tp_nature vs. tp_economy | 0.347 | 15.148 | 0.000 | 0.302 | 0.391 | Paired t-test
tp_nature vs. tp_leisure | 0.466 | 19.930 | 0.000 | 0.420 | 0.512 | Paired t-test
tp_nature vs. tp_well | 0.577 | 23.916 | 0.000 | 0.529 | 0.624 | Paired t-test
tp_nature vs. tp_migration | 0.606 | 23.785 | 0.000 | 0.556 | 0.656 | Paired t-test
tp_nature vs. tp_work | 0.736 | 26.507 | 0.000 | 0.682 | 0.790 | Paired t-test
tp_nature vs. tp_pol | 0.916 | 36.587 | 0.000 | 0.867 | 0.965 | Paired t-test
tp_nature vs. tp_media | 1.015 | 41.222 | 0.000 | 0.967 | 1.064 | Paired t-test
tp_crisis vs. tp_personal | 0.059 | 2.434 | 0.015 | 0.012 | 0.107 | Paired t-test
tp_crisis vs. tp_economy | 0.231 | 12.313 | 0.000 | 0.194 | 0.268 | Paired t-test
tp_crisis vs. tp_leisure | 0.351 | 13.514 | 0.000 | 0.300 | 0.401 | Paired t-test
tp_crisis vs. tp_well | 0.461 | 16.573 | 0.000 | 0.406 | 0.515 | Paired t-test
tp_crisis vs. tp_migration | 0.490 | 24.884 | 0.000 | 0.452 | 0.529 | Paired t-test
tp_crisis vs. tp_work | 0.620 | 21.485 | 0.000 | 0.564 | 0.677 | Paired t-test
tp_crisis vs. tp_pol | 0.800 | 35.140 | 0.000 | 0.756 | 0.845 | Paired t-test
tp_crisis vs. tp_media | 0.899 | 34.870 | 0.000 | 0.849 | 0.950 | Paired t-test
tp_personal vs. tp_economy | 0.172 | 7.282 | 0.000 | 0.125 | 0.218 | Paired t-test
tp_personal vs. tp_leisure | 0.291 | 13.369 | 0.000 | 0.249 | 0.334 | Paired t-test
tp_personal vs. tp_well | 0.402 | 19.708 | 0.000 | 0.362 | 0.441 | Paired t-test
tp_personal vs. tp_migration | 0.431 | 16.090 | 0.000 | 0.379 | 0.484 | Paired t-test
tp_personal vs. tp_work | 0.561 | 22.145 | 0.000 | 0.511 | 0.611 | Paired t-test
tp_personal vs. tp_pol | 0.741 | 27.707 | 0.000 | 0.689 | 0.793 | Paired t-test
tp_personal vs. tp_media | 0.840 | 36.788 | 0.000 | 0.795 | 0.885 | Paired t-test
tp_economy vs. tp_leisure | 0.120 | 4.817 | 0.000 | 0.071 | 0.168 | Paired t-test
tp_economy vs. tp_well | 0.230 | 8.428 | 0.000 | 0.176 | 0.283 | Paired t-test
tp_economy vs. tp_migration | 0.259 | 13.237 | 0.000 | 0.221 | 0.298 | Paired t-test
tp_economy vs. tp_work | 0.389 | 14.415 | 0.000 | 0.336 | 0.442 | Paired t-test
tp_economy vs. tp_pol | 0.569 | 26.899 | 0.000 | 0.528 | 0.611 | Paired t-test
tp_economy vs. tp_media | 0.669 | 26.085 | 0.000 | 0.618 | 0.719 | Paired t-test
tp_leisure vs. tp_well | 0.110 | 4.876 | 0.000 | 0.066 | 0.155 | Paired t-test
tp_leisure vs. tp_migration | 0.140 | 4.869 | 0.000 | 0.083 | 0.196 | Paired t-test
tp_leisure vs. tp_work | 0.270 | 10.311 | 0.000 | 0.218 | 0.321 | Paired t-test
tp_leisure vs. tp_pol | 0.450 | 14.831 | 0.000 | 0.390 | 0.509 | Paired t-test
tp_leisure vs. tp_media | 0.549 | 22.228 | 0.000 | 0.500 | 0.597 | Paired t-test
tp_well vs. tp_migration | 0.030 | 0.996 | 0.319 | -0.029 | 0.088 | Paired t-test
tp_well vs. tp_work | 0.159 | 5.872 | 0.000 | 0.106 | 0.213 | Paired t-test
tp_well vs. tp_pol | 0.339 | 11.790 | 0.000 | 0.283 | 0.396 | Paired t-test
tp_well vs. tp_media | 0.439 | 17.036 | 0.000 | 0.388 | 0.489 | Paired t-test
tp_migration vs. tp_work | 0.130 | 4.297 | 0.000 | 0.071 | 0.189 | Paired t-test
tp_migration vs. tp_pol | 0.310 | 12.896 | 0.000 | 0.263 | 0.357 | Paired t-test
tp_migration vs. tp_media | 0.409 | 14.835 | 0.000 | 0.355 | 0.463 | Paired t-test
tp_work vs. tp_pol | 0.180 | 5.833 | 0.000 | 0.120 | 0.241 | Paired t-test
tp_work vs. tp_media | 0.279 | 10.268 | 0.000 | 0.226 | 0.333 | Paired t-test
tp_pol vs. tp_media | 0.099 | 3.534 | 0.000 | 0.044 | 0.154 | Paired t-test

    chi_results <- list()
    sim_results <- list()

    for (i in 1:(length(topics) - 1)) {
        for (j in (i + 1):length(topics)) {
          var1 <- topics[i]
          var2 <- topics[j]

        tab <- map_df(list(chisq.test(subset_tp[[var1]], subset_tp[[var2]])), tidy)

         tab2 <- map_df(list(chisq.test(subset_tp[[var1]], subset_tp[[var2]], simulate.p.value = TRUE)), tidy)

         chi_results[[paste(var1, "_vs_", var2, sep = "")]] <- tab
         sim_results[[paste(var1, "_vs_", var2, sep = "")]] <- tab2
        }
    }

    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein
    ## Warning in chisq.test(subset_tp[[var1]], subset_tp[[var2]]): Chi-Quadrat-Approximation kann inkorrekt sein

    chiresults_df <- do.call(rbind, chi_results)
      chiresults_df$Comparison <- gsub("_vs_", " vs. ", rownames(chiresults_df))
      chiresults_df <- chiresults_df[c("statistic", "p.value", "parameter", "method")]

    chiresults_df[c("statistic", "p.value", "parameter", "method")] %>%
      kbl(align = "llllll", col.names = c("Chisq", "p.value", "df", "Method"),  digits = 3, caption = "Difference of Topic Popularity") %>%
      kable_styling() %>%
      kableExtra::scroll_box(width = "100%", height = "300px")

Difference of Topic Popularity
Chisq | p.value | df | Method
--- | --- | --- | ---
1782.427 | 0 | 36 | Pearson’s Chi-squared test
3233.592 | 0 | 36 | Pearson’s Chi-squared test
1701.711 | 0 | 36 | Pearson’s Chi-squared test
1443.398 | 0 | 36 | Pearson’s Chi-squared test
1665.624 | 0 | 36 | Pearson’s Chi-squared test
1512.237 | 0 | 36 | Pearson’s Chi-squared test
1050.893 | 0 | 36 | Pearson’s Chi-squared test
1907.879 | 0 | 36 | Pearson’s Chi-squared test
1777.728 | 0 | 36 | Pearson’s Chi-squared test
1520.199 | 0 | 36 | Pearson’s Chi-squared test
4123.208 | 0 | 36 | Pearson’s Chi-squared test
1236.371 | 0 | 36 | Pearson’s Chi-squared test
858.242 | 0 | 36 | Pearson’s Chi-squared test
4103.974 | 0 | 36 | Pearson’s Chi-squared test
941.917 | 0 | 36 | Pearson’s Chi-squared test
2414.463 | 0 | 36 | Pearson’s Chi-squared test
1347.352 | 0 | 36 | Pearson’s Chi-squared test
1645.366 | 0 | 36 | Pearson’s Chi-squared test
2096.214 | 0 | 36 | Pearson’s Chi-squared test
3323.729 | 0 | 36 | Pearson’s Chi-squared test
1149.516 | 0 | 36 | Pearson’s Chi-squared test
1829.546 | 0 | 36 | Pearson’s Chi-squared test
1522.473 | 0 | 36 | Pearson’s Chi-squared test
2491.849 | 0 | 36 | Pearson’s Chi-squared test
1597.552 | 0 | 36 | Pearson’s Chi-squared test
973.966 | 0 | 36 | Pearson’s Chi-squared test
4816.725 | 0 | 36 | Pearson’s Chi-squared test
1447.778 | 0 | 36 | Pearson’s Chi-squared test
3058.373 | 0 | 36 | Pearson’s Chi-squared test
1329.368 | 0 | 36 | Pearson’s Chi-squared test
2121.086 | 0 | 36 | Pearson’s Chi-squared test
953.356 | 0 | 36 | Pearson’s Chi-squared test
1587.992 | 0 | 36 | Pearson’s Chi-squared test
611.517 | 0 | 36 | Pearson’s Chi-squared test
1626.780 | 0 | 36 | Pearson’s Chi-squared test
806.702 | 0 | 36 | Pearson’s Chi-squared test
1457.680 | 0 | 36 | Pearson’s Chi-squared test
1754.143 | 0 | 36 | Pearson’s Chi-squared test
1627.367 | 0 | 36 | Pearson’s Chi-squared test
1090.728 | 0 | 36 | Pearson’s Chi-squared test
2557.840 | 0 | 36 | Pearson’s Chi-squared test
1216.853 | 0 | 36 | Pearson’s Chi-squared test
918.526 | 0 | 36 | Pearson’s Chi-squared test
1568.726 | 0 | 36 | Pearson’s Chi-squared test
1498.601 | 0 | 36 | Pearson’s Chi-squared test

    simresults_df <- do.call(rbind, sim_results)
      simresults_df$Comparison <- gsub("_vs_", " vs. ", rownames(simresults_df))
      simresults_df <- simresults_df[c("statistic", "p.value", "parameter", "method")]

    simresults_df[c("statistic", "p.value", "parameter", "method")] %>%
      kbl(align = "llllll", col.names = c("Chisq", "p.value", "df", "Method"), digits = 3, caption = "Difference of Topic Popularity") %>%
      kable_styling() %>%
      kableExtra::scroll_box(width = "100%", height = "300px")

Difference of Topic Popularity
Chisq | p.value | df | Method
--- | --- | --- | ---
1782.427 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
3233.592 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
1701.711 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
1443.398 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
1665.624 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
1512.237 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
1050.893 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
1907.879 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
1777.728 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
1520.199 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
4123.208 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
1236.371 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
858.242 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
4103.974 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
941.917 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
2414.463 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
1347.352 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
1645.366 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
2096.214 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
3323.729 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
1149.516 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
1829.546 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
1522.473 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
2491.849 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
1597.552 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
973.966 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
4816.725 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
1447.778 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
3058.373 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
1329.368 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
2121.086 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
953.356 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
1587.992 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
611.517 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
1626.780 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
806.702 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
1457.680 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
1754.143 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
1627.367 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
1090.728 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
2557.840 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
1216.853 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
918.526 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
1568.726 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)
1498.601 | 0 | NA | Pearson’s Chi-squared test with simulated p-value (based on 2000 replicates)

## Principal Component Analysis

Identifying Number of Components

    i_topic <- select(subset, tp_nature, tp_crisis, tp_personal, tp_economy, tp_leisure, tp_well, tp_migration, tp_work, tp_pol, tp_media)
    i_topic <- i_topic[complete.cases(i_topic), ]

    scree_plot(i_topic, method="pc")

Table Principal Component Analysis

Topic Interest | Factor Loadings 1 | Factor Loadings 2 | Uniqueness | Complexity
--- | --- | --- | --- | ---
Nature | 0.41 | 0.54 | 0.53 | 1.86
Crisis | 0.81 | 0.19 | 0.31 | 1.12
Values | 0.24 | 0.77 | 0.35 | 1.2
Economy | 0.81 | 0.22 | 0.3 | 1.14
Leisure | 0.04 | 0.73 | 0.46 | 1.01
Well-Being | 0.08 | 0.78 | 0.39 | 1.02
Migration | 0.83 | 0.14 | 0.3 | 1.05
Work | 0.16 | 0.59 | 0.62 | 1.15
Politics | 0.77 | 0.16 | 0.39 | 1.08
Media | 0.29 | 0.6 | 0.56 | 1.44
Eigenvalues | 4.24 | 1.56 |  |
N | 4336 |  |  |

Plot Principal Component Analysis

    g_pca <- ggplot(results_pca, aes(x = `Factor Loadings 1`, y = `Factor Loadings 2`)) +
      labs(x = "Factor Loadings 1", y = "Factor Loadings 2") +
      geom_point(aes(colour = `Factor Loadings 1` < 0.5 & `Factor Loadings 2` > 0.5), show.legend = FALSE) +
      geom_text(aes(label = c("nature and environment", "current crisis", "personality and values", "economy and society", "leisure and rest", "satisfaction and well-being", "flight and migration", "work and occupation", "political attiudes and behavior", "media and social networks")),
           hjust = 0, nudge_x = 0.02, size = 3, family = "Times New Roman", colour = "gray45") +
      theme_light() + custom_theme + scale_color_grey() +
      scale_y_continuous(limits = c(0, 1.)) +
      scale_x_continuous(limits = c(0, 1.)) +
      geom_hline(yintercept = 0.5) +
      geom_vline(xintercept = 0.5) +
      guides(colour = guide_legend(title.position = "top", title.hjust = 0.5))

    g_pca

# Research Question 5. Analyses

    # Creating Subset
    subset_tp <- select(subset, tp_nature, tp_crisis, tp_personal, tp_economy, tp_leisure, tp_well, tp_migration, tp_work, tp_pol, tp_media, i_gender, i_education, age_group, i_east, i_trust, i_polinterest)
    subset_tp <- subset_tp[complete.cases(subset_tp), ]

    # Rescaling Variables
    subset_tp$st_trust <- scale(subset_tp$i_trust)
    subset_tp$st_polinterest <- scale(subset_tp$i_polinterest)

## Regression Political Topics

    response_vars <- c("tp_pol", "tp_crisis", "tp_economy", "tp_migration")
    refitted_models <- list()
    coefficients_list <- list()

    for (response_var in response_vars) {

      formula <- as.formula(paste(response_var, "~ age_group + i_gender + i_east + i_education + st_polinterest + st_trust"))
      model <- lm(formula, data=subset_tp)

      # Breusch-Pagan test
      bp_test <- lmtest::bptest(model)
      print(paste("Breusch-Pagan test for", response_var))
      print(bp_test)

      # Identify influential cases
      cooksd <- cooks.distance(model)
      influential_cases <- as.numeric(names(cooksd)[(cooksd > 4*mean(cooksd, na.rm=TRUE))])

      # Subset the data excluding influential cases
      subset_no_influential <- subset_tp[-influential_cases, ]

      # Refit the model without influential cases
      if (bp_test$p.value < 0.05) {
        refit_model <- lm_robust(formula, data=subset_no_influential)
        print(paste("Summary of refitted robust model for", response_var))
      } else {
        refit_model <- lm(formula, data=subset_no_influential)
        print(paste("Summary of refitted standard model for", response_var))
      }

      refitted_models[[response_var]] <- refit_model
      print(summary(refit_model))

      coefficients <- tidy(refit_model) %>%
        filter(term %in% c("st_trust", "st_polinterest", "i_gender2", "i_education2", "i_education3", "age_group2", "age_group3", "i_east2"))
      coefficients$response_var <- response_var  # Add response variable name to the coefficients data frame
      coefficients_list[[response_var]] <- coefficients
    }

    ## [1] "Breusch-Pagan test for tp_pol"
    ##
    ##  studentized Breusch-Pagan test
    ##
    ## data:  model
    ## BP = 88.09, df = 8, p-value = 1.135e-15
    ##
    ## [1] "Summary of refitted robust model for tp_pol"
    ##
    ## Call:
    ## lm_robust(formula = formula, data = subset_no_influential)
    ##
    ## Standard error type:  HC2
    ##
    ## Coefficients:
    ##                Estimate Std. Error t value   Pr(>|t|) CI Lower CI Upper   DF
    ## (Intercept)     4.44442    0.07679 57.8743  0.000e+00  4.29386  4.59498 3965
    ## age_group2      0.17879    0.05648  3.1658  1.558e-03  0.06807  0.28952 3965
    ## age_group3      0.12962    0.05739  2.2584  2.397e-02  0.01709  0.24214 3965
    ## i_gender2      -0.07247    0.04381 -1.6542  9.816e-02 -0.15835  0.01342 3965
    ## i_east2         0.02619    0.04937  0.5305  5.958e-01 -0.07061  0.12299 3965
    ## i_education2   -0.02131    0.06972 -0.3057  7.599e-01 -0.15801  0.11538 3965
    ## i_education3    0.04935    0.06634  0.7440  4.569e-01 -0.08071  0.17942 3965
    ## st_polinterest  0.84934    0.02372 35.8003 1.811e-243  0.80283  0.89585 3965
    ## st_trust        0.14949    0.02336  6.3987  1.749e-10  0.10369  0.19529 3965
    ##
    ## Multiple R-squared:  0.3213 ,    Adjusted R-squared:  0.3199
    ## F-statistic: 218.3 on 8 and 3965 DF,  p-value: < 2.2e-16
    ## [1] "Breusch-Pagan test for tp_crisis"
    ##
    ##  studentized Breusch-Pagan test
    ##
    ## data:  model
    ## BP = 127.29, df = 8, p-value < 2.2e-16
    ##
    ## [1] "Summary of refitted robust model for tp_crisis"
    ##
    ## Call:
    ## lm_robust(formula = formula, data = subset_no_influential)
    ##
    ## Standard error type:  HC2
    ##
    ## Coefficients:
    ##                Estimate Std. Error t value  Pr(>|t|)  CI Lower  CI Upper   DF
    ## (Intercept)     5.24609    0.07592 69.1017 0.000e+00  5.097251 5.3949367 3961
    ## age_group2      0.10014    0.05548  1.8051 7.113e-02 -0.008623 0.2089035 3961
    ## age_group3      0.13466    0.05834  2.3080 2.105e-02  0.020271 0.2490428 3961
    ## i_gender2       0.08065    0.04307  1.8724 6.122e-02 -0.003795 0.1650936 3961
    ## i_east2        -0.09515    0.04885 -1.9476 5.154e-02 -0.190929 0.0006347 3961
    ## i_education2   -0.07671    0.06883 -1.1144 2.652e-01 -0.211648 0.0582368 3961
    ## i_education3    0.02767    0.06553  0.4223 6.729e-01 -0.100812 0.1561577 3961
    ## st_polinterest  0.48997    0.02528 19.3802 5.160e-80  0.440404 0.5395378 3961
    ## st_trust        0.07972    0.02270  3.5123 4.491e-04  0.035223 0.1242265 3961
    ##
    ## Multiple R-squared:  0.1403 ,    Adjusted R-squared:  0.1386
    ## F-statistic: 64.92 on 8 and 3961 DF,  p-value: < 2.2e-16
    ## [1] "Breusch-Pagan test for tp_economy"
    ##
    ##  studentized Breusch-Pagan test
    ##
    ## data:  model
    ## BP = 113.39, df = 8, p-value < 2.2e-16
    ##
    ## [1] "Summary of refitted robust model for tp_economy"
    ##
    ## Call:
    ## lm_robust(formula = formula, data = subset_no_influential)
    ##
    ## Standard error type:  HC2
    ##
    ## Coefficients:
    ##                 Estimate Std. Error  t value  Pr(>|t|) CI Lower CI Upper   DF
    ## (Intercept)     4.981410    0.07267 68.54446 0.000e+00  4.83893  5.12389 3967
    ## age_group2      0.123137    0.05156  2.38801 1.699e-02  0.02204  0.22423 3967
    ## age_group3      0.128944    0.05374  2.39919 1.648e-02  0.02357  0.23431 3967
    ## i_gender2      -0.177441    0.04021 -4.41267 1.048e-05 -0.25628 -0.09860 3967
    ## i_east2         0.001238    0.04478  0.02765 9.779e-01 -0.08655  0.08903 3967
    ## i_education2    0.090008    0.06521  1.38031 1.676e-01 -0.03784  0.21785 3967
    ## i_education3    0.157741    0.06332  2.49131 1.277e-02  0.03360  0.28188 3967
    ## st_polinterest  0.492938    0.02359 20.89560 4.522e-92  0.44669  0.53919 3967
    ## st_trust        0.128996    0.02142  6.02176 1.882e-09  0.08700  0.17099 3967
    ##
    ## Multiple R-squared:  0.1855 ,    Adjusted R-squared:  0.1839
    ## F-statistic:  93.3 on 8 and 3967 DF,  p-value: < 2.2e-16
    ## [1] "Breusch-Pagan test for tp_migration"
    ##
    ##  studentized Breusch-Pagan test
    ##
    ## data:  model
    ## BP = 190.06, df = 8, p-value < 2.2e-16
    ##
    ## [1] "Summary of refitted robust model for tp_migration"
    ##
    ## Call:
    ## lm_robust(formula = formula, data = subset_no_influential)
    ##
    ## Standard error type:  HC2
    ##
    ## Coefficients:
    ##                Estimate Std. Error t value  Pr(>|t|) CI Lower CI Upper   DF
    ## (Intercept)     4.52752    0.08708 51.9909 0.000e+00  4.35679  4.69825 3958
    ## age_group2      0.29561    0.06146  4.8097 1.568e-06  0.17511  0.41611 3958
    ## age_group3      0.39323    0.06366  6.1775 7.171e-10  0.26843  0.51803 3958
    ## i_gender2       0.17588    0.04843  3.6316 2.852e-04  0.08093  0.27084 3958
    ## i_east2        -0.15703    0.05659 -2.7749 5.547e-03 -0.26798 -0.04608 3958
    ## i_education2   -0.04824    0.07963 -0.6058 5.447e-01 -0.20436  0.10788 3958
    ## i_education3    0.07492    0.07545  0.9930 3.208e-01 -0.07301  0.22285 3958
    ## st_polinterest  0.47460    0.02849 16.6580 2.857e-60  0.41875  0.53046 3958
    ## st_trust        0.16985    0.02595  6.5463 6.653e-11  0.11898  0.22072 3958
    ##
    ## Multiple R-squared:  0.1353 ,    Adjusted R-squared:  0.1335
    ## F-statistic: 63.92 on 8 and 3958 DF,  p-value: < 2.2e-16

    # Combine all coefficients into a single data frame
    all_coefficients <- bind_rows(coefficients_list)
    significant_coefficients <- all_coefficients %>%
      filter(p.value <= 0.05)

    tp_trust <- filter(significant_coefficients, term == "st_trust")
    tp_polint <- filter(significant_coefficients, term == "st_polinterest")
    tp_gender <- filter(significant_coefficients, term == "i_gender2")
    tp_edu2 <- filter(significant_coefficients, term == "i_education2")
    tp_edu3 <- filter(significant_coefficients, term == "i_education3")
    tp_age2 <- filter(significant_coefficients, term == "age_group2")
    tp_age3 <- filter(significant_coefficients, term == "age_group3")
    tp_east <- filter(significant_coefficients, term == "i_east2")

    pol <- bind_rows(tp_trust, tp_polint, tp_gender, tp_edu2, tp_edu3, tp_age2, tp_age3, tp_east)

Regression Table

    r_pol <- refitted_models$tp_pol
    r_migration <- refitted_models$tp_migration
    r_economy <- refitted_models$tp_economy
    r_crisis <- refitted_models$tp_crisis

    tab_model(r_pol, r_migration, r_economy, r_crisis,
      show.est = TRUE, show.se = TRUE, show.ci = FALSE, show.aic = TRUE, collapse.se = TRUE, linebreak = TRUE,  p.style = "numeric", show.reflvl = TRUE,
      pred.labels = c("Intercept", "Age Group 49-63", "Age Group >63", "Gender: Female", "Germany: East", "Education: Intermediate", "Education: High",
        "Political Interest", "Social Trust" ),
      dv.labels = c("Politics", "Migration", "Economy", "Crises"),
      title = "Regression Models: Differences in Topic Interests",
      CSS = list(css.thead = 'border-top: 1px solid;', css.summary= 'border-bottom: 1px solid;', css.table = 'width: 100%;'))

Regression Models: Differences in Topic Interests
| Politics | Migration | Economy | Crises
--- | --- | --- | --- | ---
Predictors | Estimates | p | Estimates | p | Estimates | p | Estimates | p
Intercept | 4.44 (0.08) | <0.001 | 4.53 (0.09) | <0.001 | 4.98 (0.07) | <0.001 | 5.25 (0.08) | <0.001
Age Group 49-63 | 0.18 (0.06) | 0.002 | 0.30 (0.06) | <0.001 | 0.12 (0.05) | 0.017 | 0.10 (0.06) | 0.071
Age Group >63 | 0.13 (0.06) | 0.024 | 0.39 (0.06) | <0.001 | 0.13 (0.05) | 0.016 | 0.13 (0.06) | 0.021
Gender: Female | -0.07 (0.04) | 0.098 | 0.18 (0.05) | <0.001 | -0.18 (0.04) | <0.001 | 0.08 (0.04) | 0.061
Germany: East | 0.03 (0.05) | 0.596 | -0.16 (0.06) | 0.006 | 0.00 (0.04) | 0.978 | -0.10 (0.05) | 0.052
Education: Intermediate | -0.02 (0.07) | 0.760 | -0.05 (0.08) | 0.545 | 0.09 (0.07) | 0.168 | -0.08 (0.07) | 0.265
Education: High | 0.05 (0.07) | 0.457 | 0.07 (0.08) | 0.321 | 0.16 (0.06) | 0.013 | 0.03 (0.07) | 0.673
Political Interest | 0.85 (0.02) | <0.001 | 0.47 (0.03) | <0.001 | 0.49 (0.02) | <0.001 | 0.49 (0.03) | <0.001
Social Trust | 0.15 (0.02) | <0.001 | 0.17 (0.03) | <0.001 | 0.13 (0.02) | <0.001 | 0.08 (0.02) | <0.001
Observations | 3974 | 3967 | 3976 | 3970
R2 / R2 adjusted | 0.321 / 0.320 | 0.135 / 0.134 | 0.186 / 0.184 | 0.140 / 0.139
AIC | 16085.764 | 14285.659 | 14220.023 | 14363.764

Regression Graph

    pol$group <- ifelse(pol$outcome %in% c("tp_crisis", "tp_migration"), "Panel 1: Current Crises, Flight and Migration", "Panel 2: Economy and Society, Political Attitudes and Participation")
    gpol <- ggplot(pol, aes(x = term, y = estimate, colour = outcome, shape = outcome)) +
       labs(x = NULL, y = "Estimated Effects\nwith 95% Confidence Intervals", title = NULL) +
      geom_pointrange(aes(ymin = conf.low, ymax = conf.high)) +
      geom_point() +
      geom_hline(yintercept = 0.0) +
      coord_flip() + theme_light() + custom_theme +
      scale_color_manual(limits = c("tp_crisis", "tp_economy", "tp_migration", "tp_pol"),
        labels = c("Current Crises", "Economy and Society", "Flight and Migration", "Political Attitudes and Participation"),
        values = c("#008080", "#7EAB96", "#CA562C", "#E19464"), drop = TRUE) +
      scale_shape_manual(limits = c("tp_crisis", "tp_economy", "tp_migration", "tp_pol"),
        labels = c("Current Crises", "Economy and Society", "Flight and Migration", "Political Attitudes and Participation"),
        values = c(19, 21, 19, 21),  drop = FALSE) +
      guides(colour = guide_legend(nrow = 2)) +
      scale_y_continuous(limits = c(-1.2, +1.0)) +
      scale_x_discrete(limits = c("i_gender2", "i_gender1", "i_east2", "i_east1", "age_group3", "age_group2", "age_group1", "i_education3", "i_education1", "st_trust", "st_polinterest"),
        labels = c("Female Gender", "Ref. Male Gender", "East Germany", "Ref. West Germany", "Age Group >63",  "Age Group 49-63", "Ref. Age Group <49", "High Education", "Ref. Low Education",
         "Std. Social Trust", "Std. Political Interest"))  +
      facet_wrap(~ group, nrow = 2) + theme(strip.text = element_blank(), plot.margin = margin(t = 5, r = 30, b = 5, l = 5))

    gpol

## Regression Private Topics

    response_vars <- c("tp_nature", "tp_well", "tp_personal", "tp_media", "tp_work", "tp_leisure")
    refitted_models <- list()
    coefficients_list <- list()

    # Run diagnostics for each model
    for (response_var in response_vars) {

      formula <- as.formula(paste(response_var, "~ age_group + i_gender + i_east + i_education + st_polinterest + st_trust"))
      model <- lm(formula, data=subset_tp)

      # Breusch-Pagan test
      bp_test <- lmtest::bptest(model)
      print(paste("Breusch-Pagan test for", response_var))
      print(bp_test)

      # Identify influential cases
      cooksd <- cooks.distance(model)
      influential_cases <- as.numeric(names(cooksd)[(cooksd > 4*mean(cooksd, na.rm=TRUE))])

      # Subset the data excluding influential cases
      subset_no_influential <- subset_tp[-influential_cases, ]

      # Refit the model without influential cases
      if (bp_test$p.value < 0.05) {
        refit_model <- lm_robust(formula, data=subset_no_influential)
        print(paste("Summary of refitted robust model for", response_var))
      } else {
        refit_model <- lm(formula, data=subset_no_influential)
        print(paste("Summary of refitted standard model for", response_var))
      }

      refitted_models[[response_var]] <- refit_model
      print(summary(refit_model))

      coefficients <- tidy(refit_model) %>%
        filter(term %in% c("st_trust", "st_polinterest", "i_gender2", "i_education2", "i_education3", "age_group2", "age_group3", "i_east2"))
      coefficients$response_var <- response_var  # Add response variable name to the coefficients data frame
      coefficients_list[[response_var]] <- coefficients
      }

    ## [1] "Breusch-Pagan test for tp_nature"
    ##
    ##  studentized Breusch-Pagan test
    ##
    ## data:  model
    ## BP = 85.465, df = 8, p-value = 3.858e-15
    ##
    ## [1] "Summary of refitted robust model for tp_nature"
    ##
    ## Call:
    ## lm_robust(formula = formula, data = subset_no_influential)
    ##
    ## Standard error type:  HC2
    ##
    ## Coefficients:
    ##                Estimate Std. Error  t value  Pr(>|t|) CI Lower CI Upper   DF
    ## (Intercept)    5.107062    0.07737 66.00740 0.000e+00  4.95537   5.2588 3971
    ## age_group2     0.137524    0.05606  2.45323 1.420e-02  0.02762   0.2474 3971
    ## age_group3     0.203284    0.05865  3.46634 5.332e-04  0.08831   0.3183 3971
    ## i_gender2      0.298262    0.04259  7.00234 2.943e-12  0.21475   0.3818 3971
    ## i_east2        0.115963    0.04777  2.42741 1.525e-02  0.02230   0.2096 3971
    ## i_education2   0.006641    0.06759  0.09825 9.217e-01 -0.12588   0.1392 3971
    ## i_education3   0.058918    0.06547  0.89996 3.682e-01 -0.06944   0.1873 3971
    ## st_polinterest 0.186083    0.02541  7.32275 2.926e-13  0.13626   0.2359 3971
    ## st_trust       0.162455    0.02304  7.05183 2.073e-12  0.11729   0.2076 3971
    ##
    ## Multiple R-squared:  0.05314 ,   Adjusted R-squared:  0.05123
    ## F-statistic: 24.05 on 8 and 3971 DF,  p-value: < 2.2e-16
    ## [1] "Breusch-Pagan test for tp_well"
    ##
    ##  studentized Breusch-Pagan test
    ##
    ## data:  model
    ## BP = 49.052, df = 8, p-value = 6.213e-08
    ##
    ## [1] "Summary of refitted robust model for tp_well"
    ##
    ## Call:
    ## lm_robust(formula = formula, data = subset_no_influential)
    ##
    ## Standard error type:  HC2
    ##
    ## Coefficients:
    ##                 Estimate Std. Error t value  Pr(>|t|) CI Lower   CI Upper   DF
    ## (Intercept)     5.055885    0.08501 59.4723 0.000e+00  4.88921  5.2225576 3968
    ## age_group2     -0.124335    0.06372 -1.9511 5.111e-02 -0.24927  0.0006007 3968
    ## age_group3     -0.166718    0.06503 -2.5637 1.039e-02 -0.29421 -0.0392221 3968
    ## i_gender2       0.351188    0.04808  7.3043 3.352e-13  0.25692  0.4454514 3968
    ## i_east2        -0.008291    0.05474 -0.1515 8.796e-01 -0.11561  0.0990306 3968
    ## i_education2   -0.185805    0.07316 -2.5395 1.114e-02 -0.32925 -0.0423603 3968
    ## i_education3   -0.349317    0.07175 -4.8688 1.166e-06 -0.48998 -0.2086557 3968
    ## st_polinterest -0.018169    0.02711 -0.6701 5.028e-01 -0.07133  0.0349900 3968
    ## st_trust        0.160491    0.02577  6.2273 5.238e-10  0.10996  0.2110181 3968
    ##
    ## Multiple R-squared:  0.03034 ,   Adjusted R-squared:  0.02839
    ## F-statistic: 15.08 on 8 and 3968 DF,  p-value: < 2.2e-16
    ## [1] "Breusch-Pagan test for tp_personal"
    ##
    ##  studentized Breusch-Pagan test
    ##
    ## data:  model
    ## BP = 62.234, df = 8, p-value = 1.696e-10
    ##
    ## [1] "Summary of refitted robust model for tp_personal"
    ##
    ## Call:
    ## lm_robust(formula = formula, data = subset_no_influential)
    ##
    ## Standard error type:  HC2
    ##
    ## Coefficients:
    ##                Estimate Std. Error t value  Pr(>|t|) CI Lower CI Upper   DF
    ## (Intercept)     5.12636    0.07925 64.6823 0.000e+00  4.97098  5.28174 3969
    ## age_group2     -0.07078    0.05608 -1.2622 2.070e-01 -0.18073  0.03917 3969
    ## age_group3     -0.20036    0.05806 -3.4508 5.649e-04 -0.31420 -0.08653 3969
    ## i_gender2       0.46012    0.04280 10.7516 1.349e-26  0.37622  0.54402 3969
    ## i_east2        -0.01575    0.04898 -0.3215 7.479e-01 -0.11178  0.08029 3969
    ## i_education2    0.04918    0.06892  0.7137 4.755e-01 -0.08594  0.18431 3969
    ## i_education3    0.01136    0.06841  0.1661 8.681e-01 -0.12276  0.14549 3969
    ## st_polinterest  0.10246    0.02474  4.1415 3.523e-05  0.05395  0.15096 3969
    ## st_trust        0.18254    0.02310  7.9012 3.548e-15  0.13724  0.22783 3969
    ##
    ## Multiple R-squared:  0.05315 ,   Adjusted R-squared:  0.05124
    ## F-statistic: 25.29 on 8 and 3969 DF,  p-value: < 2.2e-16
    ## [1] "Breusch-Pagan test for tp_media"
    ##
    ##  studentized Breusch-Pagan test
    ##
    ## data:  model
    ## BP = 24.236, df = 8, p-value = 0.002092
    ##
    ## [1] "Summary of refitted robust model for tp_media"
    ##
    ## Call:
    ## lm_robust(formula = formula, data = subset_no_influential)
    ##
    ## Standard error type:  HC2
    ##
    ## Coefficients:
    ##                Estimate Std. Error t value  Pr(>|t|) CI Lower CI Upper   DF
    ## (Intercept)     4.48374    0.08553 52.4222 0.000e+00  4.31605  4.65143 3961
    ## age_group2     -0.10272    0.06234 -1.6476 9.951e-02 -0.22495  0.01951 3961
    ## age_group3     -0.24314    0.06537 -3.7192 2.026e-04 -0.37131 -0.11497 3961
    ## i_gender2       0.32833    0.04851  6.7686 1.492e-11  0.23323  0.42343 3961
    ## i_east2        -0.03094    0.05473 -0.5654 5.719e-01 -0.13824  0.07636 3961
    ## i_education2   -0.12268    0.07513 -1.6330 1.025e-01 -0.26997  0.02461 3961
    ## i_education3   -0.05795    0.07347 -0.7888 4.303e-01 -0.20198  0.08609 3961
    ## st_polinterest  0.09765    0.02775  3.5193 4.376e-04  0.04325  0.15206 3961
    ## st_trust        0.14322    0.02618  5.4707 4.761e-08  0.09189  0.19455 3961
    ##
    ## Multiple R-squared:  0.02745 ,   Adjusted R-squared:  0.02548
    ## F-statistic: 12.91 on 8 and 3961 DF,  p-value: < 2.2e-16
    ## [1] "Breusch-Pagan test for tp_work"
    ##
    ##  studentized Breusch-Pagan test
    ##
    ## data:  model
    ## BP = 214, df = 8, p-value < 2.2e-16
    ##
    ## [1] "Summary of refitted robust model for tp_work"
    ##
    ## Call:
    ## lm_robust(formula = formula, data = subset_no_influential)
    ##
    ## Standard error type:  HC2
    ##
    ## Coefficients:
    ##                Estimate Std. Error t value  Pr(>|t|) CI Lower CI Upper   DF
    ## (Intercept)     5.20299    0.08814  59.034 0.000e+00  5.03020  5.37579 3963
    ## age_group2     -0.24007    0.05659  -4.242 2.263e-05 -0.35102 -0.12912 3963
    ## age_group3     -1.02896    0.06648 -15.478 1.626e-52 -1.15930 -0.89863 3963
    ## i_gender2       0.12150    0.05072   2.395 1.665e-02  0.02206  0.22095 3963
    ## i_east2         0.07708    0.05801   1.329 1.840e-01 -0.03666  0.19081 3963
    ## i_education2   -0.14693    0.08392  -1.751 8.004e-02 -0.31145  0.01759 3963
    ## i_education3   -0.09777    0.08136  -1.202 2.295e-01 -0.25728  0.06174 3963
    ## st_polinterest  0.07870    0.02799   2.811 4.956e-03  0.02382  0.13358 3963
    ## st_trust        0.20576    0.02684   7.665 2.238e-14  0.15313  0.25838 3963
    ##
    ## Multiple R-squared:  0.08891 ,   Adjusted R-squared:  0.08707
    ## F-statistic: 44.12 on 8 and 3963 DF,  p-value: < 2.2e-16
    ## [1] "Breusch-Pagan test for tp_leisure"
    ##
    ##  studentized Breusch-Pagan test
    ##
    ## data:  model
    ## BP = 49.147, df = 8, p-value = 5.957e-08
    ##
    ## [1] "Summary of refitted robust model for tp_leisure"
    ##
    ## Call:
    ## lm_robust(formula = formula, data = subset_no_influential)
    ##
    ## Standard error type:  HC2
    ##
    ## Coefficients:
    ##                Estimate Std. Error t value  Pr(>|t|) CI Lower CI Upper   DF
    ## (Intercept)     5.14138    0.07578  67.847 0.000e+00  4.99281  5.28995 3980
    ## age_group2     -0.07549    0.05617  -1.344 1.790e-01 -0.18561  0.03463 3980
    ## age_group3     -0.22244    0.05953  -3.736 1.892e-04 -0.33915 -0.10572 3980
    ## i_gender2       0.10546    0.04313   2.445 1.451e-02  0.02091  0.19002 3980
    ## i_east2         0.15904    0.04873   3.264 1.109e-03  0.06350  0.25458 3980
    ## i_education2   -0.06940    0.06634  -1.046 2.956e-01 -0.19946  0.06066 3980
    ## i_education3   -0.25378    0.06483  -3.915 9.201e-05 -0.38087 -0.12668 3980
    ## st_polinterest -0.09462    0.02506  -3.776 1.618e-04 -0.14375 -0.04549 3980
    ## st_trust        0.11272    0.02323   4.853 1.262e-06  0.06718  0.15825 3980
    ##
    ## Multiple R-squared:  0.02611 ,   Adjusted R-squared:  0.02415
    ## F-statistic: 12.89 on 8 and 3980 DF,  p-value: < 2.2e-16

    # Combine all coefficients into a single data frame
    all_coefficients <- bind_rows(coefficients_list)
    significant_coefficients <- all_coefficients %>%
      filter(p.value <= 0.05)

    tp_trust <- filter(significant_coefficients, term == "st_trust")
    tp_polint <- filter(significant_coefficients, term == "st_polinterest")
    tp_gender <- filter(significant_coefficients, term == "i_gender2")
    tp_edu2 <- filter(significant_coefficients, term == "i_education2")
    tp_edu3 <- filter(significant_coefficients, term == "i_education3")
    tp_age2 <- filter(significant_coefficients, term == "age_group2")
    tp_age3 <- filter(significant_coefficients, term == "age_group3")
    tp_east <- filter(significant_coefficients, term == "i_east2")

    priv <- bind_rows(tp_trust, tp_polint, tp_gender, tp_edu2, tp_edu3, tp_age2, tp_age3, tp_east)

Regression Table

    r_nature <- refitted_models$tp_nature
    r_well <- refitted_models$tp_well
    r_personal <- refitted_models$tp_personal
    r_work <- refitted_models$tp_work
    r_leisure <- refitted_models$tp_leisure
    r_media <- refitted_models$tp_media

    tab_model(r_nature, r_well, r_personal,
      show.est = TRUE, show.se = TRUE, show.ci = FALSE, show.aic = TRUE, collapse.se = TRUE, linebreak = TRUE,  p.style = "numeric", show.reflvl = TRUE,
      pred.labels = c("Intercept", "Age Group 49-63", "Age Group >63", "Gender: Female", "Germany: East", "Education: Intermediate", "Education: High", "Political Interest", "Social Trust" ),
      dv.labels = c("Nature", "Well-Being", "Personality"),
      title = "Regression Models: Differences in Topic Interests",
      CSS = list(css.thead = 'border-top: 1px solid;', css.summary= 'border-bottom: 1px solid;', css.table = 'width: 100%;'))

Regression Models: Differences in Topic Interests
| Nature | Well-Being | Personality
--- | --- | --- | ---
Predictors | Estimates | p | Estimates | p | Estimates | p
Intercept | 5.11 (0.08) | <0.001 | 5.06 (0.09) | <0.001 | 5.13 (0.08) | <0.001
Age Group 49-63 | 0.14 (0.06) | 0.014 | -0.12 (0.06) | 0.051 | -0.07 (0.06) | 0.207
Age Group >63 | 0.20 (0.06) | 0.001 | -0.17 (0.07) | 0.010 | -0.20 (0.06) | 0.001
Gender: Female | 0.30 (0.04) | <0.001 | 0.35 (0.05) | <0.001 | 0.46 (0.04) | <0.001
Germany: East | 0.12 (0.05) | 0.015 | -0.01 (0.05) | 0.880 | -0.02 (0.05) | 0.748
Education: Intermediate | 0.01 (0.07) | 0.922 | -0.19 (0.07) | 0.011 | 0.05 (0.07) | 0.475
Education: High | 0.06 (0.07) | 0.368 | -0.35 (0.07) | <0.001 | 0.01 (0.07) | 0.868
Political Interest | 0.19 (0.03) | <0.001 | -0.02 (0.03) | 0.503 | 0.10 (0.02) | <0.001
Social Trust | 0.16 (0.02) | <0.001 | 0.16 (0.03) | <0.001 | 0.18 (0.02) | <0.001
Observations | 3980 | 3977 | 3978
R2 / R2 adjusted | 0.053 / 0.051 | 0.030 / 0.028 | 0.053 / 0.051
AIC | 13741.040 | 14621.263 | 13857.723

    tab_model(r_work, r_leisure, r_media,
      show.est = TRUE, show.se = TRUE, show.ci = FALSE, show.aic = TRUE, collapse.se = TRUE, linebreak = TRUE,  p.style = "numeric", show.reflvl = TRUE,
      pred.labels = c("Intercept", "Age Group 49-63", "Age Group >63", "Gender: Female", "Germany: East", "Education: Intermediate", "Education: High", "Political Interest", "Social Trust" ),
      dv.labels = c("Work", "Leisure", "Media"),
      title = "Regression Models: Differences in Topic Interests",
      CSS = list(css.thead = 'border-top: 1px solid;', css.summary= 'border-bottom: 1px solid;', css.table = 'width: 100%;'))

Regression Models: Differences in Topic Interests
| Work | Leisure | Media
--- | --- | --- | ---
Predictors | Estimates | p | Estimates | p | Estimates | p
Intercept | 5.20 (0.09) | <0.001 | 5.14 (0.08) | <0.001 | 4.48 (0.09) | <0.001
Age Group 49-63 | -0.24 (0.06) | <0.001 | -0.08 (0.06) | 0.179 | -0.10 (0.06) | 0.100
Age Group >63 | -1.03 (0.07) | <0.001 | -0.22 (0.06) | <0.001 | -0.24 (0.07) | <0.001
Gender: Female | 0.12 (0.05) | 0.017 | 0.11 (0.04) | 0.015 | 0.33 (0.05) | <0.001
Germany: East | 0.08 (0.06) | 0.184 | 0.16 (0.05) | 0.001 | -0.03 (0.05) | 0.572
Education: Intermediate | -0.15 (0.08) | 0.080 | -0.07 (0.07) | 0.296 | -0.12 (0.08) | 0.103
Education: High | -0.10 (0.08) | 0.230 | -0.25 (0.06) | <0.001 | -0.06 (0.07) | 0.430
Political Interest | 0.08 (0.03) | 0.005 | -0.09 (0.03) | <0.001 | 0.10 (0.03) | <0.001
Social Trust | 0.21 (0.03) | <0.001 | 0.11 (0.02) | <0.001 | 0.14 (0.03) | <0.001
Observations | 3972 | 3989 | 3970
R2 / R2 adjusted | 0.089 / 0.087 | 0.026 / 0.024 | 0.027 / 0.025
AIC | 15533.015 | 13504.056 | 14633.389

Regression Graph

    priv$group <- ifelse(priv$outcome %in% c("tp_leisure", "tp_nature", "tp_well"), "Panel 1: Leisure, Nature, Well-being", "Panel 2: Media, Personality, Work")

    gpriv <- ggplot(priv, aes(x = term, y = estimate, colour = outcome, shape = outcome)) +
       labs(x = NULL, y = "Estimated Effects\nwith 95% Confidence Intervals", title = NULL) +
      geom_point() +  geom_pointrange(aes(ymin=conf.low, ymax=conf.high)) +
      geom_hline(yintercept = 0.) +
      theme_light() + coord_flip() + custom_theme +
      scale_color_manual(limits = c("tp_leisure", "tp_media", "tp_nature", "tp_personal", "tp_well", "tp_work"),
        labels = c("Leisure and Rest", "Media and Social Networks", "Nature and Environment", "Personality and Values", "Satisfaction and Well-Being", "Work and Occupation"),
        values = c("#008080","#7EAB96", "#CA562C",  "#E19464", "#F6EDBD", "#F6EDBD"), drop = TRUE) +
      scale_shape_manual(limits = c("tp_leisure", "tp_media", "tp_nature", "tp_personal", "tp_well", "tp_work"),
        labels = c("Leisure and Rest", "Media and Social Networks", "Nature and Environment", "Personality and Values", "Satisfaction and Well-Being", "Work and Occupation"),
        values = c(19, 21, 19, 21, 19, 21), drop = FALSE) +
      guides(colour = guide_legend(nrow = 2)) +
      scale_y_continuous(limits = c(-1.2, +1.0)) +
      scale_x_discrete(limits = c("i_gender2", "i_gender1","i_east2", "i_east1", "age_group3", "age_group2", "age_group1",
        "i_education3", "i_education2", "i_education1","st_trust", "st_polinterest"),
        labels = c("Female Gender", "Ref. Male Gender", "East Germany", "Ref. West Germany", "Age Group >63", "Age Group 49-63", "Ref. Age Group <49", "High Education", "Intermediate Education", "Ref. Low Education","Std. Social Trust", "Std. Political Interest")) +
      facet_wrap(~ group, nrow = 2) + theme(strip.text = element_blank(), plot.margin = margin(t = 5, r = 30, b = 5, l = 5))

    gpriv

# Documentation

    session_info()

    ## ─ Session info ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
    ##  setting  value
    ##  version  R version 4.4.0 (2024-04-24 ucrt)
    ##  os       Windows 11 x64 (build 26100)
    ##  system   x86_64, mingw32
    ##  ui       RStudio
    ##  language (EN)
    ##  collate  German_Germany.utf8
    ##  ctype    German_Germany.utf8
    ##  tz       Europe/Berlin
    ##  date     2026-01-23
    ##  rstudio  2025.09.2+418 Cucumberleaf Sunflower (desktop)
    ##  pandoc   3.6.3 @ C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools/ (via rmarkdown)
    ##  quarto   ERROR: Unknown command "TMPDIR=C:/Users/barthosa/AppData/Local/Temp/Rtmp0EISw1/file4ea033b53044". Did you mean command "install"? @ C:\\PROGRA~1\\RStudio\\RESOUR~1\\app\\bin\\quarto\\bin\\quarto.exe
    ##
    ## ─ Packages ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
    ##  package         * version  date (UTC) lib source
    ##  abind             1.4-8    2024-09-12 [1] CRAN (R 4.4.1)
    ##  backports         1.5.0    2024-05-23 [1] CRAN (R 4.4.0)
    ##  base64enc         0.1-3    2015-07-28 [1] CRAN (R 4.4.0)
    ##  bayestestR        0.16.1   2025-07-01 [1] CRAN (R 4.4.3)
    ##  boot              1.3-31   2024-08-28 [1] CRAN (R 4.4.3)
    ##  broom           * 1.0.8    2025-03-28 [1] CRAN (R 4.4.3)
    ##  bslib             0.9.0    2025-01-30 [1] CRAN (R 4.4.3)
    ##  cachem            1.1.0    2024-05-16 [1] CRAN (R 4.4.0)
    ##  car               3.1-3    2024-09-27 [1] CRAN (R 4.4.3)
    ##  carData           3.0-5    2022-01-06 [1] CRAN (R 4.4.0)
    ##  checkmate         2.3.1    2023-12-04 [1] CRAN (R 4.4.0)
    ##  cli               3.6.5    2025-04-23 [1] CRAN (R 4.4.3)
    ##  cluster           2.1.6    2023-12-01 [1] CRAN (R 4.4.0)
    ##  coda              0.19-4.1 2024-01-31 [1] CRAN (R 4.4.1)
    ##  codetools         0.2-20   2024-03-31 [1] CRAN (R 4.4.0)
    ##  colorspace        2.1-0    2023-01-23 [1] CRAN (R 4.4.0)
    ##  data.table        1.15.4   2024-03-30 [1] CRAN (R 4.4.0)
    ##  datawizard        1.1.0    2025-05-09 [1] CRAN (R 4.4.3)
    ##  devtools        * 2.4.6    2025-10-03 [1] CRAN (R 4.4.3)
    ##  dichromat         2.0-0.1  2022-05-02 [1] CRAN (R 4.4.0)
    ##  digest            0.6.35   2024-03-11 [1] CRAN (R 4.4.0)
    ##  dplyr           * 1.1.4    2023-11-17 [1] CRAN (R 4.4.0)
    ##  effectsize        1.0.1    2025-05-27 [1] CRAN (R 4.4.3)
    ##  ellipsis          0.3.2    2021-04-29 [1] CRAN (R 4.4.0)
    ##  emmeans           1.11.1   2025-05-04 [1] CRAN (R 4.4.3)
    ##  estimability      1.5.1    2024-05-12 [1] CRAN (R 4.4.0)
    ##  estimatr        * 1.0.4    2024-03-31 [1] CRAN (R 4.4.0)
    ##  evaluate          1.0.4    2025-06-18 [1] CRAN (R 4.4.3)
    ##  factoextra        1.0.7    2020-04-01 [1] CRAN (R 4.4.3)
    ##  farver            2.1.2    2024-05-13 [1] CRAN (R 4.4.0)
    ##  fastmap           1.2.0    2024-05-15 [1] CRAN (R 4.4.0)
    ##  forcats           1.0.0    2023-01-29 [1] CRAN (R 4.4.0)
    ##  foreign           0.8-86   2023-11-28 [1] CRAN (R 4.4.0)
    ##  Formula           1.2-5    2023-02-24 [1] CRAN (R 4.4.0)
    ##  fs                1.6.6    2025-04-12 [1] CRAN (R 4.4.3)
    ##  gdata             3.0.1    2024-10-22 [1] CRAN (R 4.4.3)
    ##  generics          0.1.4    2025-05-09 [1] CRAN (R 4.4.3)
    ##  ggeffects       * 2.3.0    2025-06-13 [1] CRAN (R 4.4.3)
    ##  ggplot2         * 3.5.2    2025-04-09 [1] CRAN (R 4.4.3)
    ##  ggpubr          * 0.6.1    2025-06-27 [1] CRAN (R 4.4.3)
    ##  ggrepel           0.9.6    2024-09-07 [1] CRAN (R 4.4.3)
    ##  ggsignif          0.6.4    2022-10-13 [1] CRAN (R 4.4.0)
    ##  glue              1.7.0    2024-01-09 [1] CRAN (R 4.4.0)
    ##  gmodels         * 2.19.1   2024-03-06 [1] CRAN (R 4.4.1)
    ##  gridExtra         2.3      2017-09-09 [1] CRAN (R 4.4.0)
    ##  gtable            0.3.6    2024-10-25 [1] CRAN (R 4.4.3)
    ##  gtools          * 3.9.5    2023-11-20 [1] CRAN (R 4.4.0)
    ##  haven           * 2.5.4    2023-11-30 [1] CRAN (R 4.4.0)
    ##  Hmisc           * 5.1-3    2024-05-28 [1] CRAN (R 4.4.0)
    ##  hms               1.1.3    2023-03-21 [1] CRAN (R 4.4.0)
    ##  htmlTable         2.4.3    2024-07-21 [1] CRAN (R 4.4.3)
    ##  htmltools         0.5.8.1  2024-04-04 [1] CRAN (R 4.4.0)
    ##  htmlwidgets       1.6.4    2023-12-06 [1] CRAN (R 4.4.0)
    ##  httr              1.4.7    2023-08-15 [1] CRAN (R 4.4.0)
    ##  insight           1.3.1    2025-06-30 [1] CRAN (R 4.4.3)
    ##  jquerylib         0.1.4    2021-04-26 [1] CRAN (R 4.4.0)
    ##  jsonlite          2.0.0    2025-03-27 [1] CRAN (R 4.4.3)
    ##  kableExtra      * 1.4.0    2024-01-24 [1] CRAN (R 4.4.0)
    ##  knitr           * 1.50     2025-03-16 [1] CRAN (R 4.4.3)
    ##  labeling          0.4.3    2023-08-29 [1] CRAN (R 4.4.0)
    ##  lattice           0.22-6   2024-03-20 [1] CRAN (R 4.4.0)
    ##  lifecycle         1.0.4    2023-11-07 [1] CRAN (R 4.4.0)
    ##  lme4            * 1.1-35.3 2024-04-16 [1] CRAN (R 4.4.0)
    ##  lmtest          * 0.9-40   2022-03-21 [1] CRAN (R 4.4.0)
    ##  magrittr          2.0.3    2022-03-30 [1] CRAN (R 4.4.0)
    ##  marginaleffects * 0.20.1   2024-05-08 [1] CRAN (R 4.4.0)
    ##  MASS              7.3-60.2 2024-04-24 [1] local
    ##  Matrix          * 1.7-0    2024-03-22 [1] CRAN (R 4.4.0)
    ##  memoise           2.0.1    2021-11-26 [1] CRAN (R 4.4.0)
    ##  minqa             1.2.7    2024-05-20 [1] CRAN (R 4.4.0)
    ##  mnormt            2.1.1    2022-09-26 [1] CRAN (R 4.4.0)
    ##  multcomp          1.4-28   2025-01-29 [1] CRAN (R 4.4.3)
    ##  mvtnorm           1.2-5    2024-05-21 [1] CRAN (R 4.4.1)
    ##  nlme              3.1-164  2023-11-27 [1] CRAN (R 4.4.0)
    ##  nloptr            2.0.3    2022-05-26 [1] CRAN (R 4.4.0)
    ##  nnet              7.3-19   2023-05-03 [1] CRAN (R 4.4.0)
    ##  parameters        0.27.0   2025-07-09 [1] CRAN (R 4.4.0)
    ##  performance       0.14.0   2025-05-22 [1] CRAN (R 4.4.3)
    ##  pillar            1.11.0   2025-07-04 [1] CRAN (R 4.4.3)
    ##  pkgbuild          1.4.8    2025-05-26 [1] CRAN (R 4.4.3)
    ##  pkgconfig         2.0.3    2019-09-22 [1] CRAN (R 4.4.0)
    ##  pkgload           1.4.1    2025-09-23 [1] CRAN (R 4.4.3)
    ##  plyr            * 1.8.9    2023-10-02 [1] CRAN (R 4.4.0)
    ##  psych           * 2.5.6    2025-06-23 [1] CRAN (R 4.4.3)
    ##  purrr           * 1.0.2    2023-08-10 [1] CRAN (R 4.4.0)
    ##  qacDR           * 0.1.0    2025-03-26 [1] Github (rkabacoff/qacDR@fd1d6a0)
    ##  R6                2.6.1    2025-02-15 [1] CRAN (R 4.4.3)
    ##  RColorBrewer      1.1-3    2022-04-03 [1] CRAN (R 4.4.0)
    ##  Rcpp              1.0.12   2024-01-09 [1] CRAN (R 4.4.0)
    ##  readr             2.1.5    2024-01-10 [1] CRAN (R 4.4.0)
    ##  remotes           2.5.0    2024-03-17 [1] CRAN (R 4.4.0)
    ##  rlang             1.1.4    2024-06-04 [1] CRAN (R 4.4.0)
    ##  rmarkdown         2.29     2024-11-04 [1] CRAN (R 4.4.3)
    ##  rpart             4.1.23   2023-12-05 [1] CRAN (R 4.4.0)
    ##  rprojroot         2.1.1    2025-08-26 [1] CRAN (R 4.4.3)
    ##  rstatix           0.7.2    2023-02-01 [1] CRAN (R 4.4.0)
    ##  rstudioapi        0.17.1   2024-10-22 [1] CRAN (R 4.4.3)
    ##  sandwich        * 3.1-1    2024-09-15 [1] CRAN (R 4.4.3)
    ##  sass              0.4.10   2025-04-11 [1] CRAN (R 4.4.3)
    ##  scales            1.4.0    2025-04-24 [1] CRAN (R 4.4.3)
    ##  sessioninfo       1.2.3    2025-02-05 [1] CRAN (R 4.4.3)
    ##  sjlabelled      * 1.2.0    2022-04-10 [1] CRAN (R 4.4.0)
    ##  sjmisc            2.8.10   2024-05-13 [1] CRAN (R 4.4.0)
    ##  sjPlot          * 2.8.17   2024-11-29 [1] CRAN (R 4.4.3)
    ##  sjstats           0.19.1   2025-06-13 [1] CRAN (R 4.4.3)
    ##  stringi           1.8.4    2024-05-06 [1] CRAN (R 4.4.0)
    ##  stringr           1.5.1    2023-11-14 [1] CRAN (R 4.4.0)
    ##  survival          3.5-8    2024-02-14 [1] CRAN (R 4.4.0)
    ##  svglite           2.1.3    2023-12-08 [1] CRAN (R 4.4.0)
    ##  systemfonts       1.1.0    2024-05-15 [1] CRAN (R 4.4.0)
    ##  texreg            1.39.4   2024-07-24 [1] CRAN (R 4.4.3)
    ##  TH.data           1.1-3    2025-01-17 [1] CRAN (R 4.4.3)
    ##  tibble            3.2.1    2023-03-20 [1] CRAN (R 4.4.0)
    ##  tidyr           * 1.3.1    2024-01-24 [1] CRAN (R 4.4.0)
    ##  tidyselect        1.2.1    2024-03-11 [1] CRAN (R 4.4.0)
    ##  tzdb              0.4.0    2023-05-12 [1] CRAN (R 4.4.0)
    ##  usethis         * 3.2.1    2025-09-06 [1] CRAN (R 4.4.3)
    ##  vctrs             0.6.5    2023-12-01 [1] CRAN (R 4.4.0)
    ##  viridisLite       0.4.2    2023-05-02 [1] CRAN (R 4.4.1)
    ##  vtable          * 1.4.8    2024-12-21 [1] CRAN (R 4.4.3)
    ##  withr             3.0.2    2024-10-28 [1] CRAN (R 4.4.3)
    ##  xfun              0.52     2025-04-02 [1] CRAN (R 4.4.3)
    ##  xml2              1.3.6    2023-12-04 [1] CRAN (R 4.4.0)
    ##  xtable            1.8-4    2019-04-21 [1] CRAN (R 4.4.0)
    ##  yaml              2.3.8    2023-12-11 [1] CRAN (R 4.4.0)
    ##  zoo             * 1.8-12   2023-04-13 [1] CRAN (R 4.4.0)
    ##
    ##  [1] C:/Program Files/R/R-4.4.0/library
    ##  * ── Packages attached to the search path.
    ##
    ## ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────