#Loading packages

library(ggplot2)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ez)

Reading data

anamr=read.csv("C:\\Users\\gabri\\Downloads\\anaMR.csv",header=TRUE,sep=";")
anab=read.csv("C:\\Users\\gabri\\Downloads\\anaBasal.csv",header=TRUE,sep=";")
anac <- merge(anab, anamr, by = "id")
ana=subset(anac,anac$Exclude==FALSE)
ana$Group=as.factor(ana$Group)

Data summary

summary(ana)
##        id          Group          Age         Sex                Weight      
##  Min.   : 1.00   Bolus:168   Min.   :35   Length:330         Min.   : 41.00  
##  1st Qu.:16.00   TCI  :162   1st Qu.:39   Class :character   1st Qu.: 60.00  
##  Median :31.00               Median :46   Mode  :character   Median : 68.00  
##  Mean   :30.95               Mean   :45                      Mean   : 72.07  
##  3rd Qu.:46.00               3rd Qu.:50                      3rd Qu.: 83.00  
##  Max.   :60.00               Max.   :55                      Max.   :113.00  
##                                                                              
##     Height          Hypertension       MAPBasal          ASA           
##  Length:330         Mode :logical   Min.   : 69.00   Length:330        
##  Class :character   FALSE:270       1st Qu.: 84.00   Class :character  
##  Mode  :character   TRUE :60        Median : 91.00   Mode  :character  
##                                     Mean   : 91.24                     
##                                     3rd Qu.: 96.00                     
##                                     Max.   :118.00                     
##                                     NA's   :6                          
##   Ecluded        NotIncluded      Exclude             tmin         MAP        
##  Mode :logical   Mode :logical   Mode :logical   Min.   : 0   Min.   : 53.00  
##  FALSE:330       FALSE:330       FALSE:330       1st Qu.: 2   1st Qu.: 78.25  
##                                                  Median : 5   Median : 87.00  
##                                                  Mean   : 5   Mean   : 88.25  
##                                                  3rd Qu.: 8   3rd Qu.: 98.00  
##                                                  Max.   :10   Max.   :137.00  
##                                                                               
##       BIS             HR             EtSevo              SR        
##  Min.   : 6.0   Min.   : 37.00   Min.   :0.00000   Min.   : 0.000  
##  1st Qu.:38.0   1st Qu.: 65.00   1st Qu.:0.00000   1st Qu.: 0.000  
##  Median :50.5   Median : 74.00   Median :0.00000   Median : 0.000  
##  Mean   :55.3   Mean   : 76.62   Mean   :0.03364   Mean   : 2.818  
##  3rd Qu.:73.0   3rd Qu.: 87.00   3rd Qu.:0.00000   3rd Qu.: 0.000  
##  Max.   :99.0   Max.   :121.00   Max.   :1.50000   Max.   :72.000  
## 
summary(subset(ana,ana$Group=="Bolus"))
##        id          Group          Age            Sex           
##  Min.   : 1.00   Bolus:168   Min.   :35.00   Length:168        
##  1st Qu.:14.00   TCI  :  0   1st Qu.:39.75   Class :character  
##  Median :33.00               Median :47.50   Mode  :character  
##  Mean   :31.36               Mean   :45.18                     
##  3rd Qu.:48.50               3rd Qu.:50.00                     
##  Max.   :60.00               Max.   :55.00                     
##                                                                
##      Weight          Height          Hypertension       MAPBasal     
##  Min.   : 52.00   Length:168         Mode :logical   Min.   : 69.00  
##  1st Qu.: 61.50   Class :character   FALSE:138       1st Qu.: 84.00  
##  Median : 75.00   Mode  :character   TRUE :30        Median : 88.00  
##  Mean   : 75.36                                      Mean   : 89.37  
##  3rd Qu.: 86.75                                      3rd Qu.: 95.00  
##  Max.   :113.00                                      Max.   :118.00  
##                                                      NA's   :6       
##      ASA             Ecluded        NotIncluded      Exclude       
##  Length:168         Mode :logical   Mode :logical   Mode :logical  
##  Class :character   FALSE:168       FALSE:168       FALSE:168      
##  Mode  :character                                                  
##                                                                    
##                                                                    
##                                                                    
##                                                                    
##       tmin         MAP              BIS              HR        
##  Min.   : 0   Min.   : 57.00   Min.   : 6.00   Min.   : 37.00  
##  1st Qu.: 2   1st Qu.: 76.75   1st Qu.:34.00   1st Qu.: 65.00  
##  Median : 5   Median : 85.00   Median :44.00   Median : 74.00  
##  Mean   : 5   Mean   : 86.24   Mean   :50.54   Mean   : 76.26  
##  3rd Qu.: 8   3rd Qu.: 95.00   3rd Qu.:70.00   3rd Qu.: 88.00  
##  Max.   :10   Max.   :129.00   Max.   :99.00   Max.   :121.00  
##                                                                
##      EtSevo              SR        
##  Min.   :0.00000   Min.   : 0.000  
##  1st Qu.:0.00000   1st Qu.: 0.000  
##  Median :0.00000   Median : 0.000  
##  Mean   :0.06607   Mean   : 5.518  
##  3rd Qu.:0.00000   3rd Qu.: 0.000  
##  Max.   :1.50000   Max.   :72.000  
## 
summary(subset(ana,ana$Group=="TCI"))
##        id          Group          Age            Sex           
##  Min.   : 6.00   Bolus:  0   Min.   :35.00   Length:162        
##  1st Qu.:19.00   TCI  :162   1st Qu.:38.00   Class :character  
##  Median :30.00               Median :46.00   Mode  :character  
##  Mean   :30.52               Mean   :44.81                     
##  3rd Qu.:39.00               3rd Qu.:51.00                     
##  Max.   :56.00               Max.   :55.00                     
##      Weight          Height          Hypertension       MAPBasal     
##  Min.   : 41.00   Length:162         Mode :logical   Min.   : 74.00  
##  1st Qu.: 58.00   Class :character   FALSE:132       1st Qu.: 83.00  
##  Median : 67.00   Mode  :character   TRUE :30        Median : 92.00  
##  Mean   : 68.67                                      Mean   : 93.11  
##  3rd Qu.: 77.00                                      3rd Qu.:103.00  
##  Max.   :112.00                                      Max.   :111.00  
##      ASA             Ecluded        NotIncluded      Exclude       
##  Length:162         Mode :logical   Mode :logical   Mode :logical  
##  Class :character   FALSE:162       FALSE:162       FALSE:162      
##  Mode  :character                                                  
##                                                                    
##                                                                    
##                                                                    
##       tmin         MAP              BIS              HR             EtSevo 
##  Min.   : 0   Min.   : 53.00   Min.   :32.00   Min.   : 55.00   Min.   :0  
##  1st Qu.: 2   1st Qu.: 80.00   1st Qu.:43.25   1st Qu.: 66.00   1st Qu.:0  
##  Median : 5   Median : 88.50   Median :55.00   Median : 74.00   Median :0  
##  Mean   : 5   Mean   : 90.33   Mean   :60.25   Mean   : 76.99   Mean   :0  
##  3rd Qu.: 8   3rd Qu.: 99.00   3rd Qu.:77.00   3rd Qu.: 85.75   3rd Qu.:0  
##  Max.   :10   Max.   :137.00   Max.   :99.00   Max.   :117.00   Max.   :0  
##        SR         
##  Min.   :0.00000  
##  1st Qu.:0.00000  
##  Median :0.00000  
##  Mean   :0.01852  
##  3rd Qu.:0.00000  
##  Max.   :2.00000

