10  Évaluation de la qualité de l’enquête

Cette partie rassemble les indicateurs de qualité de la collecte. Les trois variables présentées ci-dessous sont toutes renseignées par l’enquêteur (et non par le ménage enquêté) :

WarningTravail de vérification en cours

Les résultats présentés ci-dessous sont provisoires, et sont susceptibles de faire l’objet de corrections.

10.1 Qualité de l’enquête (évaluation par l’enquêteur, page de couverture)

La variable j11« Qualité de l’enquête » — est renseignée par l’enquêteur sur la page de couverture du questionnaire. Les modalités sont : 1 = bonne, 2 = moyenne, 3 = mauvaise. La grande majorité des entretiens sont jugés de bonne qualité ou de qualité moyenne (Figure 10.1).

Code
res_deb_site |>
  mutate(
    Qualité = case_when(
      j11 == 1 ~ "Bonne",
      j11 == 2 ~ "Moyenne",
      j11 == 3 ~ "Mauvaise",
      TRUE ~ as.character(j11)
    ),
    Qualité = factor(Qualité, levels = c("Bonne", "Moyenne", "Mauvaise"))
  ) |>
  count(Observatory, Qualité) |>
  ror_bar_v(x = Qualité, y = n, y_label = "Nombre d'entretiens", show_pct = FALSE)
Figure 10.1: Qualité de l’enquête selon l’enquêteur (j11, page de couverture)
📥 Télécharger par hameau et par observatoire

10.2 Répondant

Dans la plupart des cas, le répondant est le chef de ménage lui-même ou son conjoint. Quelques entretiens ont été réalisés avec un autre membre du ménage (Table 10.1).

Code
res_deb |>
  mutate(
    Répondant = case_when(
      j10 == 1  ~ "Chef de ménage",
      j10 == 2  ~ "Conjoint(e)",
      j10 == 3  ~ "Autre membre",
      j10 == 91 ~ "Autre",
      TRUE ~ paste0("Code ", j10)
    )
  ) |>
  count(Observatory, Répondant) |>
  pivot_wider(names_from = Observatory, values_from = n, values_fill = 0) |>
  gt() |>
  tab_style(
    style = list(cell_text(weight = "bold"), cell_fill(color = "#DCDCDC")),
    locations = cells_column_labels(columns = everything())
  ) |>
  tab_source_note(source_note = md("**Source : Enquête auprès des OR 2025**"))
Table 10.1: Qualité du répondant par observatoire
Répondant Alaotra Marovoay
Autre 11 16
Chef de ménage 282 340
Code NA 2 2
Conjoint(e) 212 157
Autre membre 0 3
Code 10 0 1
Source : Enquête auprès des OR 2025
📥 Télécharger par hameau et par observatoire

10.3 Qualité de la réponse (évaluation par l’enquêteur, fin de questionnaire)

La variable qual1aa« Qualité de la réponse en générale » — est renseignée par l’enquêteur dans le module de remarques en fin de questionnaire. Les modalités prévues sont : 1 = bonne, 2 = mauvaise. La Figure 10.2 présente la répartition par observatoire (les codes aberrants sont exclus, voir l’encadré ci-dessous).

Code
res_remq_site |>
  filter(!is.na(qual1aa), qual1aa %in% c(1, 2)) |>
  mutate(
    Qualité = case_when(
      qual1aa == 1 ~ "Bonne",
      qual1aa == 2 ~ "Mauvaise"
    ),
    Qualité = factor(Qualité, levels = c("Bonne", "Mauvaise"))
  ) |>
  count(Observatory, Qualité) |>
  mutate(pct = round(n / sum(n) * 100, 1), .by = Observatory) |>
  ror_bar_v(x = Qualité, y_label = "% des réponses", show_pct = TRUE)
Figure 10.2: Qualité de la réponse selon l’enquêteur (qual1aa, fin de questionnaire)
📥 Télécharger par hameau et par observatoire

10.4 Réaction du répondant (évaluation par l’enquêteur, fin de questionnaire)

