library(kirkegaard)
## Loading required package: tidyverse
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
## Loading required package: magrittr
##
##
## Attaching package: 'magrittr'
##
##
## The following object is masked from 'package:purrr':
##
## set_names
##
##
## The following object is masked from 'package:tidyr':
##
## extract
##
##
## Loading required package: weights
##
## Loading required package: Hmisc
##
##
## Attaching package: 'Hmisc'
##
##
## The following objects are masked from 'package:dplyr':
##
## src, summarize
##
##
## The following objects are masked from 'package:base':
##
## format.pval, units
##
##
## Loading required package: assertthat
##
##
## Attaching package: 'assertthat'
##
##
## The following object is masked from 'package:tibble':
##
## has_name
##
##
## Loading required package: psych
##
##
## Attaching package: 'psych'
##
##
## The following object is masked from 'package:Hmisc':
##
## describe
##
##
## The following objects are masked from 'package:ggplot2':
##
## %+%, alpha
##
##
##
## Attaching package: 'kirkegaard'
##
##
## The following object is masked from 'package:psych':
##
## rescale
##
##
## The following object is masked from 'package:assertthat':
##
## are_equal
##
##
## The following object is masked from 'package:purrr':
##
## is_logical
##
##
## The following object is masked from 'package:base':
##
## +
load_packages(
haven
)
theme_set(theme_bw())
options(
digits = 3
)
https://www.thearda.com/data-archive?fid=PRRI1216
d = read_spss("data/PRRI December 2016 Survey.SAV")
vars = d %>% df_var_table()
d$blocked = d$Q2 %>%
case_match(
1 ~ T,
2 ~ F,
.default = NA
)
d$ideology = d$IDEO %>%
as_factor() %>%
case_when(
. %in% c("Don't know", "Refused") ~ NA,
.default = .
) %>% fct_drop() %>%
fct_relevel("Moderate")
d$highest_edu = d$EDUC %>% as_factor() %>%
case_when(
. %in% c("Refused") ~ NA,
.default = .
) %>% fct_drop() %>%
fct_relevel("Some college")
d$age = d$AGE %>%
as.numeric() %>%
case_when(
. %in% c("99") ~ NA,
.default = .
)
d$sex = d$SEX %>% as_factor()
d$religion = d$RELIG %>%
as_factor() %>%
case_when(
. %in% c("Don't know", "Refused") ~ NA,
. %in% c("Nothing in particular", "Atheist", "Agnostic") ~ "Non-religious",
.default = .
) %>%
fct_lump_min(min = 20) %>%
fct_drop() %>%
fct_relevel("Catholic, Roman Catholic")
d$race = d$RACE %>%
as_factor() %>%
case_when(
. %in% c("Don't know", "Refused") ~ NA,
.default = .
) %>% fct_drop() %>%
fct_lump_min(min = 20)
d$region = d$DIVISION %>%
as_factor() %>%
case_when(
. %in% c("Don't know", "Refused") ~ NA,
.default = .
) %>% fct_drop()
#main model
full_fit = compare_predictors(
d %>% df_standardize(),
outcome = "blocked",
predictors = c("sex", "ideology", "highest_edu", "religion", "age", "region", "race"),
family = "binomial"
) %>% mutate(
term = term %>% factor(levels = unique(term) %>% rev())
)
## Skipped STATE because it is a character (string)
## Skipped RELIGOPEN because it is a character (string)
## Skipped DENOMOPEN because it is a character (string)
## Skipped Q5_1 because it is ranged from 0 to 1 (a proportion, maybe)
## Skipped Q5_2 because it is ranged from 0 to 1 (a proportion, maybe)
## Skipped Q5_3 because it is ranged from 0 to 1 (a proportion, maybe)
## Skipped Q5_4 because it is ranged from 0 to 1 (a proportion, maybe)
## Skipped Q5_5 because it is ranged from 0 to 1 (a proportion, maybe)
## Skipped Q5_6 because it is ranged from 0 to 1 (a proportion, maybe)
## Skipped Q5_7 because it is ranged from 0 to 1 (a proportion, maybe)
## Skipped Q5_8 because it is ranged from 0 to 1 (a proportion, maybe)
## Skipped blocked because it is a logical (boolean)
## Skipped ideology because it is class factor
## Skipped highest_edu because it is class factor
## Skipped sex because it is class factor
## Skipped religion because it is class factor
## Skipped race because it is class factor
## Skipped region because it is class factor
full_fit %>%
kirkegaard::GG_plot_models() +
labs(
title = "After the election, did you block, unfriend, or stop following someone on a social networking site
because of what they posted about politics?",
subtitle = "PRRI, December 2016 Survey, n = 1004, USA"
)
#versions
write_sessioninfo()
## R version 4.4.2 (2024-10-31)
## Platform: x86_64-pc-linux-gnu
## Running under: Linux Mint 21.1
##
## Matrix products: default
## BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.10.0
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0
##
## locale:
## [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
## [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
## [5] LC_MONETARY=en_DK.UTF-8 LC_MESSAGES=en_US.UTF-8
## [7] LC_PAPER=en_DK.UTF-8 LC_NAME=C
## [9] LC_ADDRESS=C LC_TELEPHONE=C
## [11] LC_MEASUREMENT=en_DK.UTF-8 LC_IDENTIFICATION=C
##
## time zone: Europe/Brussels
## tzcode source: system (glibc)
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] haven_2.5.4 kirkegaard_2024-11-25 psych_2.4.6.26
## [4] assertthat_0.2.1 weights_1.0.4 Hmisc_5.1-3
## [7] magrittr_2.0.3 lubridate_1.9.3 forcats_1.0.0
## [10] stringr_1.5.1 dplyr_1.1.4 purrr_1.0.2
## [13] readr_2.1.5 tidyr_1.3.1 tibble_3.2.1
## [16] ggplot2_3.5.1 tidyverse_2.0.0
##
## loaded via a namespace (and not attached):
## [1] tidyselect_1.2.1 farver_2.1.2 fastmap_1.2.0 digest_0.6.37
## [5] rpart_4.1.23 timechange_0.3.0 lifecycle_1.0.4 cluster_2.1.8
## [9] survival_3.7-0 gdata_3.0.0 compiler_4.4.2 rlang_1.1.4
## [13] sass_0.4.9 tools_4.4.2 utf8_1.2.4 yaml_2.3.10
## [17] data.table_1.16.0 knitr_1.48 labeling_0.4.3 htmlwidgets_1.6.4
## [21] mnormt_2.1.1 withr_3.0.1 foreign_0.8-87 nnet_7.3-19
## [25] grid_4.4.2 fansi_1.0.6 jomo_2.7-6 colorspace_2.1-1
## [29] mice_3.16.0 scales_1.3.0 gtools_3.9.5 iterators_1.0.14
## [33] MASS_7.3-61 cli_3.6.3 rmarkdown_2.28 generics_0.1.3
## [37] rstudioapi_0.16.0 tzdb_0.4.0 minqa_1.2.8 cachem_1.1.0
## [41] splines_4.4.2 parallel_4.4.2 base64enc_0.1-3 vctrs_0.6.5
## [45] boot_1.3-31 glmnet_4.1-8 Matrix_1.7-1 jsonlite_1.8.8
## [49] hms_1.1.3 mitml_0.4-5 Formula_1.2-5 htmlTable_2.4.3
## [53] foreach_1.5.2 jquerylib_0.1.4 glue_1.7.0 nloptr_2.1.1
## [57] pan_1.9 codetools_0.2-19 stringi_1.8.4 gtable_0.3.5
## [61] shape_1.4.6.1 lme4_1.1-35.5 munsell_0.5.1 pillar_1.9.0
## [65] htmltools_0.5.8.1 R6_2.5.1 evaluate_0.24.0 lattice_0.22-5
## [69] highr_0.11 backports_1.5.0 broom_1.0.6 bslib_0.8.0
## [73] Rcpp_1.0.13 gridExtra_2.3 nlme_3.1-166 checkmate_2.3.2
## [77] xfun_0.47 pkgconfig_2.0.3