# Indicateurs La Ciotat Elio

# Indicateurs La Ciotat

**<span style="text-decoration:underline;">Premier Indicateur : </span>**

Proportion de locataires par carreau de 200m, deux variables sont prises en compte que sont :

- le nombre de ménages propriétaires (men\_prop)
- le nombre de ménages (men)

La formule est donc 1- men\_prop/men

L'indicateur montre un facteur d'instabilité, plus la proportion est élevée, plus la population est mobile, les locataires ayant plus tendance à déménager que les propriétaires il permet donc de montrer les zones avec une certaine instabilité sociale et les zones où l'on a moins de leviers financiers en cas de crise économique.

[![Part des ménages non propriétaires.png](https://bookstack.juxjux.ovh/uploads/images/gallery/2026-04/scaled-1680-/part-des-menages-non-proprietaires-png.png)](https://bookstack.juxjux.ovh/uploads/images/gallery/2026-04/scaled-1680-/part-des-menages-non-proprietaires-png.png)

**<span style="text-decoration:underline;">Deuxième indicateur : </span>**

Proportion de ménages pauvres par carreau de 200m, encore une fois deux variables sont prises en compte :

- Le nombre de ménages pauvres (men\_pauv)
- Le nombre de ménages (men)

La formule est simple et est men\_pauv/men

L'indicateur permet d'identifier la pauvreté monétaire globale en mesurant l'incapacité des foyers à couvrir leurs besoin fondamentaux. Cela correspond exactement à la part de personnes vivant en dessous de 60% du revenu médian. Cela correspond à 1154 € pour un ménage seul en 2021 années des données et à 2423,40 € pour une famille non monoparentale et 2 enfants de moins de 14 ans. La formule pour une famille correspond à 2,1 x 1154, 2,1 correspondant aux unités de consommation.

[![Part des ménages pauvres.png](https://bookstack.juxjux.ovh/uploads/images/gallery/2026-04/scaled-1680-/part-des-menages-pauvres-png.png)](https://bookstack.juxjux.ovh/uploads/images/gallery/2026-04/scaled-1680-/part-des-menages-pauvres-png.png)

**<span style="text-decoration:underline;">Troisième indicateur : </span>**

Revenu winsorisé annuel moyen par individu par carreau de 200m, deux variables sont prises en compte:

- Somme des revenus winsorisés par individu (ind\_snv)
- Nombre d'individus (ind)

La formule correspond à ind\_snv/ind

Dans une analyse les valeurs dites extrêmes peuvent fausser la moyenne et masquer ainsi la réalité. En winsorisant les données c'est à dire en prenant l'ensemble des revenus d'un ménage en le divisant par les unités de consommation correspondant à 1 unité de consommation pour le premier adulte, 0,5 unité de consommation pour tout individu de plus de 14 ans et 0,3 unités de consommations pour tout individu de moins de 14 ans., on obtient une moyenne reflétant plus la situation. De plus dans cette unité on enlève les valeurs extrêmes à savoir 0.5% de chaque côté. Le revenu de départ sélectionné est le revenu net d'impôt auquel on ajoute l'ensemble des prestations sociales du ménage, à savoir ce qu'il reste au ménage après les prélèvements obligatoires, ce avec quoi il vit.

[![Revenu Moyen Winsorisé Annuel.png](https://bookstack.juxjux.ovh/uploads/images/gallery/2026-04/scaled-1680-/revenu-moyen-winsorise-annuel-png.png)](https://bookstack.juxjux.ovh/uploads/images/gallery/2026-04/scaled-1680-/revenu-moyen-winsorise-annuel-png.png)

**<span style="text-decoration:underline;">Quatrième indicateur : </span>**

Proportion de ménages pauvres vivant en logements sociaux par carreau de 200m : trois variables sont prises en compte :

- Nombre de logements sociaux (log\_soc)
- Nombre de ménages (men)
- Nombre de ménages pauvres (men\_pauv)

On obtient une formule : (men\_pauv/men) \*(1- (log\_soc)/(men))

Le logement social est souvent un facteur de ségrégation spatiale et il est plus précis que le taux de pauvreté donc associé à ce dernier il met en valeur la part de ménages pauvres au point d'avoir des difficultés à accéder aux logements sociaux tout en mettant en lumière la proportion de logements sociaux qui seule mettrait aussi en avant une proportion de personne ayant accès à un logement social à cause d'un handicap, de personnes relogées etc...

[![Part des menages pauvres sans logement social.png](https://bookstack.juxjux.ovh/uploads/images/gallery/2026-04/scaled-1680-/part-des-menages-pauvres-sans-logement-social-png.png)](https://bookstack.juxjux.ovh/uploads/images/gallery/2026-04/scaled-1680-/part-des-menages-pauvres-sans-logement-social-png.png)

# Calcul indicateur crise de confiance

# Indicateur crise de confiance

Code pour obtenir la proportion d'établissements non conventionnels sur la base Sirene dans une commune spécifique

CREATE TABLE sirene\_la\_ciotat\_sante AS   
WITH base\_data AS (  
\-- On isole d'abord les établissements actifs, sièges et de santé à La Ciotat  
 SELECT \* FROM read\_csv\_auto('C:\\Users\\eliob\\OneDrive\\Documents\\NEXTE\\Stage\\1ere semaine\\Lundi\\PACA\\Data Brut\\StockEtablissement\_utf8.csv', ALL\_VARCHAR=TRUE)  
 WHERE codeCommuneEtablissement = '13028'   
 AND etatAdministratifEtablissement = 'A'  
 AND etablissementSiege = 'true'  
 AND activitePrincipaleEtablissement IN (  
 '86.90E', '86.90D', '86.23Z',   
 '86.22C', '86.22B', '86.22A', '86.21Z', '86.90F'  
 )  
)  
SELECT   
 \*,  
\-- Calcul de l'indicateur : (Nombre de 86.90F / Nombre total de la sélection) \* 100  
 (COUNT(\*) FILTER (WHERE activitePrincipaleEtablissement = '86.90F') OVER () \* 100.0 / COUNT(\*) OVER ()) as part\_non\_conv  
FROM base\_data;

\-- Exportation vers un CSV propre pour QGIS  
COPY sirene\_la\_ciotat\_sante TO 'C:\\Users\\eliob\\OneDrive\\Documents\\NEXTE\\Stage\\1ere semaine\\Lundi\\PACA\\Data Brut\\Sirene\_Sante\_La\_Ciotat\_Clean.csv' (HEADER, DELIMITER ',');

Code pour obtenir la proportion d'établissements non conventionnels sur la base Sirene dans un département :

\-- 1. Création de la table pour tout le département 13  
CREATE TABLE sirene\_13\_sante\_complet AS   
WITH base\_data AS (  
\-- On extrait les données brutes avec les filtres de base  
 SELECT \* FROM read\_csv\_auto('C:\\Users\\eliob\\OneDrive\\Documents\\NEXTE\\Stage\\1ere semaine\\Lundi\\PACA\\Data Brut\\StockEtablissement\_utf8.csv', ALL\_VARCHAR=TRUE)  
 WHERE codeCommuneEtablissement LIKE '13%'   
 AND etatAdministratifEtablissement = 'A'  
 AND etablissementSiege = 'true'  
 AND activitePrincipaleEtablissement IN (  
 '86.90E', '86.90D', '86.23Z',   
 '86.22C', '86.22B', '86.22A', '86.21Z', '86.90F'  
 )  
)  
SELECT   
 \*,  
\-- Calcul de l'indicateur arrondi à 2 décimales  
 ROUND(  
 (COUNT(\*) FILTER (WHERE activitePrincipaleEtablissement = '86.90F') OVER () \* 100.0 / COUNT(\*) OVER ()),   
 2  
 ) as part\_non\_conv  
FROM base\_data;

\-- 2. Exportation du fichier départemental  
COPY sirene\_13\_sante\_complet TO 'C:\\Users\\eliob\\OneDrive\\Documents\\NEXTE\\Stage\\1ere semaine\\Lundi\\PACA\\Data Brut\\Sirene\_Sante\_13\_Final.csv' (HEADER, DELIMITER ',');

Modification rougeole et grippe :

\-- 1. TRAITEMENT DE LA BASE GRIPPE  
\-- On crée la table en mémoire avec la moyenne du 13  
CREATE TABLE Vacc\_Grippe\_13 AS  
SELECT   
 \*,  
\-- Calcul de la moyenne sur la colonne 'Vaccines' pour le 13 uniquement  
 ROUND(AVG(Vaccines) OVER (), 2) as moy\_vacc\_grippe\_13  
FROM read\_csv\_auto('C:\\Users\\eliob\\OneDrive\\Documents\\NEXTE\\Stage\\1ere semaine\\Lundi\\PACA\\Data Region\\Vacc\_Grippe.csv')  
\-- Conversion de Code en texte pour permettre le filtrage LIKE '13%'  
WHERE CAST(Code AS VARCHAR) LIKE '13%';

\-- Exportation vers le fichier CSV réel  
COPY Vacc\_Grippe\_13 TO 'C:\\Users\\eliob\\OneDrive\\Documents\\NEXTE\\Stage\\1ere semaine\\Lundi\\PACA\\Data Region\\Vacc\_Grippe\_13\_Clean.csv' (HEADER, DELIMITER ',');

  
\-- 2. TRAITEMENT DE LA BASE ROUGEOLE  
\-- On crée la table en mémoire avec la moyenne du 13  
CREATE TABLE Vacc\_Rougeole\_13 AS  
SELECT   
 \*,  
\-- Calcul de la moyenne sur la colonne 'Vaccination' pour le 13 uniquement  
 ROUND(AVG(Vaccination) OVER (), 2) as moy\_vacc\_rougeole\_13  
FROM read\_csv\_auto('C:\\Users\\eliob\\OneDrive\\Documents\\NEXTE\\Stage\\1ere semaine\\Lundi\\PACA\\Data Region\\Vacc\_Rougeole.csv')  
\-- Conversion de Code en texte pour permettre le filtrage LIKE '13%'  
WHERE CAST(Code AS VARCHAR) LIKE '13%';

\-- Exportation vers le fichier CSV réel  
COPY Vacc\_Rougeole\_13 TO 'C:\\Users\\eliob\\OneDrive\\Documents\\NEXTE\\Stage\\1ere semaine\\Lundi\\PACA\\Data Region\\Vacc\_Rougeole\_13\_Clean.csv' (HEADER, DELIMITER ',');

Creation Indicateurs Commune :

\-- 1. CREATION DE LA TABLE  
CREATE TABLE Table\_Indicateurs\_Final AS   
SELECT   
 r.Code,  
\-- Calcul avec les noms de colonnes exacts détectés par DuckDB  
 ROUND(  
 (0.5 \* CAST(r.Vaccination AS FLOAT) +   
 0.25 \* CAST(g."Vaccinés" AS FLOAT) +   
 0.25 \* AVG(CAST(s.part\_8690Z AS FLOAT))),   
 2) AS I\_T1\_02\_Com  
FROM   
 read\_csv\_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Vacc\_Rougeole\_13\_Clean.csv') r  
JOIN   
 read\_csv\_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Vacc\_Grippe\_13\_Clean.csv') g   
 ON CAST(r.Code AS VARCHAR) = CAST(g.Code AS VARCHAR)  
JOIN   
 read\_csv\_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Sirene\_Sante\_La\_Ciotat\_Clean.csv') s  
 ON CAST(r.Code AS VARCHAR) = CAST(s.codeCommuneEtablissement AS VARCHAR)  
WHERE   
 CAST(r.Code AS VARCHAR) = '13028'  
GROUP BY r.Code, r.Vaccination, g."Vaccinés";

\-- 2. EXPORTATION  
COPY Table\_Indicateurs\_Final TO 'C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Indicateurs.csv' (HEADER, DELIMITER ',');

Creation Indicateurs Dept :

\-- 1. CREATION DE LA TABLE FINALE COMBINEE  
CREATE TABLE Table\_Indicateurs\_Complet AS   
WITH stats\_dept AS (  
\-- On calcule la valeur départementale (Moyenne des moyennes)  
 SELECT   
 AVG(CAST(r.moy\_vacc\_rougeole\_13 AS FLOAT)) \* 0.5 +   
 AVG(CAST(g.moy\_vacc\_grippe\_13 AS FLOAT)) \* 0.25 +   
 AVG(CAST(s.part\_non\_conv AS FLOAT)) \* 0.25 AS val\_dep  
 FROM   
 read\_csv\_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Vacc\_Rougeole\_13\_Clean.csv') r,  
 read\_csv\_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Vacc\_Grippe\_13\_Clean.csv') g,  
\-- MISE À JOUR DU CHEMIN ICI :  
 read\_csv\_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Sirene\_Sante\_13\_Final.csv') s  
)  
SELECT   
 r.Code,  
\-- Colonne 1 : Indicateur de La Ciotat  
 ROUND(  
 (0.5 \* CAST(r.Vaccination AS FLOAT) +   
 0.25 \* CAST(g."Vaccinés" AS FLOAT) +   
 0.25 \* AVG(CAST(sc.part\_8690Z AS FLOAT))),   
 2) AS I\_T1\_02\_Com,  
\-- Colonne 2 : Indicateur du Département  
 ROUND((SELECT val\_dep FROM stats\_dept), 2) AS I\_T1\_02\_Dep  
FROM   
 read\_csv\_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Vacc\_Rougeole\_13\_Clean.csv') r  
JOIN   
 read\_csv\_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Vacc\_Grippe\_13\_Clean.csv') g   
 ON CAST(r.Code AS VARCHAR) = CAST(g.Code AS VARCHAR)  
JOIN   
 read\_csv\_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Sirene\_Sante\_La\_Ciotat\_Clean.csv') sc  
 ON CAST(r.Code AS VARCHAR) = CAST(sc.codeCommuneEtablissement AS VARCHAR)  
WHERE   
 CAST(r.Code AS VARCHAR) = '13028'  
GROUP BY r.Code, r.Vaccination, g."Vaccinés";

\-- 2. EXPORTATION FINALE  
COPY Table\_Indicateurs\_Complet TO 'C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Indicateurs.csv' (HEADER, DELIMITER ',');

Creation colonne Significative :

\-- 1. CRÉATION DE LA TABLE COMPLÈTE AVEC INDICATEURS ET TEST  
CREATE TABLE Table\_Indicateurs\_Final\_Test AS   
WITH base\_calculs AS (  
\-- On récupère les valeurs de la commune et du département  
 SELECT   
 r.Code,  
\-- p\_com (La Ciotat)  
 ROUND((0.5 \* CAST(r.Vaccination AS FLOAT) + 0.25 \* CAST(g."Vaccinés" AS FLOAT) + 0.25 \* AVG(CAST(sc.part\_8690Z AS FLOAT))), 2) AS p\_com,  
\-- p\_dep (Moyenne du 13 calculée dynamiquement)  
 (SELECT ROUND(  
 AVG(CAST(rv.moy\_vacc\_rougeole\_13 AS FLOAT)) \* 0.5 +   
 AVG(CAST(gv.moy\_vacc\_grippe\_13 AS FLOAT)) \* 0.25 +   
 AVG(CAST(sv.part\_non\_conv AS FLOAT)) \* 0.25, 2  
 ) FROM   
 read\_csv\_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Vacc\_Rougeole\_13\_Clean.csv') rv,  
 read\_csv\_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Vacc\_Grippe\_13\_Clean.csv') gv,  
 read\_csv\_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Sirene\_Sante\_13\_Final.csv') sv  
 ) AS p\_dep,  
\-- n : Population de La Ciotat (pour la précision du test)  
 35000 AS n  
 FROM   
 read\_csv\_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Vacc\_Rougeole\_13\_Clean.csv') r  
 JOIN   
 read\_csv\_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Vacc\_Grippe\_13\_Clean.csv') g ON CAST(r.Code AS VARCHAR) = CAST(g.Code AS VARCHAR)  
 JOIN   
 read\_csv\_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Sirene\_Sante\_La\_Ciotat\_Clean.csv') sc ON CAST(r.Code AS VARCHAR) = CAST(sc.codeCommuneEtablissement AS VARCHAR)  
 WHERE CAST(r.Code AS VARCHAR) = '13028'  
 GROUP BY r.Code, r.Vaccination, g."Vaccinés"  
)  
SELECT   
 Code,  
 p\_com AS I\_T1\_02\_Com,  
 p\_dep AS I\_T1\_02\_Dep,  
\-- Calcul de la marge d'erreur (Z=1.96 pour alpha=5%)  
 ROUND(1.96 \* SQRT((p\_dep/100 \* (1 - p\_dep/100)) / n) \* 100, 3) AS marge\_erreur,  
\-- Diagnostic final  
 CASE   
 WHEN p\_com &lt; (p\_dep - (1.96 \* SQRT((p\_dep/100 \* (1 - p\_dep/100)) / n) \* 100)) THEN 'Significativement PLUS BAS'  
 WHEN p\_com &gt; (p\_dep + (1.96 \* SQRT((p\_dep/100 \* (1 - p\_dep/100)) / n) \* 100)) THEN 'Significativement PLUS HAUT'  
 ELSE 'Conforme à la moyenne'  
 END AS Interpretation  
FROM base\_calculs;

\-- 2. EXPORTATION  
COPY Table\_Indicateurs\_Final\_Test TO 'C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Indicateurs.csv' (HEADER, DELIMITER ',');