Adding indices and computing reliability estimates

2024-02-22

Tidycomm provides a workflow to quickly add mean/sum indices of several variables to the dataset and compute reliability estimates for those added indices:

Once again, we will again sample data from the Worlds of Journalism 2012-16 study for demonstration purposes.

WoJ
#> # A tibble: 1,200 × 15
#>    country   reach employment temp_contract autonomy_selection autonomy_emphasis
#>    <fct>     <fct> <chr>      <fct>                      <dbl>             <dbl>
#>  1 Germany   Nati… Full-time  Permanent                      5                 4
#>  2 Germany   Nati… Full-time  Permanent                      3                 4
#>  3 Switzerl… Regi… Full-time  Permanent                      4                 4
#>  4 Switzerl… Local Part-time  Permanent                      4                 5
#>  5 Austria   Nati… Part-time  Permanent                      4                 4
#>  6 Switzerl… Local Freelancer <NA>                           4                 4
#>  7 Germany   Local Full-time  Permanent                      4                 4
#>  8 Denmark   Nati… Full-time  Permanent                      3                 3
#>  9 Switzerl… Local Full-time  Permanent                      5                 5
#> 10 Denmark   Nati… Full-time  Permanent                      2                 4
#> # ℹ 1,190 more rows
#> # ℹ 9 more variables: ethics_1 <dbl>, ethics_2 <dbl>, ethics_3 <dbl>,
#> #   ethics_4 <dbl>, work_experience <dbl>, trust_parliament <dbl>,
#> #   trust_government <dbl>, trust_parties <dbl>, trust_politicians <dbl>

ethics_1 to ethics_4 measure agreement with statements concerning ethics in journalism and may be combined into an index of ‘ethical flexbility’, while the items starting with trust_ measure trust in various political institutions and thus may be combined into an index of trust in politics.

Add mean and sum indices

add_index() adds a mean index of specified variables to the data. The second (or first, if used in a pipe) argument is the name of index variable to be created:

WoJ %>% 
  add_index(ethical_flexibility, ethics_1, ethics_2, ethics_3, ethics_4) %>%
  # Select variables of relevance for output
  dplyr::select(ethical_flexibility, ethics_1, ethics_2, ethics_3, ethics_4)
#> # A tibble: 1,200 × 5
#>    ethical_flexibility ethics_1 ethics_2 ethics_3 ethics_4
#>                  <dbl>    <dbl>    <dbl>    <dbl>    <dbl>
#>  1                2           2        3        2        1
#>  2                1.5         1        2        2        1
#>  3                2.25        2        4        2        1
#>  4                1.75        1        3        1        2
#>  5                2           2        3        2        1
#>  6                3.25        2        4        4        3
#>  7                2           1        3        2        2
#>  8                3.5         2        4        4        4
#>  9                1.75        1        2        1        3
#> 10                3.25        1        4        4        4
#> # ℹ 1,190 more rows

To create a sum index instead, set type = "sum":

WoJ %>% 
  add_index(ethical_flexibility, ethics_1, ethics_2, ethics_3, ethics_4, type = "sum") %>%
  # Select variables of relevance for output
  dplyr::select(ethical_flexibility, ethics_1, ethics_2, ethics_3, ethics_4)
#> # A tibble: 1,200 × 5
#>    ethical_flexibility ethics_1 ethics_2 ethics_3 ethics_4
#>                  <dbl>    <dbl>    <dbl>    <dbl>    <dbl>
#>  1                   8        2        3        2        1
#>  2                   6        1        2        2        1
#>  3                   9        2        4        2        1
#>  4                   7        1        3        1        2
#>  5                   8        2        3        2        1
#>  6                  13        2        4        4        3
#>  7                   8        1        3        2        2
#>  8                  14        2        4        4        4
#>  9                   7        1        2        1        3
#> 10                  13        1        4        4        4
#> # ℹ 1,190 more rows

Compute reliability estimates of created indices

Use get_reliability() to compute reliability/internal consistency estimates for indices created with add_index(). Passing no further arguments to the function will automatically compute reliability estimates for all indices created with add_index() found in the data and output Cronbach’s \(\alpha\) along with descriptives and index information.

# Add two indices to data
WoJ <- WoJ %>% 
  add_index(ethical_flexibility, ethics_1, ethics_2, ethics_3, ethics_4) %>%
  add_index(trust_in_politics, trust_parliament, trust_government, trust_parties, trust_politicians)

WoJ %>% 
  get_reliability()
#> # A tibble: 2 × 5
#>   Index               Index_of                           M    SD Cronbachs_Alpha
#> * <chr>               <chr>                          <dbl> <dbl>           <dbl>
#> 1 ethical_flexibility ethics_1, ethics_2, ethics_3,…  2.45 0.777           0.612
#> 2 trust_in_politics   trust_parliament, trust_gover…  2.70 0.652           0.856

If you only want reliability estimates for specific indices, pass their names as function arguments.

WoJ %>% 
  get_reliability(trust_in_politics)
#> # A tibble: 1 × 5
#>   Index             Index_of                             M    SD Cronbachs_Alpha
#> * <chr>             <chr>                            <dbl> <dbl>           <dbl>
#> 1 trust_in_politics trust_parliament, trust_governm…  2.70 0.652           0.856

Essentially, get_reliability() provides a wrapper for the ci.reliability function from the MBESS package. Thus, all arguments of MBESS::ci.reliability() can be passed to get_reliability(). For example, to output \(\omega\) instead of Cronbach’s \(\alpha\) including robust maximum likelihood confidence intervals, you can type:

WoJ %>% 
  get_reliability(type = 'omega', interval.type = 'mlr')
#> # A tibble: 2 × 8
#>   Index               Index_of                 M    SD Omega CI_LL CI_UL CI_Type
#> * <chr>               <chr>                <dbl> <dbl> <dbl> <dbl> <dbl> <chr>  
#> 1 ethical_flexibility ethics_1, ethics_2,…  2.45 0.777 0.626 0.590 0.663 robust…
#> 2 trust_in_politics   trust_parliament, t…  2.70 0.652 0.856 0.840 0.871 robust…

See the function documentation for more info (and don’t forget to cite the MBESS package if using get_reliability()).