About this file

This refers to data analysis for an apreptant trial for preventing postoperative nausea and vomiting (PONV), ClinicalTrials.gov register NCT02357693 (url https://clinicaltrials.gov/ct2/results?term=NCT02357693&Search=Search ).

Sample Size Calculation

library("TrialSize")
#group size
gs=TwoSampleProportion.NIS(alpha=0.05,beta=0.2,p1=0.45,p2=0.30,k=1,delta=0.28,margin=0)
#Ceiling
gs=ceiling(gs)
#Sample size (sum of 2 groups)
ss=gs*2
# Print calculated sample size
print(ss)
## [1] 74
#Considering 15% loss
ss=ss*1.15
print(ss)
## [1] 85.1
#After opening the CSV at variable lui

# Define ponv as nausea or vomiting
#We know that in this trial everyone who vomited presented nausea before, therefore PONV equals nausea
lui$nvpo=lui$nausea

# In the database, "excluido="S"" marks all patients who were excluded per protocol analysis and "excluido="N"" marks everyone else
# this is the subset of all patients who were not excluded
lu=subset(lui,lui$excluido=="N")
lui=subset(lui,lui$nausea!="NA")

Groups

#Os comandos a seguir criam subgrupos para a droga A e para a droga B. Os terminados em "i" são os subgrupos por intenção de tratar.
#Following commands create subgroups variables for drugs A and B. Variables ending in "i" are for subgroups for intention to treat analysis
grupoA=subset(lu,lu$Grupo=="A")
grupoB=subset(lu,lu$Grupo=="B")
# intention-to-treat
grupoAi=subset(lui,lui$Grupo=="A")
grupoBi=subset(lui,lui$Grupo=="B")

# Can we exclude null hypothesis that patients werer not excluded from a group at random?
print(fisher.test(lui$excluido,lui$Grupo)[1])
## $p.value
## [1] 0.7909307

Main outcome

Descrição

# Group A, PONV, intention to treat
table(grupoAi$nvpo)
## 
## FALSE  TRUE 
##    25    16
# Group A, PONV, protocol analysis
table(grupoA$nvpo)
## 
## FALSE  TRUE 
##    19    13
# Group B, PONV, intention to treat
table(grupoBi$nvpo)
## 
## FALSE  TRUE 
##    36     6
# Group B, PONV, protocol analysis
table(grupoB$nvpo)
## 
## FALSE  TRUE 
##    29     5

Per protocol analysis

#Group A:
#PONV risk in group A
RanA=sum(grupoA$nvpo,na.rm=T) / (sum(grupoA$nvpo,na.rm=T) + sum(grupoA$nvpo==F,na.rm=T))
print(RanA)
## [1] 0.40625
#Group B:
#PONV risk in group B
RanB=sum(grupoB$nvpo,na.rm=T) / (sum(grupoB$nvpo,na.rm=T) + sum(grupoB$nvpo==F,na.rm=T))
print(RanB)
## [1] 0.1470588
#PONV relative risk A/B
# = RanA / RanB =
RRAB=RanA/RanB
print(RRAB)
## [1] 2.7625
#Hypothesis test for relative risk
print(fisher.test(lu$Grupo,lu$nvpo)[1])
## $p.value
## [1] 0.02667492

Intention to treat analysis

#Group A:
#PONV risk in group A
RanA=sum(grupoAi$nvpo,na.rm=T) / (sum(grupoAi$nvpo,na.rm=T) + sum(grupoAi$nvpo==F,na.rm=T))
print(RanA)
## [1] 0.3902439
#Group B:
#PONV risk in group B
RanB=sum(grupoBi$nvpo,na.rm=T) / (sum(grupoBi$nvpo,na.rm=T) + sum(grupoBi$nvpo==F,na.rm=T))
print(RanB)
## [1] 0.1428571
#PONV relative risk A/B
# = RanA / RanB =
RRAB=RanA/RanB
print(RRAB)
## [1] 2.731707
#Hypothesis test for relative risk
print(fisher.test(lui$Grupo,lui$nvpo)[1])
## $p.value
## [1] 0.01340745

Detailed PONV description

# Grupo A, total de náuseas em 24h
table(grupoA$nausea)
## 
## FALSE  TRUE 
##    19    13
# Grupo A, total de náuseas até 2h
table(grupoA$nausea.0.2h.numero)
## 
##  0  1 
## 25  1
# Grupo A, total de náuseas 2h-24h
table(grupoA$nausea.2.24h)
## 
## FALSE  TRUE 
##    20    12
# Grupo A, total de vomitos em 24h
table(grupoA$vomito)
## 
## FALSE  TRUE 
##    19    13
# Grupo A, total de vomitos até 2h
table(grupoA$vomito.0.2h)
## 
## FALSE 
##    32
# Grupo A, mediana da intensidade da náusea até 2h
median(subset(grupoA,grupoA$nausea.0.2h.numero=="1")$nausea.0.2h.intensidade,na.rm=T)
## [1] 3
# Grupo A, mediana da intensidade da náusea 2h-24h
median(subset(grupoA,grupoA$nausea.2.24h==TRUE)$nausa.intensidade,na.rm=TRUE)
## [1] 3
# Grupo A, mediana da intensidade da náusea 0h-24h
median(subset(grupoA,grupoA$nausea==TRUE)$nausa.intensidade,na.rm=TRUE)
## [1] 3
# Número de vômitos em 24h
table(grupoA$numero.de.vomitos)
## 
##  0  1  2  3  5  6 10 
## 19  6  3  1  1  1  1
# Número de pacientes que vomitou 3 ou mais vezes (vômitos graves)
sum(grupoA$numero.de.vomitos>2)
## [1] 4
# Número de pacientes com náusea grave
sum(grupoA$nausa.intensidade>7)
## [1] 2
# Grupo B, total de náuseas em 24h
table(grupoB$nausea)
## 
## FALSE  TRUE 
##    29     5
# Grupo B, total de náuseas até 2h
table(grupoB$nausea.0.2h.numero)
## 
##  0 
## 31
# Grupo B, total de náuseas 2h-24h
table(grupoB$nausea.2.24h)
## 
## FALSE  TRUE 
##    29     5
# Grupo B, total de vomitos em 24h
table(grupoB$vomito)
## 
## FALSE  TRUE 
##    33     1
# Grupo B, total de vomitos até 2h
table(grupoB$vomito.0.2h)
## 
## FALSE 
##    34
# Grupo B, mediana da intensidade da náusea até 2h
median(subset(grupoB,grupoB$nausea.0.2h.numero=="1")$nausea.0.2h.intensidade,na.rm=T)
## [1] NA
# Grupo B, mediana da intensidade da náusea 2h-24h
median(subset(grupoB,grupoB$nausea.2.24h==TRUE)$nausa.intensidade,na.rm=TRUE)
## [1] 3
# Grupo B, mediana da intensidade da náusea 0h-24h
median(subset(grupoB,grupoB$nausea==TRUE)$nausa.intensidade,na.rm=TRUE)
## [1] 3
# Número de vômitos em 24h
table(grupoB$numero.de.vomitos)
## 
##  0  3 
## 33  1
# Número de pacientes que vomitou 3 ou mais vezes (vômitos graves)
sum(grupoB$numero.de.vomitos>2)
## [1] 1
# Número de pacientes com náusea grave
sum(grupoB$nausa.intensidade>7)
## [1] NA

Análise de desfechos secundários

#P(nausea) / (p(nausea)+p(sem nausea))
RanA=sum(grupoA$nausea,na.rm=T) / (sum(grupoA$nausea,na.rm=T) + sum(grupoA$nausea==F,na.rm=T))
RanB=sum(grupoB$nausea,na.rm=T) / (sum(grupoB$nausea,na.rm=T) + sum(grupoB$nausea==F,na.rm=T))
RRAB=RanA/RanB
print(fisher.test(lu$Grupo,lu$nausea)[1])
## $p.value
## [1] 0.02667492
#P(vomito) / (p(vomito)+p(sem vomito))
RanA=sum(grupoA$vomito==T,na.rm=T) / (sum(grupoA$vomito==T,na.rm=T) + sum(grupoA$vomito==F,na.rm=T))
RanB=sum(grupoB$vomito==T,na.rm=T) / (sum(grupoB$vomito==T,na.rm=T) + sum(grupoB$vomito==F,na.rm=T))
RRABv=RanA/RanB
print(fisher.test(lu$Grupo,lu$vomito)[1])
## $p.value
## [1] 0.000176637

Descrição das características dos grupos

Grupo A - descrição

mean(grupoA$Idade,na.rm=T)
## [1] 52.03333
sd(grupoA$Idade,na.rm=T)
## [1] 14.78695
table(grupoA$sexo)
## 
## fem 
##  32
table(grupoA$asa)
## 
##  I II 
##  9 23
table(grupoA$apfel)
## 
##  3  4 
## 25  6
table(grupoA$fumante)
## 
## FALSE  TRUE 
##    31     1
table(grupoA$opioide.po)
## 
## TRUE 
##   32
table(grupoA$fenta.neuro)
## 
## FALSE  TRUE 
##    20    12
table(grupoB$suf.neuro)
## 
## FALSE  TRUE 
##    33     1
table(grupoA$mor.raqui.dose)
## 
##   0  40  80 100 120 
##  23   1   4   3   1
table(grupoA$mor.peri.dose)
## 
##   0   1 1,5   2 
##   7   1   0  22
mean(grupoA$t.cirurgia)
## [1] 360.375
mean(grupoA$cristaloide)
## [1] 2995
sd(grupoA$cristaloide)
## [1] 1050.76
mean(grupoA$coloide)
## [1] 31.25
sd(grupoA$coloide)
## [1] 122.9673
table(grupoA$vasoconstrictor)
## 
## FALSE  TRUE 
##    26     6

Grupo B - descrição

mean(grupoB$Idade,na.rm=T)
## [1] 59.08824
sd(grupoB$Idade,na.rm=T)
## [1] 12.90846
table(grupoB$sexo)
## 
## fem 
##  34
table(grupoB$asa)
## 
##  I II 
##  9 25
table(grupoB$apfel)
## 
##  3  4 
## 29  5
table(grupoB$fumante)
## 
## FALSE  TRUE 
##    33     1
table(grupoB$opioide.po)
## 
## TRUE 
##   34
table(grupoB$fenta.neuro)
## 
## FALSE  TRUE 
##    25     9
table(grupoB$suf.neuro)
## 
## FALSE  TRUE 
##    33     1
table(grupoB$mor.raqui.dose)
## 
##  0 40 80 
## 23  4  7
table(grupoB$mor.peri.dose)
## 
##   0   1 1,5   2 
##  10   1   1  21
mean(grupoB$t.cirurgia)
## [1] 414.2941
mean(grupoB$cristaloide)
## [1] 3102.941
sd(grupoB$cristaloide)
## [1] 1380.489
mean(grupoB$coloide)
## [1] 44.11765
sd(grupoB$coloide)
## [1] 189.4029
table(grupoB$vasoconstrictor)
## 
## FALSE  TRUE 
##    28     6

Outros desfechos

Grupo A - descrição de outros desfechos

table(grupoA$sedacao)
## 
## FALSE 
##    32
table(grupoA$prurido)
## 
## FALSE  TRUE 
##    22    10
table(grupoA$bradpneia)
## 
## FALSE 
##    32
table(grupoA$hipotensao)
## 
## FALSE  TRUE 
##    31     1
table(grupoA$retencaourinaria)
## 
## FALSE 
##    32
median(grupoA$dor.repouso,na.rm=T)
## [1] 0
IQR(grupoA$dor.repouso,na.rm=T)
## [1] 0
median(grupoA$dor.mov,na.rm=T)
## [1] 1
IQR(grupoA$dor.mov,na.rm=T)
## [1] 4.75
median(grupoA$piordor,na.rm=T)
## [1] 1
IQR(grupoA$piordor,na.rm=T)
## [1] 4.75
median(grupoA$menordor,na.rm=T)
## [1] 0
IQR(grupoA$menordor,na.rm=T)
## [1] 0

Grupo B - descrição de outros desfechos

table(grupoB$sedacao)
## 
## FALSE 
##    34
table(grupoB$prurido)
## 
## FALSE  TRUE 
##    27     7
table(grupoB$bradpneia)
## 
## FALSE 
##    34
table(grupoB$hipotensao)
## 
## FALSE  TRUE 
##    33     1
table(grupoB$retencaourinaria)
## 
## FALSE 
##    34
median(grupoB$dor.repouso,na.rm=T)
## [1] 0
IQR(grupoB$dor.repouso,na.rm=T)
## [1] 0
median(grupoB$dor.mov,na.rm=T)
## [1] 2
IQR(grupoB$dor.mov,na.rm=T)
## [1] 5
median(grupoB$piordor,na.rm=T)
## [1] 2
IQR(grupoB$piordor,na.rm=T)
## [1] 5.75
median(grupoB$menordor,na.rm=T)
## [1] 0
IQR(grupoB$menordor,na.rm=T)
## [1] 0