Scénario de test & Cas d'usage
Análisis de inferencia causal y estimación de efectos.
Descubrir todas las acciones de causalanalysisGeneración de un dataset volumétrico (10,000 clientes) con una variable de resultado binaria (Conversión: 0 o 1) y probabilidades de tratamiento.
| 1 | |
| 2 | DATA mycas.marketing_campaign; |
| 3 | call streaminit(12345); |
| 4 | DO client_id = 1 to 10000; |
| 5 | segment = rand('INTEGER', 1, 5); |
| 6 | prob_sms = 0.3 + (0.1 * segment); |
| 7 | IF prob_sms > 0.9 THEN prob_sms = 0.9; |
| 8 | IF rand('UNIFORM') < prob_sms THEN channel = 'SMS'; |
| 9 | ELSE channel = 'Email'; |
| 10 | /* Resultado binario: 1 = Compra, 0 = No Compra */ IF channel = 'SMS' THEN conversion_prob = 0.15; |
| 11 | ELSE conversion_prob = 0.10; |
| 12 | IF rand('UNIFORM') < conversion_prob THEN converted = 1; |
| 13 | ELSE converted = 0; |
| 14 | OUTPUT; |
| 15 | END; |
| 16 | |
| 17 | RUN; |
| 18 |
| 1 | |
| 2 | PROC CAS; |
| 3 | causalanalysis.caEffect / TABLE={name='marketing_campaign'} method='IPW' treatVar={name='channel'} outcomeVar={name='converted', type='CONTINUOUS'} /* Tratamos binario como continuo para la media */ pom={{trtLev='SMS', trtProb='prob_sms'}, {trtLev='Email', trtProb='prob_sms'}} difference={{evtLev={'SMS'}, refLev={'Email'}}} alpha=0.01 inference=true; |
| 4 | |
| 5 | RUN; |
| 6 |
Se espera obtener estimaciones de la tasa de conversión media para SMS y Email. La tabla de diferencias debe indicar si el canal SMS tiene un 'lift' significativo sobre el Email con un intervalo de confianza del 99% (alpha 0.01), validando la robustez del análisis en grandes volúmenes.