La variable qual2aa« Réaction du répondant » — est renseignée par l’enquêteur dans le même module. Les modalités prévues sont : 1 = ouvert (à l’aise), 2 = neutre, 3 = méfiant. La Figure 10.3 présente la répartition (les codes aberrants sont exclus).

Code
res_remq_site |>
  filter(!is.na(qual2aa), qual2aa %in% c(1, 2, 3)) |>
  mutate(
    Réaction = case_when(
      qual2aa == 1 ~ "Ouvert (à l'aise)",
      qual2aa == 2 ~ "Neutre",
      qual2aa == 3 ~ "Méfiant"
    ),
    Réaction = factor(Réaction, levels = c("Ouvert (à l'aise)", "Neutre", "Méfiant"))
  ) |>
  count(Observatory, Réaction) |>
  mutate(pct = round(n / sum(n) * 100, 1), .by = Observatory) |>
  ror_bar_v(x = Réaction, y_label = "% des réponses", show_pct = TRUE)
Figure 10.3: Réaction du répondant selon l’enquêteur (qual2aa, fin de questionnaire)
📥 Télécharger par hameau et par observatoire

10.5 Codes aberrants à signaler pour l’apurement

WarningErreurs de saisie détectées dans qual1aa et qual2aa

qual1aa = 3 (21 observations : 3 Alaotra, 18 Marovoay) — Le code 3 n’existe pas dans la grille de codage (1 = Bonne, 2 = Mauvaise). L’hypothèse la plus probable est une erreur de saisie : l’enquêteur a noté j11 = 3 (Mauvaise) sur la page de couverture et l’opérateur a reporté ce code par erreur dans qual1aa. On note d’ailleurs que 12 de ces 21 cas ont également qual2aa = 3 (Méfiant) et que j11 vaut 2 ou 3 dans la quasi-totalité des cas, ce qui confirme qu’il s’agit d’entretiens difficiles. Action recommandée : recoder ces 21 observations en qual1aa = 2 (Mauvaise), ou les laisser en NA si l’on ne peut confirmer.

qual2aa = 4 (1 observation, Alaotra) — Le code 4 n’existe pas dans la grille (1 = Ouvert, 2 = Neutre, 3 = Méfiant). qual1aa vaut 1 (Bonne) et la remarque est vide. Il s’agit d’une erreur de saisie isolée. Action recommandée : recoder en NA.

Valeurs manquantes : 3 ménages ont qual1aa et qual2aa à NA. Ces cas sont à vérifier auprès de l’équipe de saisie.

Les identifiants précis des ménages concernés sont disponibles dans les données brutes (res_remq.dta) et ne sont pas reproduits ici pour des raisons de confidentialité.

Code
res_remq |>
  left_join(res_deb |> select(j5, j1, j11), by = "j5") |>
  filter(
    (!qual1aa %in% c(1, 2) & !is.na(qual1aa)) |
    (!qual2aa %in% c(1, 2, 3) & !is.na(qual2aa)) |
    is.na(qual1aa) | is.na(qual2aa)
  ) |>
  mutate(
    Obs_n = row_number(),
    j11_lbl = case_when(j11 == 1 ~ "Bonne", j11 == 2 ~ "Moyenne", j11 == 3 ~ "Mauvaise"),
    qual1aa = as.numeric(qual1aa),
    qual2aa = as.numeric(qual2aa)
  ) |>
  select(Obs_n, Observatory, j11 = j11_lbl, qual1aa, qual2aa) |>
  gt() |>
  cols_label(Obs_n = "#", j11 = "j11 (couverture)",
             qual1aa = "qual1aa", qual2aa = "qual2aa") |>
  tab_style(
    style = list(cell_text(weight = "bold"), cell_fill(color = "#DCDCDC")),
    locations = cells_column_labels(columns = everything())
  ) |>
  sub_missing(missing_text = "NA") |>
  tab_style(
    style = cell_fill(color = "#FFCCCC"),
    locations = cells_body(
      columns = qual1aa,
      rows = !qual1aa %in% c(1, 2) | is.na(qual1aa)
    )
  ) |>
  tab_style(
    style = cell_fill(color = "#FFCCCC"),
    locations = cells_body(
      columns = qual2aa,
      rows = !qual2aa %in% c(1, 2, 3) | is.na(qual2aa)
    )
  ) |>
  tab_source_note(source_note = md("**Source : Enquête auprès des OR 2025 — identifiants ménages anonymisés**"))
