Scénario de test & Cas d'usage
Creación de un gran conjunto de datos (50,000 sesiones) con muchas variables de ruido para probar la selección y el exceso de ceros.
| 1 | |
| 2 | DATA casuser.trafico_web; |
| 3 | call streaminit(999); |
| 4 | DO session_id=1 to 50000; |
| 5 | tiempo_sitio = rand('Exponential', 5); |
| 6 | paginas_vistas = floor(rand('LogNormal', 2, 0.5)); |
| 7 | dispositivo_movil = rand('Bernoulli', 0.6); |
| 8 | publicidad = rand('Bernoulli', 0.2); |
| 9 | var_ruido1 = rand('Uniform'); |
| 10 | var_ruido2 = rand('Normal'); |
| 11 | /* Modelo de ceros: Si es poco tiempo, probabilidad alta de ser cero absoluto */ prob_cero = 1 / (1 + exp(-2 + 0.5*tiempo_sitio)); |
| 12 | IF rand('Uniform') < prob_cero THEN compras = 0; |
| 13 | ELSE compras = rand('Poisson', 0.5 + 0.1*paginas_vistas + 0.3*publicidad); |
| 14 | OUTPUT; |
| 15 | END; |
| 16 | |
| 17 | RUN; |
| 18 |
| 1 | PROC CAS; |
| 2 | countreg.countregFitModel / |
| 3 | TABLE={name='trafico_web', caslib='casuser'}, |
| 4 | model={depVars={{name='compras'}}, |
| 5 | effects={{vars={'tiempo_sitio', 'paginas_vistas', 'dispositivo_movil', 'publicidad', 'var_ruido1', 'var_ruido2'}}}, |
| 6 | modeloptions={modeltype='ZIP'}}, |
| 7 | zeromodel={effects={{vars={'tiempo_sitio', 'dispositivo_movil'}}}}, |
| 8 | selection={method='STEPWISE', details=true}; |
| 9 | RUN; |
El modelo debe identificar correctamente que 'var_ruido1' y 'var_ruido2' no son significativas y eliminarlas. Debe ajustar dos conjuntos de parámetros: uno para el conteo (Poisson) y otro para la probabilidad de cero (Logit).