Los comandos para generar los datos de un ensayo clínico se basan en el ado-file cat que genera una muestra aleatoria para una distribución categórica:
Ejemplo para generar los datos de una simulación:
..... set obs `sample' gen group = _n <= `sample'/2 cat if group == 0, gen(mrs) pr(.18 .37 .46 .64 .84 .90) cat if group == 1, replace(mrs) pr(.41 .51 .55 .63 .73 .78) ......
Una vez generados los datos de un ensayo, se analizan utilizando fisher exact test y regresión logística ordinal (ologit) y se exportan a un archivo utilizando el comando "post". El bucle se repite hasta que se han simulado los 1000 ensayos. Despues de esto, la potencia de cada método de análisis se estima calculando la proproción de ensayos con p< 0,05.
-------------------------------------------------------------------------- help for cat -------------------------------------------------------------------------- Generate categorical random variable ------------------------------------ cat [if] [in], generate(varname)|replace(varname) prob(prob_list) Description ----------- cat generates or replaces a variable with random integer numbers. The frequency of each number is defined in prob_list which is a list of the cumulative probability of the categorical distribution. Options ------- generate(varname) generates a new variable. Can not be used with replace replace(varname) replaces an existing variable. Can not be used with Generate prob(prob_list) Is the list of cumulative probabilities Examples -------- . cat, gen(pain) prob(0.10, 0.30, 0.80, 0.95) . tab pain pain | Freq. Percent Cum. ------------+----------------------------------- 0 | 94 9.40 9.40 1 | 202 20.20 29.60 2 | 510 51.00 80.60 3 | 136 13.60 94.20 4 | 58 5.80 100.00 ------------+----------------------------------- Total | 1000 100.00 . cat if pain == 2, replace(pain) prob(0,.10,.90) (110 real changes made) . tab pain pain | Freq. Percent Cum. ------------+----------------------------------- 0 | 94 9.40 9.40 1 | 254 25.40 34.80 2 | 400 40.00 74.80 3 | 194 19.40 94.20 4 | 58 5.80 100.00 ------------+----------------------------------- Total | 1000 100.00
A continuación vemos un simulación, asumiendo que como resultado de tratamiento, el Odds de estar en una categoría igual o superior es de 0.75, con un tamaño muestral de 1200 individuos (600 en cada grupo) y un kappa de 1.
| group | group mrs | 0 1 | Total newcat | 0 1 | Total -------+-------------------+--------- -------+-------------------+--------- 0 | 107 149 | 256 0-1 | 215 277 | 492 | 17.83 24.83 | 21.33 | 35.83 46.17 | 41.00 -------+-------------------+--------- -------+-------------------+--------- 1 | 108 128 | 236 2-6 | 385 323 | 708 | 18.00 21.33 | 19.67 | 64.17 53.83 | 59.00 -------+-------------------+--------- -------+-------------------+--------- 2 | 48 55 | 103 Total | 600 600 | 1200 | 8.00 9.17 | 8.58 | 100.00 100.00 | 100.00 -------+-------------------+--------- 3 | 109 103 | 212 | 18.17 17.17 | 17.67 -------+-------------------+--------- 4 | 127 98 | 225 | 21.17 16.33 | 18.75 -------+-------------------+--------- 5 | 29 25 | 54 | 4.83 4.17 | 4.50 -------+-------------------+--------- 6 | 72 42 | 114 | 12.00 7.00 | 9.50 -------+-------------------+--------- Total | 600 600 | 1200 | 100.00 100.00 | 100.00
Donde 'mrs' es la variable ordinal (Modified Rankin Scale) newcat es la variable recategorizada y group es el grupo de tratamiento.
Como era de esperar, en los diferentes grupos de asunciones, el poder para detectar significativamente una diferencia fué mayor utilizando regresión logística ordinal que dicotomizando la variable en dos grupos. Como ejemplo vemos el poder para el OR = 0.75 y kappa = 1 con diferentes tamaños muestrales.