Esta página se dedica al cálculo del número de pacientes requeridos para varios estudios, como un ensayo clínico aleatorizado (ECA) para la inferencia causal o una cohorte para construir o validar una herramienta predictiva. Se proponen códigos R. Podemos hacer clic aquí para acceder a las calculadoras fáciles de usar relacionadas. Algunos recordatorios:
ECA de superioridad: Use para demostrar que el tratamiento experimental es más efectivo que la terapia estándar.
ECA sin inferioridad: Use para demostrar que el tratamiento experimental es tan efectivo como la terapia estándar.
ECA secuencial: análisis intermedios para la detención temprana del estudio.
Considere el siguiente ECA con dos grupos paralelos con una relación de aleatorización 1: 1. La media esperada es 66 unidades en pacientes en el brazo experimental versus 72 unidades en el brazo de control. Para demostrar tal diferencia de 6 unidades, con una desviación estándar de 23, una tasa de error de tipo I de dos lados del 5% y una potencia del 80%, el tamaño mínimo de la muestra por brazo es igual a 231 (es decir, un total de 462 pacientes).
library( epiR )
epi.sscompc( treat = 66 , control = 72 , sigma = 23 , n = NA , power = 0.8 ,
r = 1 , sided.test = 2 , conf.level = 1 - 0.05 )
# > $n.total
# > [1] 462
# > $n.treat
# > [1] 231
# > $n.control
# > [1] 231
# > $power
# > [1] 0.8
# > $delta
# > [1] 6Parámetros de entrada:
Considere el siguiente ECA con dos grupos paralelos con una relación de aleatorización 1: 1 y 2 análisis intermedios planificados para la eficacia utilizando el método de flujo de O'Brien para considerar la inflación de la tasa de error tipo I). La media esperada es 66 unidades en pacientes en el brazo experimental versus 72 unidades en el brazo de control. Para demostrar tal diferencia de 6 unidades, con una desviación estándar de 23, una tasa de error de tipo I de dos lados del 5% y una potencia del 80%, el análisis final debe llevarse a cabo en 472 pacientes (236 pacientes por grupo). El primer y segundo análisis intermedios se realizarían en 158 y 316 pacientes respectivamente, es decir, 33% y 66% del número máximo de pacientes incluidos si no es una decisión de detener el estudio.
library( " rpact " )
design <- getDesignGroupSequential(
typeOfDesign = " OF " , informationRates = c( 1 / 3 , 2 / 3 , 1 ),
alpha = 0.05 , beta = 1 - 0.8 , sided = 2 )
designPlan <- getSampleSizeMeans( design , alternative = 6 , stDev = 23 ,
allocationRatioPlanned = 1 )
summary( designPlan )
# > Stage 1 2 3
# > Planned information rate 33.3% 66.7% 100%
# > Cumulative alpha spent 0.0005 0.0143 0.0500
# > Stage levels (two-sided) 0.0005 0.0141 0.0451
# > Efficacy boundary (z-value scale) 3.471 2.454 2.004
# > Lower efficacy boundary (t) -13.012 -6.405 -4.258
# > Upper efficacy boundary (t) 13.012 6.405 4.258
# > Cumulative power 0.0329 0.4424 0.8000
# > Number of subjects 157.1 314.2 471.3
# > Expected number of subjects under H1 396.7
# > Exit probability for efficacy (under H0) 0.0005 0.0138
# > Exit probability for efficacy (under H1) 0.0329 0.4095 Parámetros de entrada:
Considere el siguiente ECA con dos grupos paralelos con una relación de aleatorización 1: 1. La media esperada son 66 unidades en pacientes en el brazo de control y no hay diferencia en comparación con el brazo experimental. Suponiendo un margen absoluto de no inferioridad de 7 puntos, una desviación estándar de 23, el tamaño mínimo de muestra por brazo es igual a 134 (es decir, un total de 268 pacientes) para lograr una tasa de error tipo I unilateral del 5% y una potencia del 80%
library( epiR )
epi.ssninfc( treat = 66 , control = 66 , sd = 23 , delta = 7 ,
power = 0.8 , alpha = 0.05 , r = 1 , n = NA )
# > $n.total
# > [1] 268
# > $n.treat
# > [1] 134
# > $n.control
# > [1] 134
# > $delta
# > [1] 7
# > $power
# > [1] 0.8Parámetros de entrada:
Considere el siguiente ECA con dos grupos paralelos con una relación de aleatorización 1: 1. La proporción esperada de eventos es del 35% en el brazo experimental en comparación con el 28% en el brazo de control. Para demostrar tal diferencia del 7%, con una tasa de error tipo I de dos lados del 5%y una potencia del 80%, el tamaño mínimo de la muestra por brazo es igual a 691 (es decir, un total de 1382 pacientes).
library( epiR )
epi.sscohortc( irexp1 = 0.35 , irexp0 = 0.28 , power = 0.80 , r = 1 ,
sided.test = 2 , conf.level = 1 - 0.05 )
# > $n.total
# > [1] 1382
# > $n.exp1
# > [1] 691
# > $n.exp0
# > [1] 691
# > $power
# > [1] 0.8
# > $irr
# > [1] 1.25
# > $or
# > [1] 1.384615Parámetros de entrada:
Considere el siguiente ECA con dos grupos paralelos con una relación de aleatorización 1: 1 y 2 análisis intermedios planificados para la eficacia utilizando el método de flujo de O'Brien para considerar la inflación de la tasa de error tipo I. La proporción esperada de evento es del 11% en pacientes en el brazo experimental versus unidades del 15% en el brazo de control. Para demostrar tal diferencia del 4%, con una tasa de error de tipo I de dos caras del 5%y una potencia del 80%, el análisis final debe llevarse a cabo en 2,256 pacientes (1.128 pacientes por grupo). El primer y segundo análisis intermedios se realizarían en 752 y 1,504 pacientes respectivamente, es decir, el 33% y el 66% del número máximo de pacientes incluidos si no es una decisión de detener el estudio.
library( " rpact " )
design <- getDesignGroupSequential( typeOfDesign = " OF " ,
informationRates = c( 1 / 3 , 2 / 3 , 1 ), alpha = 0.05 ,
beta = 1 - 0.8 , sided = 2 )
designPlan <- getSampleSizeRates( design , pi1 = 0.11 , pi2 = 0.15 ,
allocationRatioPlanned = 1 )
summary( designPlan )
# > Stage 1 2 3
# > Planned information rate 33.3% 66.7% 100%
# > Cumulative alpha spent 0.0005 0.0143 0.0500
# > Stage levels (two-sided) 0.0005 0.0141 0.0451
# > Efficacy boundary (z-value scale) 3.471 2.454 2.004
# > Lower efficacy boundary (t) -0.079 -0.042 -0.029
# > Upper efficacy boundary (t) 0.101 0.048 0.031
# > Cumulative power 0.0329 0.4424 0.8000
# > Number of subjects 751.8 1503.7 2255.5
# > Expected number of subjects under H1 1898.1
# > Exit probability for efficacy (under H0) 0.0005 0.0138
# > Exit probability for efficacy (under H1) 0.0329 0.4095 Parámetros de entrada:
Considere el siguiente ECA con dos grupos paralelos con una relación de aleatorización 1: 1. El porcentaje esperado de eventos es del 35% en pacientes en el brazo de control y no hay diferencia en comparación con el brazo experimental. Suponiendo un margen absoluto de no inferioridad del 5%, el tamaño mínimo de la muestra por brazo es igual a 1.126 (es decir, un total de 2,252 pacientes) para lograr una tasa de error tipo I unilateral del 5%y una potencia del 80%.
epi.ssninfb( treat = 0.35 , control = 0.35 , delta = 0.05 ,
n = NA , r = 1 , power = 0.8 , alpha = 0.05 )
# > $n.total
# > [1] 2252
# > $n.treat
# > [1] 1126
# > $n.control
# > [1] 1126
# > $delta
# > [1] 0.05
# > $power
# > [1] 0.8Parámetros:
Para desarrollar un modelo/algro basado en 34 predictores como candidatos con un R2 esperado de al menos 0.25 y una contracción esperada de 0.9 (Ecuación 11 en Riley et al. Estadísticas en medicina. 2019; 38: 1276-1296), el tamaño de la muestra mínimo es 1045.
34 / (( 0.9 - 1 ) * log( 1 - 0.25 / 0.9 ))
# > [1] 1044.796Considere O/E la relación entre el número de eventos observados versus los esperados. Para lograr una precisión definida como una longitud del intervalo de confianza (1-α) de esta relación es igual a 0.2, si las proporciones esperadas es del 50%, el tamaño de la muestra requerido es 386 (Riley et al. Tamaño mínimo de la muestra para la validación externa de un modelo de predicción clínica con un resultado binario. Estadísticas en medicina. 2021; 19: 4230-4251).
se <- function ( width , alpha ) # The standard error associated with the 1-alpha confidence interval
{
fun <- function ( x ) { exp( qnorm( 1 - alpha / 2 , mean = 0 , sd = 1 ) * x ) - exp( - 1 * qnorm( 1 - alpha / 2 , mean = 0 , sd = 1 ) * x ) - width }
return (uniroot( fun , lower = 0.001 , upper = 100 ) $ root )
}
size.calib <- function ( p , width , alpha ) # the minimum sample size to achieve this precision
{
( 1 - p ) / (( p * se( width = width , alpha = alpha ) ** 2 ))
}
size.calib( p = 0.5 , width = 0.2 , alpha = 0.05 )
# > [1] 385.4265Parámetros de entrada: