causalanalysis caEffect

Évaluation de l'efficacité des campagnes de rétention client (AIPW)

Scénario de test & Cas d'usage

Contexte Métier

Une entreprise de télécommunications souhaite évaluer l'impact causal de deux types d'offres de rétention ('Remise' et 'Surclassement') par rapport à aucune action ('Aucune') sur le taux de désabonnement (Churn). L'objectif est d'utiliser une méthode doublement robuste (AIPW) pour corriger les biais de sélection, car les offres ont été ciblées vers des profils spécifiques.
À propos du Set : causalanalysis

Analyse d'inférence causale et estimation d'effets.

Découvrir toutes les actions de causalanalysis
Préparation des Données

Simulation de 5000 clients avec attribution de traitement biaisée (basée sur l'ancienneté) et pré-calcul des probabilités (propension) et des résultats contrefactuels attendus.

Copié !
1 
2DATA casuser.churn_data;
3call streaminit(999);
4DO i = 1 to 5000;
5anciennete = rand('Uniform') * 10;
6/* Attribution traitement */ prob_remise = 0.3 + 0.02*anciennete;
7prob_surclass = 0.2 + 0.01*anciennete;
8prob_aucune = 1 - (prob_remise + prob_surclass);
9IF prob_aucune < 0 THEN prob_aucune=0;
10r = rand('Uniform');
11IF r < prob_remise THEN offre = 'Remise';
12ELSE IF r < (prob_remise + prob_surclass) THEN offre = 'Surclassement';
13ELSE offre = 'Aucune';
14/* Resultat observe (0=Reste, 1=Churn) */ churn_prob = 0.4 - 0.03*anciennete;
15IF offre='Remise' THEN churn_prob = churn_prob - 0.1;
16IF offre='Surclassement' THEN churn_prob = churn_prob - 0.15;
17churn = rand('Bernoulli', max(0, churn_prob));
18/* Counterfactuals */ pred_y_remise = max(0, (0.4 - 0.03*anciennete - 0.1));
19pred_y_surclass = max(0, (0.4 - 0.03*anciennete - 0.15));
20pred_y_aucune = max(0, (0.4 - 0.03*anciennete));
21ps_remise = prob_remise;
22ps_surclass = prob_surclass;
23ps_aucune = prob_aucune;
24OUTPUT;
25END;
26 
27RUN;
28 

Étapes de réalisation

1
Chargement des données simulées en mémoire CAS.
Copié !
1 
2PROC CAS;
3TABLE.loadTable / path='churn_data.sashdat' caslib='casuser' casout={name='churn_data', replace=true};
4 
5QUIT;
6 
2
Exécution de caEffect avec la méthode AIPW pour comparer 'Remise' et 'Surclassement' à la référence 'Aucune'.
Copié !
1 
2PROC CAS;
3causalanalysis.caEffect / TABLE={name='churn_data'}, treatVar={name='offre'}, outcomeVar={name='churn', type='BINOMIAL', event='1'}, method='AIPW', pom=[ {trtLev='Aucune', trtProb='ps_aucune', predOut='pred_y_aucune'}, {trtLev='Remise', trtProb='ps_remise', predOut='pred_y_remise'}, {trtLev='Surclassement', trtProb='ps_surclass', predOut='pred_y_surclass'} ], difference=[ {refLev='Aucune', evtLev='Remise'}, {refLev='Aucune', evtLev='Surclassement'} ], inference=true;
4 
5RUN;
6 

Résultat Attendu


L'action doit produire une table des 'Causal Effects' montrant la réduction du taux de churn (différence négative) pour les deux offres par rapport à 'Aucune'. Grâce à AIPW, les estimations doivent rester robustes même si le modèle de propension simule un ciblage fort.