Esta página é dedicada ao cálculo do número de pacientes necessários para vários estudos, como um ensaio clínico randomizado (ECR) para inferência causal ou coorte para construir ou validar uma ferramenta preditiva. Os códigos R são propostos. Podemos clicar aqui para acessar as calculadoras amigáveis relacionadas. Alguns lembretes:
Superioridade RCT: Use para demonstrar que o tratamento experimental é mais eficaz que a terapia padrão.
ECR de não inferioridade: Use para demonstrar que o tratamento experimental é tão eficaz quanto a terapia padrão.
ECR seqüencial: análises intermediárias para interromper antecipadamente o estudo.
Considere o seguinte ECR com dois grupos paralelos com uma taxa de randomização de 1: 1. A média esperada é de 66 unidades em pacientes no braço experimental versus 72 unidades no braço de controle. Para demonstrar essa diferença de 6 unidades, com um desvio padrão de 23, uma taxa de erro de 5% em dois lados e uma potência de 80%, o tamanho mínimo da amostra por braço é igual a 231 (ou seja, um 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 o seguinte ECR com dois grupos paralelos com uma taxa de randomização 1: 1 e 2 análises intermediárias planejadas para eficácia usando o método de O'Brien-Fleming para considerar a inflação da taxa de erro do tipo I). A média esperada é de 66 unidades em pacientes no braço experimental versus 72 unidades no braço de controle. Para demonstrar essa diferença de 6 unidades, com um desvio padrão de 23, uma taxa de erro de 5% de dois lados do tipo I e uma potência de 80%, a análise final deve ser realizada em 472 pacientes (236 pacientes por grupo). A primeira e a segunda análise intermediária serão realizadas em 158 e 316 pacientes, respectivamente, ou seja, 33% e 66% do número máximo de pacientes incluídos se não forem a decisão de interromper o estudo.
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 o seguinte ECR com dois grupos paralelos com uma taxa de randomização de 1: 1. A média esperada é de 66 unidades em pacientes no braço de controle e nenhuma diferença em comparação com o braço experimental. Assumindo uma margem absoluta de não inferioridade de 7 pontos, um desvio padrão de 23, o tamanho mínimo da amostra por braço é igual a 134 (ou seja, um total de 268 pacientes) para obter uma taxa de erro de 5% de um lado e uma potência de 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 o seguinte ECR com dois grupos paralelos com uma taxa de randomização de 1: 1. A proporção esperada de eventos é de 35% no braço experimental em comparação com 28% no braço de controle. Para demonstrar essa diferença de 7%, com uma taxa de erro do tipo I de dois lados de 5%e uma potência de 80%, o tamanho mínimo da amostra por braço é igual a 691 (ou seja, um 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 o seguinte ECR com dois grupos paralelos com uma taxa de randomização de 1: 1 e 2 análises intermediárias planejadas para eficácia usando o método O'Brien-Fleming para considerar a inflação da taxa de erro do tipo I. A proporção esperada de evento é de 11% em pacientes no braço experimental versus 15% de unidades no braço de controle. Para demonstrar essa diferença de 4%, com uma taxa de erro de 5%lados tipo I e uma potência de 80%, a análise final deve ser realizada em 2.256 pacientes (1.128 pacientes por grupo). As primeiras e as segundas análises intermediárias seriam realizadas em 752 e 1.504 pacientes, respectivamente, ou seja, 33% e 66% do número máximo de pacientes incluídos se não forem a decisão de interromper o estudo.
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 o seguinte ECR com dois grupos paralelos com uma taxa de randomização de 1: 1. A porcentagem esperada de eventos é de 35% em pacientes no braço de controle e nenhuma diferença em comparação com o braço experimental. Assumindo uma margem absoluta de não inferioridade de 5%, o tamanho mínimo da amostra por ARM é igual a 1.126 (ou seja, um total de 2.252 pacientes) para atingir uma taxa de erro de 5%de um lado e uma potência de 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 o desenvolvimento de um modelo/alghoritmo baseado em 34 preditores como candidatos com R2 esperado de pelo menos 0,25 e um encolhimento esperado de 0,9 (Equação 11 em Riley et al.
34 / (( 0.9 - 1 ) * log( 1 - 0.25 / 0.9 ))
# > [1] 1044.796Considere a relação entre o número de eventos observados versus os esperados. Para atingir uma precisão definida como um comprimento do intervalo de confiança (1-α)% dessa proporção é igual a 0,2, se as proporções esperadas forem 50%, o tamanho da amostra necessário é de 386 (Riley et al. Tamanho mínimo da amostra para a validação externa de um modelo de previsão clínica com um resultado binário. Estatística em medicina. 2021; 19: 4230-425.
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: