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 ).
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")
#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
# 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
#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
#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
# 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
#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
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
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
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
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