Main outcome (MAP)

Calculate means by time and group

ana_stats <- ana %>%
    group_by(tmin, Group) %>%
    summarise(
        MAP_mean = mean(MAP, na.rm = TRUE),
        MAP_sd = sd(MAP, na.rm = TRUE),
        .groups = 'drop'
    )

Plot

ggplot(ana_stats, aes(x = tmin, y = MAP_mean, group = Group, color = Group)) +
    geom_errorbar(aes(ymin = MAP_mean - MAP_sd, ymax = MAP_mean + MAP_sd), width = 0.1, position = position_dodge(0.2), alpha = 0.6) +
    geom_line(aes(linetype = Group), position = position_dodge(0.2)) +
    geom_point(position = position_dodge(0.2), size = 3, alpha = 0.6) +
    labs(x = "Time after induction (min)", y = "Mean arterial pressure (MAP)", color = "Group") +
    theme_minimal() +
    theme(legend.position = "bottom")

Repeated measures ANOVA

resultados_ez <- ezANOVA(data = ana, dv = .(MAP), wid = .(id), within = .(tmin), detailed = TRUE)
resultados_ez
## $ANOVA
##   Effect DFn DFd      SSn      SSd        F          p p<.05        ges
## 1   tmin   1  54 498.2403 7650.831 3.516608 0.06616801       0.06114074

