UPandweightstesting13

1 Report with UPNUMBERorig

1.1 Application de la procédure normale (division 2022 ; CoefRed 2009

Rappel méthodologie UP des NCS2 s’agissant du redressement des variables numériques

  • 2020 : division par nombre de paroisses dans UP quand question posée par UP

    • Pour les nombres, c’est le cas pour les variables STAFF, mais par pour les variables PARTICIPANTS (ci-après abregé PART.)
  • 2008 : utilisation d’un coefficient de redressement pour STAFF et pour PARTICIPANTS

1.1.1 Benchmarks

1.1.1.1 Non-catholiques

Pour pouvoir évaluer si la procédure normale donne lieu à des chiffres crédibles, il nous faut disposer de points de référence. Voyons d’abord l’évolution des variables concernées chez les non-catholiques.

Moyenne sans weight coefTrad12

Code
# without trad weight
data %>%
  group_by(YEAR) %>%
  filter(TRAD12 != "Catholiques romaines") %>%
  summarise(across(all_of(varsToCompare),
                   ~ mean(.x, na.rm = T))) %>%
  pivot_longer(cols = -YEAR, names_to = "VARIABLE", values_to = "MEAN") %>%
  arrange(VARIABLE, YEAR) %>%
  pivot_wider(names_from = YEAR,
              values_from = MEAN) %>%
  clean_names() %>%
  mutate(changePerc = paste(round(100 * ((x2022 - x2009) / x2009)),"%"),
         changePerc = ifelse(!str_detect(changePerc, "^-"),
                             paste0("+", changePerc),
                             changePerc)) %>%
  arrange(-str_detect(variable, "^NUM")) %>%
  tab_df(alternate.rows = T, title = "Means among non-Catholics (w/out trad12-weight)")
Means among non-Catholics (w/out trad12-weight)
variable x2009 x2022 changePerc
NUMADLTS 87.17 98.53 +13 %
NUMATTND 78.83 69.05 -12 %
NUMREGLR 122.22 141.42 +16 %
NUMTOTAL 514.30 395.90 -23 %
BOARDGEN 3.06 3.12 +2 %
BOARDNUM 7.38 7.43 +1 %
FTSTAFF 1.35 1.19 -12 %
FTSTAFFWM 0.43 0.73 +71 %
STAFFGEN 2.83 3.75 +33 %
STAFFNUM 3.23 4.54 +40 %
TEENRGLR 20.52 21.99 +7 %
VLTRS NaN 69.50 +NaN %
WMVLTRS NaN 43.81 +NaN %

Moyenne avec coefTrad12

Code
# with trad weight
data %>%
  group_by(YEAR) %>% 
  filter(TRAD12 != "Catholiques romaines") %>% 
  summarise(across(all_of(varsToCompare),
                   ~ weighted.mean(.x, w = coefTrad12, na.rm = T))) %>% 
  pivot_longer(cols = -YEAR, names_to = "VARIABLE", values_to = "MEAN") %>% 
  arrange(VARIABLE, YEAR) %>% 
  pivot_wider(names_from = YEAR, 
              values_from = MEAN) %>% 
  clean_names() %>% 
  mutate(changePerc = paste(round(100 * ((x2022 - x2009) / x2009)),"%"),
         changePerc = ifelse(!str_detect(changePerc, "^-"),
                             paste0("+", changePerc),
                             changePerc)) %>% 
  arrange(-str_detect(variable, "^NUM")) %>% 
  tab_df(alternate.rows = T, title = "Means among non-Catholics (w/ trad12-weight)")
Means among non-Catholics (w/ trad12-weight)
variable x2009 x2022 changePerc
NUMADLTS 90.22 98.31 +9 %
NUMATTND 79.60 73.99 -7 %
NUMREGLR 126.06 138.16 +10 %
NUMTOTAL 524.41 355.71 -32 %
BOARDGEN 3.12 3.06 -2 %
BOARDNUM 7.43 7.60 +2 %
FTSTAFF 1.39 1.16 -16 %
FTSTAFFWM 0.43 0.73 +70 %
STAFFGEN 2.99 3.30 +10 %
STAFFNUM 3.37 3.92 +16 %
TEENRGLR 21.12 20.15 -5 %
VLTRS NaN 68.05 +NaN %
WMVLTRS NaN 42.10 +NaN %

L’ajout de coefTrad12 a tendance à rendre les choses plus crédibles, ce qui tend à valider ce weight. En revanche, on notera que certaines différences sont étranges, notamment NUMREG, censée être plus fiable que les autres. L’augmentation FTSTAFFWM est assez énorme, et on la constate aussi chez les catholiques

1.1.1.2 Catholiques “normaux”

Voyons maintenant l’évolution des variables au sein des paroisses catholiques ‘normales’, c’est-à-dire pour lesquelles aucun traitement n’est appliqué, ni par le NCS 1, ni par le NCS 2.

Code
keep2009 <- data %>% 
  filter(CoefRed_MEMBER == 1,
         CoefRed_STAFF == 1,
         TRAD12 == "Catholiques romaines",
         YEAR == "2009") %>% 
  pull(LINKCODE)

keep2022 <- data %>% 
  filter(UP_n_parish == 1, 
         TRAD12 == "Catholiques romaines",
         YEAR == "2022") %>% 
  pull(LINKCODE)

# length(keep2009)
# length(keep2022)

keep <- append(keep2009, keep2022)

data %>% 
  filter(LINKCODE %in% keep) %>%
  group_by(YEAR) %>% 
  summarise(across(all_of(varsToCompare),
                   ~ mean(.x, na.rm = T))) %>% 
  pivot_longer(cols = -YEAR, names_to = "VARIABLE", values_to = "MEAN") %>% 
  arrange(VARIABLE, YEAR) %>% 
  pivot_wider(names_from = YEAR, 
              values_from = MEAN) %>% 
  clean_names() %>% 
  mutate(changePerc = paste(round(100 * ((x2022 - x2009) / x2009)),"%"),
         changePerc = ifelse(!str_detect(changePerc, "^-"),
                             paste0("+", changePerc),
                             changePerc)) %>% 
  arrange(-str_detect(variable, "^NUM")) %>% 
  tab_df(alternate.rows = T, title = "Means among 'normal' caths (without up Weight)")
Means among 'normal' caths (without up Weight)
variable x2009 x2022 changePerc
NUMADLTS 214.85 218.37 +2 %
NUMATTND 162.86 110.24 -32 %
NUMREGLR 287.91 303.34 +5 %
NUMTOTAL 1888.50 1059.17 -44 %
BOARDGEN 4.75 4.66 -2 %
BOARDNUM 9.37 9.48 +1 %
FTSTAFF 1.97 2.19 +11 %
FTSTAFFWM 1.08 0.88 -18 %
STAFFGEN 5.75 6.23 +8 %
STAFFNUM 8.89 9.67 +9 %
TEENRGLR 39.37 45.04 +14 %
VLTRS NaN 81.66 +NaN %
WMVLTRS NaN 54.90 +NaN %

On notera que l’ajout ou non de coefUp ne change rien (cf. filtres).

1.2 Moyennes parmis les catholiques et avec coefUp

Le but de cette section est de voir si les moyennes, en appliquant la procédure prévue, est crédible. Les plots et tableaux suivants prennent toutes les congrégations catholiques en compte (mais uniquement les catholiques).

1.2.0.1 Pas de traitement du tout

Code
compare_meansV2(data = data, n_up_apply = T) %>% 
  tab_df(alternate.rows = T, title = "No treatment at all (caths only)")
No treatment at all (caths only)
variable x2009 x2022 changePerc
NUMADLTS 222.83 255.50 +15 %
NUMATTND 151.74 103.69 -32 %
NUMREGLR 174.28 376.98 +116 %
NUMTOTAL 1572.84 1186.59 -25 %
BOARDGEN 4.61 5.49 +19 %
BOARDNUM 9.03 10.41 +15 %
FTSTAFF 2.01 3.19 +59 %
FTSTAFFWM 0.64 1.07 +69 %
STAFFGEN 5.13 8.00 +56 %
STAFFNUM 8.60 10.27 +19 %
TEENRGLR 35.94 49.37 +37 %
VLTRS NaN 111.17 +NaN %
WMVLTRS NaN 75.45 +NaN %
Code
compare_dists(data = data, coefUp = T)
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Warning: Removed 366 rows containing non-finite values (`stat_bin()`).

1.2.0.2 Uniquement traitement 2009

Code
# both red.
compare_meansV2(data = DATA_only_Coefred, n_up_apply = T) %>% 
  tab_df(alternate.rows = T, title = "2009 treatment only (caths only)")
2009 treatment only (caths only)
variable x2009 x2022 changePerc
NUMADLTS 126.32 255.50 +102 %
NUMATTND 82.84 103.69 +25 %
NUMREGLR 130.92 376.98 +188 %
NUMTOTAL 893.88 1186.59 +33 %
BOARDGEN 4.61 5.49 +19 %
BOARDNUM 9.03 10.41 +15 %
FTSTAFF 1.27 3.19 +151 %
FTSTAFFWM 0.48 1.07 +123 %
STAFFGEN 3.77 8.00 +112 %
STAFFNUM 6.18 10.27 +66 %
TEENRGLR 35.94 49.37 +37 %
VLTRS NaN 111.17 +NaN %
WMVLTRS NaN 75.45 +NaN %
Code
compare_dists(data = DATA_only_Coefred, coefUp = T)
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Warning: Removed 366 rows containing non-finite values (`stat_bin()`).

1.2.0.3 Uniquement traitement 2022

Code
compare_meansV2(data = DATA_only_2022_Red, T) %>% 
  tab_df(alternate.rows = T, title = "2020 treatment only (caths only)")
2020 treatment only (caths only)
variable x2009 x2022 changePerc
NUMADLTS 222.83 255.50 +15 %
NUMATTND 151.74 103.69 -32 %
NUMREGLR 174.28 376.98 +116 %
NUMTOTAL 1572.84 1186.59 -25 %
BOARDGEN 4.61 1.19 -74 %
BOARDNUM 9.03 2.35 -74 %
FTSTAFF 2.01 0.84 -59 %
FTSTAFFWM 0.64 0.31 -52 %
STAFFGEN 5.13 2.20 -57 %
STAFFNUM 8.60 2.83 -67 %
TEENRGLR 35.94 12.53 -65 %
VLTRS NaN 30.16 +NaN %
WMVLTRS NaN 20.31 +NaN %
Code
compare_dists(data = DATA_only_2022_Red, coefUp = T)
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Warning: Removed 366 rows containing non-finite values (`stat_bin()`).

1.2.0.4 Les deux traitements

Code
compare_meansV2(data = DATA_bothWavesRed, T) %>% 
  tab_df(alternate.rows = T,
         title = "Both treatments (caths only")
Both treatments (caths only
variable x2009 x2022 changePerc
NUMADLTS 126.32 255.50 +102 %
NUMATTND 82.84 103.69 +25 %
NUMREGLR 130.92 376.98 +188 %
NUMTOTAL 893.88 1186.59 +33 %
BOARDGEN 4.61 1.53 -67 %
BOARDNUM 9.03 3.06 -66 %
FTSTAFF 1.27 0.92 -28 %
FTSTAFFWM 0.48 0.32 -34 %
STAFFGEN 3.77 2.63 -30 %
STAFFNUM 6.18 3.54 -43 %
TEENRGLR 35.94 13.79 -62 %
VLTRS NaN 34.53 +NaN %
WMVLTRS NaN 23.04 +NaN %
Code
compare_dists(data = DATA_bothWavesRed, coefUp = T)
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Warning: Removed 366 rows containing non-finite values (`stat_bin()`).

Rappel : le traitement prévu pour 2022 (la division par le nombre de paroisses dans l’UP) s’applique aux variables STAFF, mais pas PARTICIPANTS.

On voit que les résultats ne sont pas très crédibles, notamment au vu des augmentations drastiques des moyennes pour les variables PARTICIPANTS.

Une hypothèse probable est que certains répondants UP ont répondu à ces questions comme si on leur posait la question pour tout l’UP. En effet, les questions STAFF (posées par UP) viennent avant les questions PART.

En revanche, l’inverse n’est pas très crédible : la baisse dans les variables STAFF ne peut pas s’expliquer par le fait que les répondants n’auraient pas compris qu’on parle.

1.2.0.5 Traitement division 2022 appliqué aux variables PART.

En partant de l’hypothèse mentionnée, voyons ce que cela donne si l’on faisait comme si nous avions posé les questions PART. par UP :

Code
compare_meansV2(data = DATA_bothWavesRed_UpDivMbrs22, T) %>% 
  tab_df(alternate.rows = T, title = "extra division for PART. in 2022")
extra division for PART. in 2022
variable x2009 x2022 changePerc
NUMADLTS 126.32 61.60 -51 %
NUMATTND 82.84 26.90 -68 %
NUMREGLR 130.92 86.95 -34 %
NUMTOTAL 893.88 283.80 -68 %
BOARDGEN 4.61 1.53 -67 %
BOARDNUM 9.03 3.06 -66 %
FTSTAFF 1.27 0.92 -28 %
FTSTAFFWM 0.48 0.32 -34 %
STAFFGEN 3.77 2.63 -30 %
STAFFNUM 6.18 3.54 -43 %
TEENRGLR 35.94 13.79 -62 %
VLTRS NaN 34.53 +NaN %
WMVLTRS NaN 23.04 +NaN %
Code
compare_dists(data = DATA_bothWavesRed_UpDivMbrs22, coefUp = T)
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Warning: Removed 366 rows containing non-finite values (`stat_bin()`).

1.3 Moyennes parmis les catholiques et sans coefUp

Le but de cette section est de voir si les moyennes, en appliquant la procédure prévue, est crédible.

1.3.0.1 Pas de traitement du tout

Code
compare_meansV2(data = data, n_up_apply = F) %>%    
  tab_df(alternate.rows = F,          
         title = "No treatment at all (caths only)") 
No treatment at all (caths only)
variable x2009 x2022 changePerc
NUMADLTS 222.83 218.00 -2 %
NUMATTND 151.74 98.49 -35 %
NUMREGLR 174.28 316.45 +82 %
NUMTOTAL 1572.84 1031.55 -34 %
BOARDGEN 4.61 4.78 +4 %
BOARDNUM 9.03 9.45 +5 %
FTSTAFF 2.01 3.26 +62 %
FTSTAFFWM 0.64 1.22 +92 %
STAFFGEN 5.13 8.52 +66 %
STAFFNUM 8.60 11.37 +32 %
TEENRGLR 35.94 50.91 +42 %
VLTRS NaN 120.16 +NaN %
WMVLTRS NaN 81.25 +NaN %
Code
compare_dists(data = data, coefUp = F) 
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Warning: Removed 366 rows containing non-finite values (`stat_bin()`).

1.3.0.2 Uniquement traitement 2009

Code
# both red. 
compare_meansV2(data = DATA_only_Coefred, n_up_apply = F) %>%    
  tab_df(alternate.rows = T,          
         title = "2009 treatment only (caths only)")
2009 treatment only (caths only)
variable x2009 x2022 changePerc
NUMADLTS 126.32 218.00 +73 %
NUMATTND 82.84 98.49 +19 %
NUMREGLR 130.92 316.45 +142 %
NUMTOTAL 893.88 1031.55 +15 %
BOARDGEN 4.61 4.78 +4 %
BOARDNUM 9.03 9.45 +5 %
FTSTAFF 1.27 3.26 +156 %
FTSTAFFWM 0.48 1.22 +154 %
STAFFGEN 3.77 8.52 +126 %
STAFFNUM 6.18 11.37 +84 %
TEENRGLR 35.94 50.91 +42 %
VLTRS NaN 120.16 +NaN %
WMVLTRS NaN 81.25 +NaN %
Code
compare_dists(data = DATA_only_Coefred, coefUp = F)
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Warning: Removed 366 rows containing non-finite values (`stat_bin()`).

1.3.0.3 Uniquement traitement 2022

Code
compare_meansV2(data = DATA_only_2022_Red, F) %>%    
  tab_df(alternate.rows = T,          
         title = "2020 treatment only (caths only)")
2020 treatment only (caths only)
variable x2009 x2022 changePerc
NUMADLTS 222.83 218.00 -2 %
NUMATTND 151.74 98.49 -35 %
NUMREGLR 174.28 316.45 +82 %
NUMTOTAL 1572.84 1031.55 -34 %
BOARDGEN 4.61 2.38 -48 %
BOARDNUM 9.03 4.77 -47 %
FTSTAFF 2.01 1.45 -28 %
FTSTAFFWM 0.64 0.55 -13 %
STAFFGEN 5.13 3.92 -24 %
STAFFNUM 8.60 5.67 -34 %
TEENRGLR 35.94 26.43 -26 %
VLTRS NaN 55.12 +NaN %
WMVLTRS NaN 36.97 +NaN %
Code
compare_dists(data = DATA_only_2022_Red, coefUp = F)
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Warning: Removed 366 rows containing non-finite values (`stat_bin()`).

1.3.0.4 Les deux traitements

Code
compare_meansV2(data = DATA_bothWavesRed, F) %>%    
  tab_df(alternate.rows = T,          
         title = "Both treatments (caths only")
Both treatments (caths only
variable x2009 x2022 changePerc
NUMADLTS 126.32 218.00 +73 %
NUMATTND 82.84 98.49 +19 %
NUMREGLR 130.92 316.45 +142 %
NUMTOTAL 893.88 1031.55 +15 %
BOARDGEN 4.61 2.45 -47 %
BOARDNUM 9.03 4.95 -45 %
FTSTAFF 1.27 1.43 +12 %
FTSTAFFWM 0.48 0.53 +11 %
STAFFGEN 3.77 4.02 +7 %
STAFFNUM 6.18 5.83 -6 %
TEENRGLR 35.94 25.99 -28 %
VLTRS NaN 56.19 +NaN %
WMVLTRS NaN 37.46 +NaN %
Code
compare_dists(data = DATA_bothWavesRed, coefUp = F)
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Warning: Removed 366 rows containing non-finite values (`stat_bin()`).

Rappel : le traitement prévu pour 2022 (la division par le nombre de paroisses dans l’UP) s’applique aux variables STAFF, mais pas PARTICIPANTS.

On voit que les résultats ne sont pas très crédibles, notamment au vu des augmentations drastiques des moyennes pour les variables PARTICIPANTS.

Une hypothèse probable est que certains répondants UP ont répondu à ces questions comme si on leur posait la question pour tout l’UP. En effet, les questions STAFF (posées par UP) viennent avant les questions PART.

En revanche, l’inverse n’est pas très crédible : la baisse dans les variables STAFF ne peut pas s’expliquer par le fait que les répondants n’auraient pas compris qu’on parle.

1.3.0.5 Traitement division 2022 appliqué aux variables PART.

En partant de l’hypothèse mentionnée, voyons ce que cela donne si l’on faisait comme si nous avions posé les questions PART. par UP :

Code
compare_meansV2(data = DATA_bothWavesRed_UpDivMbrs22, F) %>%    
  tab_df(alternate.rows = T,          
         title = "extra division for PART. in 2022")
extra division for PART. in 2022
variable x2009 x2022 changePerc
NUMADLTS 126.32 114.47 -9 %
NUMATTND 82.84 52.69 -36 %
NUMREGLR 130.92 161.17 +23 %
NUMTOTAL 893.88 550.17 -38 %
BOARDGEN 4.61 2.45 -47 %
BOARDNUM 9.03 4.95 -45 %
FTSTAFF 1.27 1.43 +12 %
FTSTAFFWM 0.48 0.53 +11 %
STAFFGEN 3.77 4.02 +7 %
STAFFNUM 6.18 5.83 -6 %
TEENRGLR 35.94 25.99 -28 %
VLTRS NaN 56.19 +NaN %
WMVLTRS NaN 37.46 +NaN %
Code
compare_dists(data = DATA_bothWavesRed_UpDivMbrs22, coefUp = F)
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Warning: Removed 366 rows containing non-finite values (`stat_bin()`).

1.4 Conclusions provisoires

  1. coefTrad12 semble validé

  2. Au sein des non-catholiques et des catholiques ‘normaux’, les différences semblent environ crédibles

  3. La procédure normale aboutit à des résultats qui ne sont pas très crédibles si l’on prend en compte uniquement (tous) les catholiques

    1. Vrai procédure normale (pas de division en 2022 pour les variables PART.) : variables PART. augment trop
  4. Si on applique en plus la division aux variables PART. en 2022, les résultats sont relativement crédibles (avec coefUp)

    1. Pas vraiment pour les deux variables BOARD (elle ne sont pas divisées par les coefficient en 2009, ce qui explique probablement pourquoi elles sont toujours plus hautes pour cette année. Essayer d’applique le coeff STAFF à ces variables).

1.5 Tâches futures

  1. Solution 1 : identifier les paroisses qui répondent par UP dans PART., et leur appliquer un correctif (redressement par groupe), ou une imputation (redressement individuel des valeurs.

    1. Comment les identifier ?
      1. Qui a des chiffres demesurées
      2. ensuite créer un weight de démesure
        1. soit imputation,
        2. soit coefficient de redressemen
        3. Autre diée : diviser les vars PART par le nomb de paroisses représentées, mais uniquement chez eux, et regarder ce que cela fait aux moyennes
  2. Solution 2 (pas orthogonale à 1) : division par le vrai UPNUMBER. Mais au juste, pourquoi pas essayer avec ce que le répondant pensait. ... BACK TO RAW UPNUMBER.R refait tout depuis le checkpoint, mais avec cette hypothèse.

    1. C’est déjà fait, et les chiffre sont meilleirs
  3. Autres pistes

    1. exclure mission de UPNUMBER

    2. être plus stricte sur les limites aux moyennes

2 Remarques supplémentaires

  • Pour la division, je suis revenu à UPNUMBER tel que formulé par le répondant

  • Variable en question UPNUMBERorig

    • Arugments

      • Pour : S’il a répondu non à Q850, on ne lui a posé aucune questions par UP

      • Contre : la division devrait s’effectuer sur le vrai nombre de paroisses représentée.

    • Nécessité de prendre une décision au plus vite.

3 Identificaton de ceux qui n’ont ‘pas compris’

Parmis ceux à qui on pose certaines questions par UP, qui a compris les PART. comme portant sur l’UP et non la paroisse seule ?

Idée :

  • Le trouver en analysant le rapport entre STAFFNUM et STAFFREG.

  • Le faire pour les données avant traitement des valeurs maxmin$.

Code
output4 <- read_excel("c:/Users/jsenn2/Desktop/VIRTUAL/env/trueScripts/Word/summarize codebook/output4.xlsx")
New names:
• `` -> `...9`
• `` -> `...10`
• `` -> `...11`
Code
vars <- output4 %>% 
  filter(Name %in% varsToCompare) %>% 
  select(Code) %>% 
  mutate(trueCode = if_else(str_detect(Code, "^[0-9]"),
                            paste0("Q", Code),
                            Code)) %>% 
  pull(trueCode)


Caths <- orig_ncs2 %>% 
  select(Q850, Q860, all_of(vars)) %>% 
  mutate(Q850 = trimws(Q850)) %>% 
  filter(Q850 != "")

Caths$Q860 <- ifelse(is.na(Caths$Q860),
                     1,
                     Caths$Q860)

Caths %>% 
  select(-Q850) %>% 
  pivot_longer(-Q860) %>% 
  ggplot(aes(x = Q860, y = value, color = Q860 == 1)) + 
  geom_point() + 
  facet_wrap(~ name, scales = "free") + 
  scale_x_log10() + 
  ggtitle("Caths before any treatment (completely raw ncs2 data, only caths)")
Warning: Removed 252 rows containing missing values (`geom_point()`).

Code
# data %>% 
#   count(YEAR, UPNUMBERorig)
Code
orig_ncs2$NUMREGLR <- orig_ncs2$Q1300

3.1 Ratio entre NUMREGLR et STAFFNUM

3.1.1 NCS2 raw

Code
Caths <- orig_ncs2 %>% 
  select(username, Q850, Q860, all_of(vars)) %>% 
  mutate(Q850 = trimws(Q850)) %>% 
  filter(Q850 != "")

Caths$Q860 <- ifelse(is.na(Caths$Q860),
                     1,
                     Caths$Q860)


manualCheck <- Caths %>% 
  select(username, HASUP = Q850, UPNUMBER = Q860, NUMREGLR = Q1300, STAFFNUM = Q4110, everything())

# manualCheck %>% 
#   mutate(HASUP = ifelse(HASUP != "Non", "Oui", HASUP)) %>% 
#  # na.omit() %>% 
#   mutate(ratio = NUMREGLR / STAFFNUM) %>% 
#   arrange(HASUP, ratio) %>% 
#   select(1:5, ratio, everything()) %>% 
#   writexl::write_xlsx("c:/Users/jsenn2/OneDrive - Université de Lausanne/___whoGotItWrong.xlsx")



cathsRatio <- Caths %>% 
  select(username, HASUP = Q850, UPNUMBER = Q860, NUMREGLR = Q1300, STAFFNUM = Q4110) %>% 
  mutate(HASUP = ifelse(HASUP != "Non", "Oui", HASUP)) %>% 
  na.omit() %>% 
  mutate(ratio = NUMREGLR / STAFFNUM) %>% 
  mutate(`normalized NUMREGLR  / STAFFNUM` = (ratio - min(ratio)) / (max(ratio) - min(ratio)))


cathsRatio %>% 
  select(UPNUMBER, HASUP, STAFFNUM, NUMREGLR, ratio) %>% 
  arrange(HASUP, ratio) %>% 
  tab_df(alternate.rows = T)
UPNUMBER HASUP STAFFNUM NUMREGLR ratio
1 Non 10 10 1.00
1 Non 10 40 4.00
1 Non 15 100 6.67
1 Non 6 40 6.67
1 Non 14 100 7.14
1 Non 7 50 7.14
1 Non 10 80 8.00
1 Non 8 70 8.75
1 Non 4 35 8.75
1 Non 22 200 9.09
1 Non 3 28 9.33
1 Non 30 300 10.00
1 Non 20 200 10.00
1 Non 10 100 10.00
1 Non 7 70 10.00
1 Non 5 50 10.00
1 Non 4 40 10.00
1 Non 19 200 10.53
1 Non 11 120 10.91
1 Non 35 400 11.43
1 Non 35 400 11.43
1 Non 13 150 11.54
1 Non 5 60 12.00
1 Non 12 150 12.50
1 Non 15 200 13.33
1 Non 7 100 14.29
1 Non 7 100 14.29
1 Non 20 300 15.00
1 Non 10 150 15.00
1 Non 4 60 15.00
1 Non 12 200 16.67
1 Non 9 150 16.67
1 Non 34 600 17.65
1 Non 17 300 17.65
1 Non 10 180 18.00
1 Non 5 100 20.00
1 Non 17 360 21.18
1 Non 3 65 21.67
1 Non 30 700 23.33
1 Non 3 70 23.33
1 Non 60 1500 25.00
1 Non 12 300 25.00
1 Non 8 200 25.00
1 Non 8 200 25.00
1 Non 2 60 30.00
1 Non 13 400 30.77
1 Non 3 100 33.33
1 Non 10 345 34.50
1 Non 7 250 35.71
1 Non 4 150 37.50
1 Non 1 40 40.00
1 Non 9 400 44.44
1 Non 10 500 50.00
1 Non 8 400 50.00
1 Non 4 200 50.00
1 Non 7 360 51.43
1 Non 11 600 54.55
1 Non 8 450 56.25
1 Non 7 400 57.14
1 Non 4 250 62.50
1 Non 2 150 75.00
1 Non 20 2000 100.00
1 Non 4 400 100.00
1 Non 1 100 100.00
1 Non 1 105 105.00
1 Non 1 150 150.00
1 Non 15 2500 166.67
1 Non 4 700 175.00
1 Non 1 200 200.00
1 Non 4 900 225.00
1 Non 1 250 250.00
1 Non 9 3000 333.33
1 Non 0 300 Inf
1 Non 0 130 Inf
1 Non 0 200 Inf
1 Non 0 50 Inf
1 Non 0 10 Inf
1 Non 0 55 Inf
1 Non 0 70 Inf
4 Oui 120 25 0.21
5 Oui 300 75 0.25
5 Oui 80 25 0.31
4 Oui 150 270 1.80
13 Oui 8 15 1.88
6 Oui 25 50 2.00
4 Oui 15 30 2.00
5 Oui 10 20 2.00
3 Oui 40 100 2.50
5 Oui 18 50 2.78
3 Oui 11 40 3.64
3 Oui 80 300 3.75
2 Oui 13 55 4.23
4 Oui 60 300 5.00
6 Oui 10 50 5.00
3 Oui 5 25 5.00
2 Oui 36 200 5.56
3 Oui 35 200 5.71
7 Oui 7 40 5.71
3 Oui 5 30 6.00
5 Oui 40 250 6.25
5 Oui 45 300 6.67
20 Oui 6 40 6.67
1 Oui 11 75 6.82
2 Oui 10 70 7.00
2 Oui 28 200 7.14
3 Oui 21 150 7.14
7 Oui 7 50 7.14
10 Oui 20 150 7.50
5 Oui 4 30 7.50
5 Oui 5 40 8.00
5 Oui 6 50 8.33
3 Oui 13 110 8.46
4 Oui 70 600 8.57
2 Oui 8 70 8.75
7 Oui 10 90 9.00
3 Oui 8 75 9.38
4 Oui 100 1000 10.00
2 Oui 20 200 10.00
7 Oui 10 100 10.00
7 Oui 10 100 10.00
4 Oui 10 100 10.00
4 Oui 10 100 10.00
7 Oui 8 80 10.00
4 Oui 3 30 10.00
3 Oui 29 300 10.34
3 Oui 57 600 10.53
2 Oui 19 200 10.53
3 Oui 28 300 10.71
4 Oui 13 140 10.77
7 Oui 18 200 11.11
6 Oui 7 80 11.43
3 Oui 30 350 11.67
5 Oui 10 120 12.00
1 Oui 20 250 12.50
3 Oui 20 250 12.50
2 Oui 8 100 12.50
7 Oui 8 100 12.50
5 Oui 60 800 13.33
5 Oui 15 200 13.33
5 Oui 9 120 13.33
6 Oui 6 80 13.33
9 Oui 6 80 13.33
7 Oui 3 40 13.33
3 Oui 70 1000 14.29
4 Oui 21 300 14.29
1 Oui 14 200 14.29
2 Oui 30 450 15.00
8 Oui 20 300 15.00
5 Oui 20 300 15.00
5 Oui 10 150 15.00
5 Oui 2 30 15.00
3 Oui 24 400 16.67
4 Oui 3 50 16.67
2 Oui 20 350 17.50
2 Oui 2 35 17.50
8 Oui 24 450 18.75
2 Oui 37 700 18.92
1 Oui 25 500 20.00
6 Oui 10 200 20.00
2 Oui 7 140 20.00
12 Oui 5 100 20.00
4 Oui 4 80 20.00
5 Oui 12 250 20.83
8 Oui 7 150 21.43
2 Oui 9 200 22.22
3 Oui 12 280 23.33
3 Oui 20 500 25.00
14 Oui 12 300 25.00
2 Oui 10 250 25.00
2 Oui 8 200 25.00
3 Oui 2 50 25.00
5 Oui 2 50 25.00
12 Oui 3 80 26.67
5 Oui 7 200 28.57
3 Oui 50 1500 30.00
8 Oui 5 150 30.00
8 Oui 2 60 30.00
7 Oui 12 400 33.33
1 Oui 6 200 33.33
7 Oui 6 200 33.33
3 Oui 8 300 37.50
3 Oui 5 200 40.00
2 Oui 5 200 40.00
4 Oui 5 200 40.00
3 Oui 3 120 40.00
3 Oui 2 80 40.00
5 Oui 2 80 40.00
2 Oui 7 300 42.86
6 Oui 7 300 42.86
2 Oui 7 300 42.86
10 Oui 7 300 42.86
5 Oui 7 310 44.29
2 Oui 7 350 50.00
3 Oui 4 200 50.00
3 Oui 3 150 50.00
5 Oui 2 100 50.00
9 Oui 11 600 54.55
7 Oui 3 170 56.67
4 Oui 14 800 57.14
2 Oui 5 300 60.00
5 Oui 1 60 60.00
2 Oui 8 500 62.50
1 Oui 3 200 66.67
22 Oui 3 200 66.67
7 Oui 16 1200 75.00
2 Oui 4 300 75.00
1 Oui 5 400 80.00
2 Oui 1 80 80.00
4 Oui 1 80 80.00
1 Oui 1 80 80.00
3 Oui 10 900 90.00
10 Oui 6 600 100.00
2 Oui 2 200 100.00
4 Oui 4 500 125.00
4 Oui 2 250 125.00
2 Oui 14 2000 142.86
2 Oui 2 300 150.00
22 Oui 2 320 160.00
5 Oui 8 1500 187.50
21 Oui 3 600 200.00
9 Oui 3 600 200.00
11 Oui 7 2000 285.71
30 Oui 5 1450 290.00
2 Oui 1 300 300.00
5 Oui 1 300 300.00
2 Oui 1 300 300.00
6 Oui 17 6000 352.94
9 Oui 1 400 400.00
4 Oui 1 400 400.00
13 Oui 6 2600 433.33
1 Oui 1 500 500.00
5 Oui 1 500 500.00
6 Oui 1 600 600.00
2 Oui 2 1500 750.00
17 Oui 2 3500 1750.00
2 Oui 0 20 Inf
2 Oui 0 60 Inf
3 Oui 0 400 Inf
5 Oui 0 15 Inf
12 Oui 0 8 Inf
1 Oui 0 200 Inf
5 Oui 0 80 Inf
12 Oui 0 600 Inf
9 Oui 0 40 Inf
4 Oui 0 250 Inf
Code
caths2020inUp <- cathsRatio %>% 
  filter(HASUP == "Oui")
caths2020NotinUp <- cathsRatio %>% 
  filter(HASUP == "Non")

cathsRatio %>% 
  ggplot(aes(x = ratio,
             fill = HASUP)) + 
  geom_boxplot()
Warning: Removed 17 rows containing non-finite values (`stat_boxplot()`).

Code
cathsRatio %>% 
  group_by(HASUP) %>% 
  filter(ratio != Inf) %>% 
  summarise(`NUMREGLR/ STAFFNUM` = mean(ratio))
# A tibble: 2 × 2
  HASUP `NUMREGLR/ STAFFNUM`
  <chr>                <dbl>
1 Non                   45.8
2 Oui                   75.0
Code
orig_ncs2 %>% 
  filter(Q1300 == 3000) %>% 
  select(Q4110)
# A tibble: 1 × 1
  Q4110
  <dbl>
1     9
Code
# data %>% 
#   filter(TRAD12 == "Catholiques romaines") %>% 
#   select(YEAR, LINKCODE, UPNUMBERorig, all_of(varsToCompare)) %>% 
#   mutate(ratio = NUMREGLR / STAFFNUM,
#          HASUP = ifelse(UPNUMBERorig > 1, T, F)) %>% 
#   select(1:3, HASUP, NUMREGLR, STAFFNUM, ratio, everything()) %>% 
#   arrange(YEAR, HASUP, ratio) %>% 
#   writexl::write_xlsx("c:/Users/jsenn2/OneDrive - Université de Lausanne/___whoGotItWrongWholeData.xlsx")

3.1.2 NCS1 treated (v2009)

Code
# is the ratio acceptable in `ncs1_treated`

ncs1_treated %>% 
  summarise(ratio = NUMREGLR / STAFFNUM) %>% 
  na.omit() %>% 
  ggplot(aes(x=ratio)) + 
  geom_histogram() + 
  scale_x_log10()
Warning: Returning more (or less) than 1 row per `summarise()` group was deprecated in
dplyr 1.1.0.
ℹ Please use `reframe()` instead.
ℹ When switching from `summarise()` to `reframe()`, remember that `reframe()`
  always returns an ungrouped data frame and adjust accordingly.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Warning: Removed 314 rows containing non-finite values (`stat_bin()`).

3.2 Corrélation entre STAFFNUM et NUMREGLR

Code
cor.test(ncs1_treated$STAFFNUM, ncs1_treated$NUMREGLR)

    Pearson's product-moment correlation

data:  ncs1_treated$STAFFNUM and ncs1_treated$NUMREGLR
t = 15.224, df = 1029, p-value < 2.2e-16
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.3775798 0.4773088
sample estimates:
      cor 
0.4287496 
Code
cor.test(cathsRatio$STAFFNUM, cathsRatio$NUMREGLR)

    Pearson's product-moment correlation

data:  cathsRatio$STAFFNUM and cathsRatio$NUMREGLR
t = 0.9466, df = 243, p-value = 0.3448
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.06521112  0.18454001
sample estimates:
       cor 
0.06061307 
Code
cor.test(caths2020inUp$STAFFNUM, caths2020inUp$NUMREGLR)

    Pearson's product-moment correlation

data:  caths2020inUp$STAFFNUM and caths2020inUp$NUMREGLR
t = 0.30932, df = 164, p-value = 0.7575
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.1286477  0.1758218
sample estimates:
       cor 
0.02414699 
Code
cor.test(caths2020NotinUp$STAFFNUM, caths2020NotinUp$NUMREGLR)

    Pearson's product-moment correlation

data:  caths2020NotinUp$STAFFNUM and caths2020NotinUp$NUMREGLR
t = 3.3134, df = 77, p-value = 0.001406
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.1433360 0.5327495
sample estimates:
      cor 
0.3532508 
Code
cathsRatio %>% 
  ggplot(aes(x = STAFFNUM, y = NUMREGLR, color = HASUP)) + 
  geom_point() + 
  scale_y_log10() + 
  scale_x_log10() + 
  facet_wrap(~ HASUP) + 
  ggtitle("ncs2 raw: Corrélation entre STAFFNUM et NUMREGLR")
Warning: Transformation introduced infinite values in continuous x-axis

Code
ncs1_treated %>% 
  ggplot(aes(x = STAFFNUM, y = NUMREGLR)) + 
  geom_point() + 
  scale_y_log10() + 
  scale_x_log10() + 
  ggtitle("ncs1 treated (v2009): Corrélation entre STAFFNUM et NUMREGLR")
Warning: Transformation introduced infinite values in continuous x-axis
Warning: Removed 9 rows containing missing values (`geom_point()`).

3.3 Corrélation entre UPNUMBER et les variables

Code
data_before_UP_treat$UPNUMBERorig <- ifelse(is.na(data_before_UP_treat$UPNUMBERorig),
                     1,
                     data_before_UP_treat$UPNUMBERorig)

data_before_UP_treat %>% 
  filter(TRAD12 == "Catholiques romaines") %>% 
  select(YEAR, UPNUMBERorig, all_of(varsToCompare)) %>%
  gather(variable, value, -YEAR, -UPNUMBERorig) %>%
  filter(!is.na(value)) %>% 
  nest(data = c(UPNUMBERorig, value)) %>%
  group_by(YEAR, variable) %>%
  mutate(model = map(data, ~lm(value ~ UPNUMBERorig, data = .x))) %>%
  mutate(tidied = map(model, broom::tidy)) %>%
  unnest(tidied) %>% 
  filter(term == "UPNUMBERorig") %>% 
  arrange(YEAR) %>% 
  mutate(p_value_stars = case_when(
    p.value < 0.001 ~ "***",
    p.value < 0.01  ~ "**",
    p.value < 0.05  ~ "*",
    p.value < 0.1   ~ ".",
    TRUE            ~ ""
  )) %>% 
  mutate(PART = ifelse(variable %nin% upDivide | variable == "TEENRGLR",
                       "Members", 
                       "Staff")) %>% 
  arrange(YEAR, PART) %>% 
  select(PART, YEAR, variable, term, estimate, p_value_stars) %>% 
  tab_df()
PART YEAR variable term estimate p_value_stars
Members 2009 NUMTOTAL UPNUMBERorig -43.80
Members 2009 NUMADLTS UPNUMBERorig -6.12
Members 2009 NUMREGLR UPNUMBERorig -28.86 ***
Members 2009 NUMATTND UPNUMBERorig -7.70 *
Members 2009 TEENRGLR UPNUMBERorig -3.93 **
Staff 2009 STAFFNUM UPNUMBERorig -0.79 ***
Staff 2009 STAFFGEN UPNUMBERorig -0.57 ***
Staff 2009 FTSTAFF UPNUMBERorig -0.15 .
Staff 2009 FTSTAFFWM UPNUMBERorig -0.10
Staff 2009 BOARDNUM UPNUMBERorig -0.08
Staff 2009 BOARDGEN UPNUMBERorig -0.05
Members 2022 NUMTOTAL UPNUMBERorig 50.85 .
Members 2022 NUMADLTS UPNUMBERorig 11.61 *
Members 2022 NUMREGLR UPNUMBERorig 17.69 **
Members 2022 NUMATTND UPNUMBERorig 2.60
Members 2022 TEENRGLR UPNUMBERorig 0.42
Staff 2022 STAFFNUM UPNUMBERorig -0.27
Staff 2022 STAFFGEN UPNUMBERorig -0.16
Staff 2022 FTSTAFF UPNUMBERorig -0.00
Staff 2022 FTSTAFFWM UPNUMBERorig -0.02
Staff 2022 VLTRS UPNUMBERorig -1.37
Staff 2022 WMVLTRS UPNUMBERorig -0.65
Staff 2022 BOARDNUM UPNUMBERorig 0.26 **
Staff 2022 BOARDGEN UPNUMBERorig 0.22 ***
  • Ce tableau tend à confirmer qu’une bonne partie des lignes 2022 ont répondu par référence aux UP y-c s’agissant des PART.

3.4 Qu’en est-il des missions spécifiquement ?

3.5 Conclusions pour le redressement NCS2

  • Piste a)

    • Au-dessus d’un certain ratio, partir du principe que les questions PART ont été comprises par référence à l’UP (en 2022).

    • Dans ces cas : diviser eg NUMREGLR par le nombre de paroisses représentées.