Table 10.2: Observations avec codes aberrants dans qual1aa ou qual2aa (anonymisé)
# Observatory j11 (couverture) qual1aa qual2aa
1 Alaotra Moyenne 3 3
2 Alaotra Moyenne NA NA
3 Alaotra Bonne 1 4
4 Alaotra Bonne 3 3
5 Alaotra Bonne 3 3
6 Marovoay Mauvaise 3 3
7 Marovoay Mauvaise 3 1
8 Marovoay Mauvaise 3 3
9 Marovoay Moyenne 3 2
10 Marovoay Mauvaise 3 3
11 Marovoay Mauvaise 3 1
12 Marovoay Moyenne 3 1
13 Marovoay Mauvaise 3 2
14 Marovoay Moyenne 3 3
15 Marovoay Mauvaise 3 1
16 Marovoay Mauvaise 3 1
17 Marovoay Moyenne 3 3
18 Marovoay Mauvaise 3 3
19 Marovoay Moyenne 3 1
20 Marovoay Mauvaise 3 3
21 Marovoay Bonne NA NA
22 Marovoay Mauvaise 3 1
23 Marovoay Moyenne NA NA
24 Marovoay Mauvaise 3 2
25 Marovoay Moyenne 3 3
Source : Enquête auprès des OR 2025 — identifiants ménages anonymisés
📥 Télécharger par hameau et par observatoire

10.6 Synthèse croisée

Le Table 10.3 croise les deux indicateurs d’évaluation de fin de questionnaire (qual1aa et qual2aa) par observatoire, en ne retenant que les codes valides.

Code
res_remq |>
  filter(qual1aa %in% c(1, 2), qual2aa %in% c(1, 2, 3)) |>
  mutate(
    `Qualité réponse` = case_when(
      qual1aa == 1 ~ "Bonne", qual1aa == 2 ~ "Mauvaise"
    ),
    `Réaction répondant` = case_when(
      qual2aa == 1 ~ "Ouvert", qual2aa == 2 ~ "Neutre", qual2aa == 3 ~ "Méfiant"
    )
  ) |>
  count(Observatory, `Qualité réponse`, `Réaction répondant`) |>
  mutate(n = if_else(n < 5, NA_integer_, n)) |>
  pivot_wider(names_from = Observatory, values_from = n, values_fill = 0) |>
  gt() |>
  tab_style(
    style = list(cell_text(weight = "bold"), cell_fill(color = "#DCDCDC")),
    locations = cells_column_labels(columns = everything())
  ) |>
  sub_missing(missing_text = "< 5") |>
  tab_source_note(source_note = md("**Source : Enquête auprès des OR 2025**"))
Table 10.3: Synthèse croisée qualité de la réponse × réaction du répondant, par observatoire
Qualité réponse Réaction répondant Alaotra Marovoay
Bonne Méfiant < 5 0
Bonne Neutre 9 6
Bonne Ouvert 301 211
Mauvaise Méfiant 6 22
Mauvaise Neutre 105 184
Mauvaise Ouvert 80 76
Source : Enquête auprès des OR 2025
📥 Télécharger par hameau et par observatoire

10.7 Remarques générales

Le champ rmq_gle recueille les remarques libres de l’enquêteur en fin d’entretien. Sur les 1026 ménages, 857 comportent une remarque substantielle (hors « RAS »). Ces remarques, rédigées en malgache, signalent notamment des difficultés rencontrées lors de l’entretien (répondant pressé, absences répétées, méfiance) ou apportent des précisions sur la situation du ménage.