Secondary outcomes

BIS

Calculate means by time and group

ana_stats <- ana %>%
    group_by(tmin, Group) %>%
    summarise(
        BIS_mean = mean(BIS, na.rm = TRUE),
        BIS_sd = sd(BIS, na.rm = TRUE),
        .groups = 'drop'
    )

Plot

ggplot(ana_stats, aes(x = tmin, y = BIS_mean, group = Group, color = Group)) +
    geom_errorbar(aes(ymin = BIS_mean - BIS_sd, ymax = BIS_mean + BIS_sd), width = 0.1, position = position_dodge(0.2), alpha = 0.6) +
    geom_line(aes(linetype = Group), position = position_dodge(0.2)) +
    geom_point(position = position_dodge(0.2), size = 3, alpha = 0.6) +
    labs(x = "Time after induction (min)", y = "Bispectral index (BIS)", color = "Group") +
    theme_minimal() +
    theme(legend.position = "bottom")

Repeated measures ANOVA

resultados_ez <- ezANOVA(data = ana, dv = .(BIS), wid = .(id), within = .(tmin), detailed = TRUE)
resultados_ez
## $ANOVA
##   Effect DFn DFd      SSn     SSd        F            p p<.05       ges
## 1   tmin   1  54 76092.85 6560.24 626.3511 2.197161e-31     * 0.9206292

SR

Calculate means by time and group

ana_stats <- ana %>%
    group_by(tmin, Group) %>%
    summarise(
        SR_mean = mean(SR, na.rm = TRUE),
        SR_sd = sd(SR, na.rm = TRUE),
        .groups = 'drop'
    )

Plot

ggplot(ana_stats, aes(x = tmin, y = SR_mean, group = Group, color = Group)) +
    geom_errorbar(aes(ymin = SR_mean - SR_sd, ymax = SR_mean + SR_sd), width = 0.1, position = position_dodge(0.2), alpha = 0.6) +
    geom_line(aes(linetype = Group), position = position_dodge(0.2)) +
    geom_point(position = position_dodge(0.2), size = 3, alpha = 0.6) +
    labs(x = "Time after induction (min)", y = "Suppression rate (SR)", color = "Group") +
    theme_minimal() +
    theme(legend.position = "bottom")

Repeated measures ANOVA

resultados_ez <- ezANOVA(data = ana, dv = .(SR), wid = .(id), within = .(tmin), detailed = TRUE)
resultados_ez
## $ANOVA
##   Effect DFn DFd      SSn      SSd        F          p p<.05        ges
## 1   tmin   1  54 71.31844 1252.853 3.073941 0.08523143       0.05385892

HR

Calculate means by time and group

ana_stats <- ana %>%
    group_by(tmin, Group) %>%
    summarise(
        HR_mean = mean(HR, na.rm = TRUE),
        HR_sd = sd(HR, na.rm = TRUE),
        .groups = 'drop'
    )

Plot

ggplot(ana_stats, aes(x = tmin, y = HR_mean, group = Group, color = Group)) +
    geom_errorbar(aes(ymin = HR_mean - HR_sd, ymax = HR_mean + HR_sd), width = 0.1, position = position_dodge(0.2), alpha = 0.6) +
    geom_line(aes(linetype = Group), position = position_dodge(0.2)) +
    geom_point(position = position_dodge(0.2), size = 3, alpha = 0.6) +
    labs(x = "Time after induction (min)", y = "Heart Rate (HR)", color = "Group") +
    theme_minimal() +
    theme(legend.position = "bottom")

Repeated measures ANOVA

resultados_ez <- ezANOVA(data = ana, dv = .(BIS), wid = .(id), within = .(tmin), detailed = TRUE)
resultados_ez
## $ANOVA
##   Effect DFn DFd      SSn     SSd        F            p p<.05       ges
## 1   tmin   1  54 76092.85 6560.24 626.3511 2.197161e-31     * 0.9206292