# Rating of Perceived Exertion 
# A large cross-sectional study defining intensity levels for individual physical activity recommendations
# Grummt M, Hafermann L, Claussen L, Herrmann C, Wolfarth B
# 29.01.2024

sessionInfo() # see R_Session_Info.txt

pacman::p_load(readxl, tidyverse, ggplot2, janitor, tableone, 
              naniar,plyr, ggpubr,stringr, reshape2, scales,MASS)

## Data Cleaning ----------------------------------------------------------------------------------------
# read data sets
# results for lactat values are stored in a different data set
# and therefore data sets need to be matched

Data_RPE <- read_excel("Borg_Export_Grummt_Anonymisiert.xlsx",col_types = c("text", rep("numeric", 59)))
Data_RPE <- as_tibble(Data_RPE)

# data for missing lactat values 
full_lactat <- read_excel("imed_Datenexport_anonymisiert.xlsx", 
                          col_types = c("skip", "text", "skip", 
                                        "text", rep("numeric", 45),
                                        "skip"))

# recoding 
full_lactat <- full_lactat %>% mutate(Ergometrieart = case_when(
  Ergometrieart == "F" ~1,
  Ergometrieart == "L" ~2,
  Ergometrieart == "H" ~3))%>% 
  mutate(Ergometrieart = as.numeric(Ergometrieart))


colnames(full_lactat) <- c( "ID", "Ergometrieart", "Laktat_Ruhe", "Laktat_1", "Laktat_2",        
                            "Laktat_3", "Laktat_4", "Laktat_5", "Laktat_6", "Laktat_7", 
                            "Laktat_8", "Laktat_9",  "Laktat_10", "Laktat_11", "Laktat_12", 
                            "Laktat_13", "Laktat_14", "Laktat_15", 
                            "Laktat_16", "Laktat_17", "Laktat_18", "Laktat_19", "Laktat_20", 
                            "Laktat_21", "Laktat_max", "RPE_Ruhe","RPE_1", "RPE_2", "RPE_3", 
                            "RPE_4","RPE_5", "RPE_6", "RPE_7", "RPE_8",  "RPE_9", "RPE_10", 
                            "RPE_11","RPE_12", "RPE_13", "RPE_14", "RPE_15", "RPE_16",  
                            "RPE_17","RPE_18", "RPE_19","RPE_20", "RPE_max")
full_lactat <- full_lactat %>% dplyr::select(-RPE_Ruhe)


Data_RPE <- clean_names(Data_RPE)
colnames(Data_RPE) <- c("ID", "Ergometrieart", "Alter", "Geschlecht", "Koerpergewicht", 
                    "Koerpergroesse", "BMI", "Laktat_Ruhe", "Laktat_1", "Laktat_2",        
                    "Laktat_3", "Laktat_4", "Laktat_5", "Laktat_6", "Laktat_7", 
                    "Laktat_8", "Laktat_9",  "Laktat_10", "Laktat_11", "Laktat_12", 
                    "Laktat_13", "Laktat_14", "Laktat_15", 
                    "Laktat_16", "Laktat_17", "Laktat_18", "Laktat_19", "Laktat_20", "Laktat_21", 
                    "Laktat_min", "Laktat_max", "RPE_Ruhe","RPE_1", "RPE_2", "RPE_3", "RPE_4", 
                    "RPE_5", "RPE_6", "RPE_7", "RPE_8",  "RPE_9", "RPE_10", "RPE_11","RPE_12", "RPE_13", "RPE_14", 
                    "RPE_15", "RPE_16", "RPE_17","RPE_18", "RPE_19", "RPE_max", 
                    "Lactat_an_LT", "Lactatkonzentration_IAS", 
                    "Perzentil_IAS_Laufen allgemein", "Perzentil_IAS_Laufen_Mitte", 
                    "Perzentil_IAS_Laufen_Ausdauersport", "Perzentil_IAS_Radfahren_allgemein", 
                    "Perzentil_IAS_Radfahren_Mitte", "Perzentil_IAS_Radfahren_Ausdauersport"
)


# Left join of Data_RPE and full lactat
LJ <- left_join(Data_RPE, full_lactat, by = c("ID", "Ergometrieart","Laktat_Ruhe", "Laktat_1","Laktat_2")) 
LJ <- LJ%>% 
  mutate( Laktat_3 = coalesce(Laktat_3.x, Laktat_3.y),
          Laktat_4 = coalesce(Laktat_4.x, Laktat_4.y),
          Laktat_5 = coalesce(Laktat_5.x, Laktat_5.y),
          Laktat_6 = coalesce(Laktat_6.x, Laktat_6.y),
          Laktat_7 = coalesce(Laktat_7.x, Laktat_7.y),
          Laktat_8 = coalesce(Laktat_8.x, Laktat_8.y),
          Laktat_9 = coalesce(Laktat_9.x, Laktat_9.y),
          Laktat_10 = coalesce(Laktat_10.x, Laktat_10.y),
          Laktat_11 = coalesce(Laktat_11.x, Laktat_11.y),
          Laktat_12 = coalesce(Laktat_12.x, Laktat_12.y),
          Laktat_13 = coalesce(Laktat_13.x, Laktat_13.y),
          Laktat_14 = coalesce(Laktat_14.x, Laktat_14.y),
          Laktat_15 = coalesce(Laktat_15.x, Laktat_15.y),
          Laktat_16 = coalesce(Laktat_16.x, Laktat_16.y),
          Laktat_17 = coalesce(Laktat_17.x, Laktat_17.y),
          Laktat_18 = coalesce(Laktat_18.x, Laktat_18.y),
          Laktat_19 = coalesce(Laktat_19.x, Laktat_19.y),
          Laktat_20 = coalesce(Laktat_20.x, Laktat_20.y),
          Laktat_21 = coalesce(Laktat_21.x, Laktat_21.y),
          Laktat_max = coalesce(Laktat_max.x, Laktat_max.y),
          RPE_1 = coalesce(RPE_1.x, RPE_1.y),
          RPE_2 = coalesce(RPE_2.x, RPE_2.y),
          RPE_3 = coalesce(RPE_3.x, RPE_3.y),
          RPE_4 = coalesce(RPE_4.x, RPE_4.y),
          RPE_5 = coalesce(RPE_5.x, RPE_5.y),
          RPE_6 = coalesce(RPE_6.x, RPE_6.y),
          RPE_7 = coalesce(RPE_7.x, RPE_7.y),
          RPE_8 = coalesce(RPE_8.x, RPE_8.y),
          RPE_9 = coalesce(RPE_9.x, RPE_9.y),
          RPE_10 = coalesce(RPE_10.x, RPE_10.y),
          RPE_11 = coalesce(RPE_11.x, RPE_11.y),
          RPE_12 = coalesce(RPE_12.x, RPE_12.y),
          RPE_13 = coalesce(RPE_13.x, RPE_13.y),
          RPE_14 = coalesce(RPE_14.x, RPE_14.y),
          RPE_15 = coalesce(RPE_15.x, RPE_15.y),
          RPE_16 = coalesce(RPE_16.x, RPE_16.y),
          RPE_17 = coalesce(RPE_17.x, RPE_17.y),
          RPE_18 = coalesce(RPE_18.x, RPE_18.y),
          RPE_19 = coalesce(RPE_19.x, RPE_19.y),
          RPE_max= coalesce(RPE_max.x, RPE_max.y) 
  ) %>% 
  dplyr::select(
    -Laktat_3.x, -Laktat_3.y,
    -Laktat_4.x, -Laktat_4.y, -Laktat_5.x, -Laktat_5.y,-Laktat_6.x, -Laktat_6.y,
    -Laktat_7.x, -Laktat_7.y,-Laktat_7.x, -Laktat_7.y,-Laktat_8.x, -Laktat_8.y,
    -Laktat_9.x, -Laktat_9.y,-Laktat_10.x, -Laktat_10.y,-Laktat_11.x, -Laktat_11.y,
    -Laktat_12.x, -Laktat_12.y,-Laktat_13.x, -Laktat_13.y,-Laktat_14.x, -Laktat_14.y,
    - Laktat_15.x, -Laktat_15.y,-Laktat_16.x, -Laktat_16.y,-Laktat_17.x, -Laktat_17.y,
    -Laktat_18.x, -Laktat_18.y,-Laktat_19.x, -Laktat_19.y,-Laktat_20.x, -Laktat_20.y,
    -Laktat_21.x, -Laktat_21.y, -Laktat_max.x, -Laktat_max.y,
    -RPE_1.x, -RPE_1.y,-RPE_2.x, -RPE_2.y,-RPE_3.x, -RPE_3.y,
    -RPE_4.x, -RPE_4.y, -RPE_5.x, -RPE_5.y,-RPE_6.x, -RPE_6.y,
    -RPE_7.x, -RPE_7.y,-RPE_7.x, -RPE_7.y, -RPE_8.x, -RPE_8.y,
    -RPE_9.x, -RPE_9.y,-RPE_10.x, -RPE_10.y,-RPE_11.x, -RPE_11.y,
    -RPE_12.x, -RPE_12.y,-RPE_13.x, -RPE_13.y,-RPE_14.x, -RPE_14.y,
    -RPE_15.x, -RPE_15.y,-RPE_16.x, -RPE_16.y,-RPE_17.x, -RPE_17.y,
    -RPE_18.x, -RPE_18.y,-RPE_19.x, -RPE_19.y, -RPE_max.x, -RPE_max.y
  )


# rearranging of the data set
Data_RPE <- LJ[,c(dput(colnames(Data_RPE))[1:51],"RPE_20",dput(colnames(Data_RPE))[52:60])]

# correction of mistakes in the data set 
# lactat = 0.5 false value 
Data_RPE[Data_RPE$ID == "42557456","Lactat_Ruhe"] <- 0.05

# delete exactly identical rows 
Data_RPE <- Data_RPE %>% distinct()

# one person has done a bike and treadmill ergometry at exactly the same time  -> treadmill data deleted
Data_RPE<- Data_RPE[!(Data_RPE$ID =="42345006" & Data_RPE$Ergometrieart == 2),]
Data_RPE<- Data_RPE[!(Data_RPE$ID =="42449098" & is.na(Data_RPE$RPE_10)),]

# some people came more than once, therefore only the first visit is used
ID_numb <- tabyl(Data_RPE$ID) %>% arrange(desc(n)) %>% filter(n >1)
ID_numb <- ID_numb[,1]
double_IDs <- Data_RPE %>% filter(ID %in% ID_numb) %>% arrange(ID)

list_doubleIDs <-split(double_IDs, double_IDs$ID)    # gives a list where every list entry belongs to one ID
list_maxAlter <- lapply(list_doubleIDs, function(x) max(x$Alter))   # age is used as proxy for earlier visits
IDs_list <- names(list_maxAlter)

# re-entries (older entry) are excluded
for(i in 1:length(IDs_list)){
  Data_RPE<- Data_RPE[!(Data_RPE$ID ==IDs_list[i] & Data_RPE$Alter == list_maxAlter[[i]]),]
}

# Patient with implausible lactat at IAs 
Data_RPE<- Data_RPE[!(Data_RPE$ID =="41348763"),]  

#without hand bikes(Ergometrieart 3)
Data_RPE <- Data_RPE %>%filter(Ergometrieart != 3)

# VO2max values ---------------------------------------------------------------------
# calculations of VO2max are stored in a different table, which needs to merged 

data_power <- read_excel("Borg_Export_Grummt_VO2max_Berechnung.xlsx")
data_vo2max <- tibble(ID = data_power$PIZ, Vo2max = data_power$VO2max, 
                      Alter = data_power$`Alter (Jahre)`, Laktat_1 = data_power$`Laktat(1) (mmol/l)`)

Join <- left_join(Data_RPE, data_vo2max, by = c("ID", "Alter", "Laktat_1"))

Freq <- as.data.frame(tabyl(Join$ID))
Freq[Freq$n > 1,]

Join <- Join[!duplicated(Join),]
Join %>% filter(ID == "42345006")
Join <- Join[-which(Join$ID== "42345006")[1],]
Join[which(Join$ID== "42345006"),"Ergometrieart"] <-2

Data_RPE$VO2max_full <- Join$Vo2max
## Table 1 -----------------------------------------------------------------------------------------------
Data_RPE <- Data_RPE %>% mutate(BMI_cat = case_when( 
                BMI < 18.5 ~ "BMI_untergewicht",
                BMI >= 18.5 & BMI < 25 ~ "BMI_normal", 
                BMI >= 25 & BMI < 30 ~ "BMI_übergewicht",
                BMI >= 30 & BMI < 35 ~ "BMI_adipositas_g1",
                BMI >= 35 & BMI < 40 ~ "BMI_adipositas_g2",
                BMI >= 40 ~ "BMI_adipositas_g3"))


get_t1 <- function(data,strata){
  tab1_data <- data %>% dplyr::select(c(Ergometrieart, Alter,Geschlecht,BMI_cat, 
                                 Koerpergewicht, Koerpergroesse,
                                 Lactat_an_LT, Lactatkonzentration_IAS, VO2max_full 
                          )) %>%
    mutate(Ergometrieart = as_factor(Ergometrieart),
           Geschlecht = as_factor(Geschlecht), 
           BMI_cat = as_factor(BMI_cat))
  
  T_one <- CreateTableOne(data = tab1_data, strata = strata)
  missings <- colSums(is.na(tab1_data))   
  return(list(T_one, missings))
}

T_one_total <- get_t1(Data_RPE)
T_one_sex <- get_t1(Data_RPE, strata = "Geschlecht")
T_one_ergometry <- get_t1(Data_RPE, strata = "Ergometrieart")

## 1st Step: Calculation of the RPE values at LT2---------------------------------------------------- 
# extraction of the lactat and rpe values plus generation of data indicating which value is given 
Lactat <- Data_RPE[,c(9:28)]
Lactat <- apply(Lactat,c(1,2), function(x) {ifelse(is.na(x), 0,1)} )
Lactat_count <- Lactat %>% count() %>% arrange(desc(freq))

Lactat_count <- as.data.frame(Lactat_count)
rownames(Lactat_count)<- make.names(as.character(Lactat_count$freq), unique = TRUE)

rpe <- Data_RPE[,c(33:52)]
rpe <- apply(rpe,c(1,2), function(x) {ifelse(is.na(x), 0,1)} )
rpe_count <- rpe %>% count() %>% arrange(desc(freq))

rpe_count <- as.data.frame(rpe_count)
rownames(rpe_count)<- make.names(as.character(rpe_count$freq), unique = TRUE)

# number of pairs of lactat values and rpe values 
L_sum <- apply(Lactat, 1, sum)
B_sum <- apply(rpe, 1, sum)
length(which(L_sum != B_sum))

dop_value <- NA
for(i in 1: nrow(Lactat)){
  add <- Lactat[i,] + rpe[i, ]
  dop_value[i] <- length(which(add ==2))
}

tabyl(dop_value)
dop_value_t <-tibble(dop_value <- dop_value)

# Calculation of the number of steps in the ergometry ----------------------------------------------
max_stage <- rep(0, length(Lactat[,1]))

for(j in 1:length(Lactat[,1])){
  for(i in 20:1){
    if(Lactat[j,i] == 1){
      max_stage[j] <- i
      break}
  }
}  
Data_RPE$max_stage <- max_stage


# Spline Interpolation-------------------------------------------------------------------
# RPE values at LT2, 2mmol/l, 3mmmol/l and 4mmol/l

rpe_LT2 <- rep(NA,nrow(Data_RPE))
rpe_lactat2 <- rep(NA,nrow(Data_RPE))
rpe_lactat3 <- rep(NA,nrow(Data_RPE))
rpe_lactat4 <- rep(NA,nrow(Data_RPE))
ind <- NA

for(i in 1:nrow(Data_RPE)){ 
  # at least 3 pairs of values (excludes 5 patients)
  if(dop_value[i] >= 3){
    rpe <- Data_RPE[i,33:52]
    lactat <- Data_RPE[i, 9:28]
    LT2 <- as.numeric(Data_RPE[i,"Lactatkonzentration_IAS"])
    Lak2 <- 2 
    Lak3 <- 3 
    Lak4 <- 4
    
    if(is.na(lactat[2]) || (lactat[2] >= lactat[1])){
      ind[i] <-1
    }
    else {
      ind[i] <-0
      rpe <- rpe[-1]
      lactat <- lactat[-1] 
    } 
    data_rpe_lactat <- tibble(rpe = t(rpe), lactat = t(lactat))
    sp_rpe <- splinefun(x =data_rpe_lactat$lactat, y = data_rpe_lactat$rpe,
                         method = "monoH.FC") #monoH.FC
    rpe_LT2[i] <- sp_rpe(LT2)
    rpe_lactat2[i] <- sp_rpe(Lak2)
    rpe_lactat3[i] <- sp_rpe(Lak3)
    rpe_lactat4[i] <- sp_rpe(Lak4)
  }}

## manual change of wrong splinefun interpolation

# 1730 -> rpe -2781 (measurement error)
# 6224 -> rpe 49 (no correct function) 
# 4285 -> rpe 24 (IAS higher than 20) -> set to 20 
# 2985 -> rpe 21 -> set to 20 
# 970 -> rpe 5 -> change to 11 

# implausibler curves: 
implausibel <- which(round(rpe_LT2) == -2781) # lactat: 6.78, 6.82, 6.79, 6.79, rpe: 7, 10,13,18
implausibel2 <- which(round(rpe_LT2) == 49)   # lactat: 1.33, 1.11, 1.38, 1.53, 3.6
                                               # but only rpe values for the fist 4 stages 11,13,15,19 available
                                               # -> Lactat at LT2 = 2.36
rpe_LT2[implausibel] <- NA
rpe_LT2[implausibel2] <- NA
rpe_lactat2[implausibel] <- NA
rpe_lactat2[implausibel2] <- NA
rpe_lactat3[implausibel] <- NA
rpe_lactat3[implausibel2] <- NA
rpe_lactat4[implausibel] <- NA
rpe_lactat4[implausibel2] <- NA

rpe_LT2[which(round(rpe_LT2) == 24)] <- 20
rpe_LT2[which(round(rpe_LT2) == 21)] <- 20
rpe_LT2[which(round(rpe_LT2) == 5)] <- 11
rpe_lactat2[which(round(rpe_lactat2) <6)] <- 6
rpe_lactat2[which(round(rpe_lactat2) > 20)] <- 20
rpe_lactat3[which(round(rpe_lactat3) <6)] <- 6
rpe_lactat3[which(round(rpe_lactat3) > 20)] <- 20
rpe_lactat4[which(round(rpe_lactat4) <6)] <- 6
rpe_lactat4[which(round(rpe_lactat4) > 20)] <- 20

Data_RPE$rpe_LT2 <- round(rpe_LT2)
Data_RPE$rpe_lactat2 <- round(rpe_lactat2)
Data_RPE$rpe_lactat3 <- round(rpe_lactat3)
Data_RPE$rpe_lactat4 <- round(rpe_lactat4)

# Figure 1, Example for the spline interpolation #######################################
# Example Patient 

expl_patient <- tibble(rpe = t(unname(Data_RPE[Data_RPE$ID == "1394189",33:38])),
                       lactat = t(unname(Data_RPE[Data_RPE$ID == "1394189", 9:14])))
lak_LT2 <-as.numeric(Data_RPE[Data_RPE$ID == "1394189", "Lactatkonzentration_IAS"])
plot(sp_rpe)

fun = splinefun(x =expl_patient$lactat, y = expl_patient$rpe,
                              method = "monoH.FC")
fun_data <- tibble( x= seq(1.38,7.36,0.001), y = fun(x))
ggplot(data = expl_patient, aes(x = lactat, y = rpe)) +
  geom_point(shape =19)+
  geom_line(aes(x = x, y=y), data = fun_data)+
  geom_vline(xintercept = c(2,3,4,lak_LT2), col = c("dodgerblue3","dodgerblue3","dodgerblue3","firebrick1"), linetype = c(2,2,2,1)) +
  geom_segment(aes(x = 0, y = fun(lak_LT2), xend = lak_LT2, yend = fun(lak_LT2)), color = "firebrick1") +
  theme_classic()+
  scale_x_continuous(breaks = c(0:8, lak_LT2),
                                labels = c( "0", "1", "2", "3", "4", "5", "6","7", "8", "LT2"),
                     expand = c(0.001, 0.05),
                     limits = c(0,8), name = "Blood lactate (bLa)")+ 
  theme(axis.text.x = element_text(face=c("plain","plain","bold","bold","bold", rep("plain",4),"bold"), size = 14), 
        axis.text.y = element_text(size = 14), 
        axis.title.x = element_text(size = 14), 
        axis.title.y = element_text(size = 14),
        panel.grid.major = element_line(size = 0.5, linetype = 'solid', colour = "grey90")) +
  scale_y_continuous(name = "RPE", breaks = 6:20, limits = c(6,20)) 
 
#ggsave("Fig1.tiff",width = 20, height = 15, units = "cm", dpi= 300)

########################################################################################

# Barplots (Figure 2)##################################################################

g1 <- ggplot(data = Data_RPE, aes(x =rpe_LT2 )) +
  geom_bar(stat = "count") +
  scale_y_continuous(limits = c(0, 1510))+
  xlab("RPE")+ 
  ylab("Count")+
  ggtitle("LT2")+
  theme_bw()+
  theme(axis.text = element_text(size = 12), 
        axis.title = element_text(size = 12))
g2 <- ggplot(data = Data_RPE, aes(x =rpe_lactat2 )) +
  geom_bar(stat = "count") +
  scale_y_continuous(limits = c(0, 1510))+
  xlab("RPE")+
  ylab("Count")+
  ggtitle("2 mmol/l")+
  theme_bw()+
  theme(axis.text = element_text(size = 12), 
        axis.title = element_text(size = 12))
g3 <- ggplot(data = Data_RPE, aes(x =rpe_lactat3 )) +
  geom_bar(stat = "count") +
  scale_y_continuous(limits = c(0, 1510))+
  xlab("RPE")+
  ylab("Count")+
  ggtitle("3 mmol/l")+
  theme_bw()+
  theme(axis.text = element_text(size = 12), 
        axis.title = element_text(size = 12))
g4 <- ggplot(data = Data_RPE, aes(x =rpe_lactat4 )) +
  geom_bar(stat = "count") +
  scale_y_continuous(limits = c(0, 1510))+
  xlab("RPE")+
  ylab("Count")+
  ggtitle("4 mmol/l")+
  theme_bw()+
  theme(axis.text = element_text(size = 12), 
        axis.title = element_text(size = 12))

ggarrange(g1,g2,g3,g4, nrow =2, ncol = 2)

#ggsave("Fig2.tiff",width = 20, height = 15, units = "cm", dpi= 300)
########################################################################################################

## 2nd Step: Ordinal Regression---------------------------------------------------------------------

## LT2---------------------------------------------------------------------------------------
# with polr (MASS)

fit_ord_LT2 <- polr(as.factor(rpe_LT2) ~ Alter + as.factor(Geschlecht) + as.factor(Ergometrieart)+VO2max_full +
                  max_stage
                , data = Data_RPE, Hess = T)
pred <- predict(fit_ord_LT2, type = "probs")

summary(fit_ord_LT2)
ctable  <- coef(summary(fit_ord_LT2))
p <- pnorm(abs(ctable[, "t value"]), lower.tail = FALSE) * 2
ctable <- cbind(ctable, "p value" = p)
ci <- confint(fit_ord_LT2, type = "profile")  #calculate confidence interavals
exp(coef(fit_ord_LT2))
exp(cbind(OR = coef(fit_ord_LT2), ci))

# Prediction plots
# VO2max
newdat <- data.frame(
  Ergometrieart = rep(1:2, 200),
  Geschlecht = rep(0:1, each = 200),
  Alter = rep(mean(Data_RPE$Alter),400), 
  VO2max_full = rep(seq(from = 4.8, to = 87, length.out = 100), 4),
  max_stage = rep(mean(Data_RPE$max_stage),400))

newdat <- cbind(newdat, predict(fit_ord_LT2, newdat, type = "probs"))
newdat <- newdat %>% dplyr::select(-Alter, -max_stage)
lnewdat <- melt(newdat, id.vars = c("Ergometrieart", "Geschlecht", "VO2max_full"),
                variable.name = "Level", value.name="Probability")

lnewdat$Ergometrieart.labs = c("Bicycle","Treadmill")
lnewdat$Geschlecht.labs = rep(c("Female","Male"),each = 200)

rpe_text <- data.frame(
  label = c("15", "15","16","14","15","16","15","14"),
  Ergometrieart.labs   = c("Bicycle", "Treadmill","Bicycle","Treadmill",
                           "Bicycle","Bicycle","Treadmill","Treadmill"),
  Geschlecht.labs = c("Female","Female","Female","Female",
                      "Male", "Male", "Male", "Male"),
  x     = rep(8,8),
  y     = c(0.26, 0.255,0.225,0.22,0.26,0.23,0.255,0.215)
)

ggplot(lnewdat, aes(x = VO2max_full, y = Probability, colour = Level)) +
  geom_line() + 
  facet_grid(Geschlecht.labs ~ Ergometrieart.labs, labeller=label_value)+
  geom_text(data = rpe_text, mapping = aes(label = label,x=x, y=y), 
            inherit.aes = FALSE, size = 4)+
  theme_bw() +
  xlab("VO2max") +
  scale_colour_discrete(name = "RPE") + 
  theme(axis.text = element_text(size = 15), 
        axis.title = element_text(size = 15),
        strip.text = element_text(size =15), 
        legend.text = element_text(size = 15), 
        legend.title = element_text(size = 15))

#ggsave("Fig_S_LT2_VO2max.tiff",width = 20, height = 15, units = "cm", dpi= 300)

# Age 
newdat <- data.frame(
  Ergometrieart = rep(1:2, 200),
  Geschlecht = rep(0:1, each = 200),
  Alter = rep(seq(from = 10, to = 85, length.out = 100), 4), 
  VO2max_full = rep(mean(Data_RPE$VO2max_full),400), 
  max_stage = rep(mean(Data_RPE$max_stage),400))

newdat <- cbind(newdat, predict(fit_ord_LT2, newdat, type = "probs"))
newdat <- newdat %>% dplyr::select(-VO2max_full, -max_stage)
lnewdat <- melt(newdat, id.vars = c("Ergometrieart", "Geschlecht", "Alter"),
                variable.name = "Level", value.name="Probability")

lnewdat$Ergometrieart.labs = c("Bicycle","Treadmill")
lnewdat$Geschlecht.labs = rep(c("Female","Male"),each = 200)

rpe_text <- data.frame(
  label = c("15", "16","15","14","15","16","15","14"),
  Ergometrieart.labs   = c("Bicycle","Bicycle","Treadmill","Treadmill",
                           "Bicycle","Bicycle","Treadmill","Treadmill"),
  Geschlecht.labs = c("Female","Female","Female","Female",
                      "Male", "Male", "Male", "Male"),
  x     = rep(12,8),
  y     = c(0.26, 0.21,0.245,0.225,0.26,0.215,0.245,0.225)
)

ggplot(lnewdat, aes(x = Alter, y = Probability, colour = Level)) +
  geom_line() + 
  facet_grid(Geschlecht.labs ~ Ergometrieart.labs, labeller=label_value)+
  geom_text(data = rpe_text, mapping = aes(label = label,x=x, y=y), 
            inherit.aes = FALSE, size = 4)+
  theme_bw()+ 
  xlab("Age")+
  scale_colour_discrete(name = "RPE")+
  theme(axis.text = element_text(size = 15), 
        axis.title = element_text(size = 15),
        strip.text = element_text(size =15), 
        legend.text = element_text(size = 15), 
        legend.title = element_text(size = 15))

#ggsave("Fig_LT2_Age.tiff",width = 20, height = 15, units = "cm", dpi= 300)

# Number of stages 
newdat <- data.frame(
  Ergometrieart = rep(1:2, 200),
  Geschlecht = rep(0:1, each = 200),
  Alter = rep(mean(Data_RPE$Alter, 400)), 
  VO2max_full = rep(mean(Data_RPE$VO2max_full),400), 
  max_stage = rep(seq(from = 2, to = 10, length.out = 100), 4))

newdat <- cbind(newdat, predict(fit_ord_LT2, newdat, type = "probs"))
newdat <- newdat %>% dplyr::select(-VO2max_full, -Alter)
lnewdat <- melt(newdat, id.vars = c("Ergometrieart", "Geschlecht", "max_stage"),
                variable.name = "Level", value.name="Probability")

lnewdat$Ergometrieart.labs = c("Bicycle","Treadmill")
lnewdat$Geschlecht.labs = rep(c("Female","Male"),each = 200)


rpe_text <- data.frame(
  label = c("15", "14","16","14","15","16","15","14","16","14","15","16"),
  Ergometrieart.labs   = c("Bicycle","Bicycle","Bicycle","Treadmill","Treadmill","Treadmill",
                           "Bicycle","Bicycle","Bicycle","Treadmill","Treadmill","Treadmill"),
  Geschlecht.labs = c("Female","Female","Female","Female","Female","Female",
                      "Male", "Male", "Male", "Male", "Male", "Male"),
  x     = c(rep(c(2.25,2.25, 9.7),2), rep(2.25,3), 2.25,2.25,9.7), 
  y     = c(0.24, 0.21,0.225,0.24,0.2,0.21,0.24,0.21,0.155,0.24,0.205,0.21)
)

ggplot(lnewdat, aes(x = max_stage, y = Probability, colour = Level)) +
  geom_line() + 
  facet_grid(Geschlecht.labs ~ Ergometrieart.labs, labeller=label_value)+
  geom_text(data = rpe_text, mapping = aes(label = label,x=x, y=y), 
            inherit.aes = FALSE, size = 4)+
  theme_bw()+
  scale_x_continuous(breaks = 2:10)+
  scale_colour_discrete(name = "RPE")+
  theme(axis.text = element_text(size = 15), 
        axis.title = element_text(size = 15),
        strip.text = element_text(size =15), 
        legend.text = element_text(size = 15), 
        legend.title = element_text(size = 15)) +
  xlab("Number of stages")

ggsave("Fig_LT2_Nstages.tiff",width = 20, height = 15, units = "cm", dpi= 300)

## RPE at 2mmol/l lactat--------------------------------------------------------
fit_ord_lact2 <- polr(as.factor(rpe_lactat2) ~ Alter + as.factor(Geschlecht) + as.factor(Ergometrieart)+VO2max_full +
                  max_stage
                , data = Data_RPE, Hess = T)
tabyl(predict(fit_ord_lact2))
pred <- predict(fit_ord_lact2, type = "probs")

summary(fit_ord_lact2)
ctable  <- coef(summary(fit_ord_lact2))
p <- pnorm(abs(ctable[, "t value"]), lower.tail = FALSE) * 2
ctable <- cbind(ctable, "p value" = p)
ci <- confint(fit_ord_lact2, type = "profile") 
exp(coef(fit_ord_lact2))
exp(cbind(OR = coef(fit_ord_lact2), ci))

# Prediction plots
# VO2max
newdat <- data.frame(
  Ergometrieart = rep(1:2, 200),
  Geschlecht = rep(0:1, each = 200),
  Alter = rep(mean(Data_RPE$Alter),400), 
  VO2max_full = rep(seq(from = 4.8, to = 87, length.out = 100), 4), 
  max_stage = rep(mean(Data_RPE$max_stage),400))

newdat <- cbind(newdat, predict(fit_ord_lact2, newdat, type = "probs"))
newdat <- newdat %>% dplyr::select(-Alter, -max_stage)
lnewdat <- melt(newdat, id.vars = c("Ergometrieart", "Geschlecht", "VO2max_full"),
                variable.name = "Level", value.name="Probability")

lnewdat$Ergometrieart.labs = c("Bicycle","Treadmill")
lnewdat$Geschlecht.labs = rep(c("Female","Male"),each = 200)

rpe_text <- data.frame(
  label = c("15","14","13","14","13","14","14","13"),
  Ergometrieart.labs   = c("Bicycle","Bicycle","Treadmill","Treadmill",
                           "Bicycle","Bicycle","Treadmill","Treadmill"),
  Geschlecht.labs = c("Female","Female","Female","Female",
                      "Male", "Male", "Male", "Male"),
  x     = c(82,14,8,65,8,70,82, 20),
  y     = c(0.249, 0.192,0.174,0.225,0.168,0.225,0.225,0.168)
)

g_2mmol_VO2max <- ggplot(lnewdat, aes(x = VO2max_full, y = Probability, colour = Level)) +
  geom_line() + 
  facet_grid(Geschlecht.labs ~ Ergometrieart.labs, labeller=label_value)+
  geom_text(data = rpe_text, mapping = aes(label = label,x=x, y=y), 
            inherit.aes = FALSE, size = 4)+
  theme_bw() +
  xlab("VO2max") +
  scale_colour_discrete(name = "RPE") + 
  theme(axis.text = element_text(size = 15), 
        axis.title = element_text(size = 15),
        strip.text = element_text(size =15), 
        legend.text = element_text(size = 15), 
        legend.title = element_text(size = 15))

#ggsave("Fig_S_2mmol_VO2max.tiff",width = 20, height = 15, units = "cm", dpi= 300)

# Age 
newdat <- data.frame(
  Ergometrieart = rep(1:2, 200),
  Geschlecht = rep(0:1, each = 200),
  Alter = rep(seq(from = 10, to = 85, length.out = 100), 4), 
  VO2max_full = rep(mean(Data_RPE$VO2max_full),400), 
  max_stage = rep(mean(Data_RPE$max_stage),400))

newdat <- cbind(newdat, predict(fit_ord_lact2, newdat, type = "probs"))
newdat <- newdat %>% dplyr::select(-VO2max_full, -max_stage)
lnewdat <- melt(newdat, id.vars = c("Ergometrieart", "Geschlecht", "Alter"),
                variable.name = "Level", value.name="Probability")

lnewdat$Ergometrieart.labs = c("Bicycle","Treadmill")
lnewdat$Geschlecht.labs = rep(c("Female","Male"),each = 200)

rpe_text <- data.frame(
  label = c("15", "14","14","15","14","13","14","13"),
  Ergometrieart.labs   = c("Bicycle","Bicycle","Treadmill","Treadmill",
                           "Bicycle","Bicycle","Treadmill","Treadmill"),
  Geschlecht.labs = c("Female","Female","Female","Female",
                      "Male", "Male", "Male", "Male"),
  x     = c(80,12,rep(82,2),80,13,82,13),
  y     = c(0.235, 0.202,0.225,0.194,0.225,0.18,0.22,0.17)
)

g_2mmol_age <-ggplot(lnewdat, aes(x = Alter, y = Probability, colour = Level)) +
  geom_line() + 
  facet_grid(Geschlecht.labs ~ Ergometrieart.labs, labeller=label_value)+
  geom_text(data = rpe_text, mapping = aes(label = label,x=x, y=y), 
            inherit.aes = FALSE, size = 4)+
  theme_bw()+ 
  xlab("Age")+
  scale_colour_discrete(name = "RPE")+
  theme(axis.text = element_text(size = 15), 
        axis.title = element_text(size = 15),
        strip.text = element_text(size =15), 
        legend.text = element_text(size = 15), 
        legend.title = element_text(size = 15))

#ggsave("Fig_S_2mmol_Age.tiff",width = 20, height = 15, units = "cm", dpi= 300)

## Figure 3, 2mmol/l, VO2max and age ##############################################

ggarrange(g_2mmol_age,g_2mmol_VO2max, ncol = 2,labels="AUTO")
ggsave("Fig3.tiff",width = 35, height = 15, units = "cm", dpi= 300)

################################################################################

# Number of stages 
newdat <- data.frame(
  Ergometrieart = rep(1:2, 200),
  Geschlecht = rep(0:1, each = 200),
  Alter = rep(mean(Data_RPE$Alter, 400)), 
  VO2max_full = rep(mean(Data_RPE$VO2max_full),400), 
  max_stage = rep(seq(from = 2, to = 10, length.out = 100), 4))

newdat <- cbind(newdat, predict(fit_ord_lact2, newdat, type = "probs"))
newdat <- newdat %>% dplyr::select(-VO2max_full, -Alter)
lnewdat <- melt(newdat, id.vars = c("Ergometrieart", "Geschlecht", "max_stage"),
                variable.name = "Level", value.name="Probability")

lnewdat$Ergometrieart.labs = c("Bicycle","Treadmill")
lnewdat$Geschlecht.labs = rep(c("Female","Male"),each = 200)


rpe_text <- data.frame(
  label = c("15", "14","13","15","14","13","14","15","13","14","15","13"),
  Ergometrieart.labs   = c("Bicycle","Bicycle","Bicycle","Treadmill","Treadmill","Treadmill",
                           "Bicycle","Bicycle","Bicycle","Treadmill","Treadmill","Treadmill"),
  Geschlecht.labs = c("Female","Female","Female","Female","Female","Female",
                      "Male", "Male", "Male","Male","Male","Male"),
  x     = c(rep(9.7,2),3,9.7,9.7,9, rep(9.7,6)),
  y     = c(0.24, 0.21,0.165,0.225,0.2,0.16,0.225,0.21,0.16, 0.22,0.19,0.17)
)

ggplot(lnewdat, aes(x = max_stage, y = Probability, colour = Level)) +
  geom_line() + 
  facet_grid(Geschlecht.labs ~ Ergometrieart.labs, labeller=label_value)+
  geom_text(data = rpe_text, mapping = aes(label = label,x=x, y=y), 
            inherit.aes = FALSE, size = 4)+
  theme_bw()+
  scale_x_continuous(breaks = 2:10)+
  scale_colour_discrete(name = "RPE")+
  theme(axis.text = element_text(size = 15), 
        axis.title = element_text(size = 15),
        strip.text = element_text(size =15), 
        legend.text = element_text(size = 15), 
        legend.title = element_text(size = 15)) +
  xlab("Number of stages")

ggsave("Fig_S_2mmol_Nstages.tiff",width = 20, height = 15, units = "cm", dpi= 300)

## RPE at 3mmol/l lactat--------------------------------------------------------------------------------------------------

fit_ord_lact3 <- polr(as.factor(rpe_lactat3) ~ Alter + as.factor(Geschlecht) + as.factor(Ergometrieart)+VO2max_full +
                        max_stage
                      , data = Data_RPE, Hess = T)
tabyl(predict(fit_ord_lact3))
pred <- predict(fit_ord_lact3, type = "probs")
apply(pred,2, mean)
apply(pred,2, sd)
summary(fit_ord_lact3)
ctable  <- coef(summary(fit_ord_lact3))
p <- pnorm(abs(ctable[, "t value"]), lower.tail = FALSE) * 2
ctable <- cbind(ctable, "p value" = p)
ci <- confint(fit_ord_lact3, type = "profile")
exp(coef(fit_ord_lact3))
exp(cbind(OR = coef(fit_ord_lact3), ci))

# Prediction plots
# VO2max
newdat <- data.frame(
  Ergometrieart = rep(1:2, 200),
  Geschlecht = rep(0:1, each = 200),
  Alter = rep(mean(Data_RPE$Alter),400), 
  VO2max_full = rep(seq(from = 4.8, to = 87, length.out = 100), 4),
  max_stage = rep(mean(Data_RPE$max_stage),400))

newdat <- cbind(newdat, predict(fit_ord_lact3, newdat, type = "probs"))
newdat <- newdat %>% dplyr::select(-Alter, -max_stage)
lnewdat <- melt(newdat, id.vars = c("Ergometrieart", "Geschlecht", "VO2max_full"),
                variable.name = "Level", value.name="Probability")

lnewdat$Ergometrieart.labs = c("Bicycle","Treadmill")
lnewdat$Geschlecht.labs = rep(c("Female","Male"),each = 200)

rpe_text <- data.frame(
  label = c("16","15","16","15","15","16","15","16"),
  Ergometrieart.labs   = c("Bicycle","Bicycle","Treadmill","Treadmill",
                           "Bicycle","Bicycle","Treadmill","Treadmill"),
  Geschlecht.labs = c("Female","Female","Female","Female",
                      "Male", "Male", "Male", "Male"),
  x     = rep(82,8),
  y     = c(0.245, 0.20,0.235,0.21,0.235,0.205,0.235,0.195)
)

ggplot(lnewdat, aes(x = VO2max_full, y = Probability, colour = Level)) +
  geom_line() + 
  facet_grid(Geschlecht.labs ~ Ergometrieart.labs, labeller=label_value)+
  geom_text(data = rpe_text, mapping = aes(label = label,x=x, y=y), 
            inherit.aes = FALSE, size = 4)+
  theme_bw() +
  xlab("VO2max") +
  scale_colour_discrete(name = "RPE") + 
  theme(axis.text = element_text(size = 15), 
        axis.title = element_text(size = 15),
        strip.text = element_text(size =15), 
        legend.text = element_text(size = 15), 
        legend.title = element_text(size = 15))

#ggsave("Fig_S_3mmol_VO2max.tiff",width = 20, height = 15, units = "cm", dpi= 300)

# Age 
newdat <- data.frame(
  Ergometrieart = rep(1:2, 200),
  Geschlecht = rep(0:1, each = 200),
  Alter = rep(seq(from = 10, to = 85, length.out = 100), 4), 
  VO2max_full = rep(mean(Data_RPE$VO2max_full),400), 
  max_stage = rep(mean(Data_RPE$max_stage),400))

newdat <- cbind(newdat, predict(fit_ord_lact3, newdat, type = "probs"))
newdat <- newdat %>% dplyr::select(-VO2max_full, -max_stage)
lnewdat <- melt(newdat, id.vars = c("Ergometrieart", "Geschlecht", "Alter"),
                variable.name = "Level", value.name="Probability")

lnewdat$Ergometrieart.labs = c("Bicycle","Treadmill")
lnewdat$Geschlecht.labs = rep(c("Female","Male"),each = 200)

rpe_text <- data.frame(
  label = c("15", "16","15","16","15","14","15","14"),
  Ergometrieart.labs   = c("Bicycle","Bicycle","Treadmill","Treadmill",
                           "Bicycle","Bicycle","Treadmill","Treadmill"),
  Geschlecht.labs = c("Female","Female","Female","Female",
                      "Male", "Male", "Male", "Male"),
  x     = c(rep(82,5),12,82,12),
  y     = c(0.23, 0.21,0.235,0.215,0.235,0.205,0.237,0.192)
)

ggplot(lnewdat, aes(x = Alter, y = Probability, colour = Level)) +
  geom_line() + 
  facet_grid(Geschlecht.labs ~ Ergometrieart.labs, labeller=label_value)+
  geom_text(data = rpe_text, mapping = aes(label = label,x=x, y=y), 
            inherit.aes = FALSE, size = 4)+
  theme_bw()+ 
  xlab("Age")+
  scale_colour_discrete(name = "RPE")+
  theme(axis.text = element_text(size = 15), 
        axis.title = element_text(size = 15),
        strip.text = element_text(size =15), 
        legend.text = element_text(size = 15), 
        legend.title = element_text(size = 15))

#ggsave("Fig_S_3mmol_Age.tiff",width = 20, height = 15, units = "cm", dpi= 300)

# Number of stages 
newdat <- data.frame(
  Ergometrieart = rep(1:2, 200),
  Geschlecht = rep(0:1, each = 200),
  Alter = rep(mean(Data_RPE$Alter, 400)), 
  VO2max_full = rep(mean(Data_RPE$VO2max_full),400), 
  max_stage = rep(seq(from = 2, to = 10, length.out = 100), 4))

newdat <- cbind(newdat, predict(fit_ord_lact3, newdat, type = "probs"))
newdat <- newdat %>% dplyr::select(-VO2max_full, -Alter)
lnewdat <- melt(newdat, id.vars = c("Ergometrieart", "Geschlecht", "max_stage"),
                variable.name = "Level", value.name="Probability")

lnewdat$Ergometrieart.labs = c("Bicycle","Treadmill")
lnewdat$Geschlecht.labs = rep(c("Female","Male"),each = 200)


rpe_text <- data.frame(
  label = c("16", "15","14","16","15","14","16","15","14","15","16","14"),
  Ergometrieart.labs   = c("Bicycle","Bicycle","Bicycle","Treadmill","Treadmill","Treadmill",
                           "Bicycle","Bicycle","Bicycle","Treadmill","Treadmill","Treadmill"),
  Geschlecht.labs = c("Female","Female","Female","Female","Female","Female",
                      "Male", "Male", "Male", "Male", "Male", "Male"),
  x     = rep(c(9.5,9.5,2.5),4),
  y     = c(0.245, 0.215,0.215,0.24,0.22,0.21,0.235,0.205,0.205,0.235,0.205,0.2)
)

ggplot(lnewdat, aes(x = max_stage, y = Probability, colour = Level)) +
  geom_line() + 
  facet_grid(Geschlecht.labs ~ Ergometrieart.labs, labeller=label_value)+
  geom_text(data = rpe_text, mapping = aes(label = label,x=x, y=y), 
            inherit.aes = FALSE, size = 4)+
  theme_bw()+
  scale_x_continuous(breaks = 2:10)+
  scale_colour_discrete(name = "RPE")+
  theme(axis.text = element_text(size = 15), 
        axis.title = element_text(size = 15),
        strip.text = element_text(size =15), 
        legend.text = element_text(size = 15), 
        legend.title = element_text(size = 15)) +
  xlab("Number of stages")

#ggsave("Fig_S_3mmol_Nstages.tiff",width = 20, height = 15, units = "cm", dpi= 300)

## RPE at 4mmol/l lactat-------------------------------------------------------------------------------------------------

fit_ord_lact4 <- polr(as.factor(rpe_lactat4) ~ Alter + as.factor(Geschlecht) + as.factor(Ergometrieart)+VO2max_full +
                        max_stage
                      , data = Data_RPE, Hess = T)
tabyl(predict(fit_ord_lact4))
pred <- predict(fit_ord_lact4, type = "probs")

summary(fit_ord_lact4)
ctable  <- coef(summary(fit_ord_lact4))
p <- pnorm(abs(ctable[, "t value"]), lower.tail = FALSE) * 2
ctable <- cbind(ctable, "p value" = p)
ci <- confint(fit_ord_lact4, type = "profile") 
exp(coef(fit_ord_lact4))
exp(cbind(OR = coef(fit_ord_lact4), ci))

# Prediction plots
# VO2max
newdat <- data.frame(
  Ergometrieart = rep(1:2, 200),
  Geschlecht = rep(0:1, each = 200),
  Alter = rep(mean(Data_RPE$Alter),400), 
  VO2max_full = rep(seq(from = 4.8, to = 87, length.out = 100), 4), 
  max_stage = rep(mean(Data_RPE$max_stage),400))

newdat <- cbind(newdat, predict(fit_ord_lact4, newdat, type = "probs"))
newdat <- newdat %>% dplyr::select(-Alter, -max_stage)
lnewdat <- melt(newdat, id.vars = c("Ergometrieart", "Geschlecht", "VO2max_full"),
                variable.name = "Level", value.name="Probability")

lnewdat$Ergometrieart.labs = c("Bicycle","Treadmill")
lnewdat$Geschlecht.labs = rep(c("Female","Male"),each = 200)

rpe_text <- data.frame(
  label = c("16","15","16","15","16","15","16","15"),
  Ergometrieart.labs   = c("Bicycle","Bicycle","Treadmill","Treadmill",
                           "Bicycle","Bicycle","Treadmill","Treadmill"),
  Geschlecht.labs = c("Female","Female","Female","Female",
                      "Male", "Male", "Male", "Male"),
  x     = rep(5,8),
  y     = c(0.23, 0.18,0.235,0.185,0.235,0.185,0.235,0.185)
)

ggplot(lnewdat, aes(x = VO2max_full, y = Probability, colour = Level)) +
  geom_line() + 
  facet_grid(Geschlecht.labs ~ Ergometrieart.labs, labeller=label_value)+
  geom_text(data = rpe_text, mapping = aes(label = label,x=x, y=y), 
            inherit.aes = FALSE, size = 4)+
  theme_bw() +
  xlab("VO2max") +
  scale_colour_discrete(name = "RPE") + 
  theme(axis.text = element_text(size = 15), 
        axis.title = element_text(size = 15),
        strip.text = element_text(size =15), 
        legend.text = element_text(size = 15), 
        legend.title = element_text(size = 15))

#ggsave("Fig_S_4mmol_VO2max.tiff",width = 20, height = 15, units = "cm", dpi= 300)

# Age 
newdat <- data.frame(
  Ergometrieart = rep(1:2, 200),
  Geschlecht = rep(0:1, each = 200),
  Alter = rep(seq(from = 10, to = 85, length.out = 100), 4), 
  VO2max_full = rep(mean(Data_RPE$VO2max_full),400), 
  max_stage = rep(mean(Data_RPE$max_stage),400))

newdat <- cbind(newdat, predict(fit_ord_lact4, newdat, type = "probs"))
newdat <- newdat %>% dplyr::select(-VO2max_full, -max_stage)
lnewdat <- melt(newdat, id.vars = c("Ergometrieart", "Geschlecht", "Alter"),
                variable.name = "Level", value.name="Probability")

lnewdat$Ergometrieart.labs = c("Bicycle","Treadmill")
lnewdat$Geschlecht.labs = rep(c("Female","Male"),each = 200)

rpe_text <- data.frame(
  label = c("16", "15","16","15","16","15","16","15"),
  Ergometrieart.labs   = c("Bicycle","Bicycle","Treadmill","Treadmill",
                           "Bicycle","Bicycle","Treadmill","Treadmill"),
  Geschlecht.labs = c("Female","Female","Female","Female",
                      "Male", "Male", "Male", "Male"),
  x     = c(rep(82,8)),
  y     = c(0.235, 0.21,0.235,0.21,0.235,0.21,0.235,0.21)
)

ggplot(lnewdat, aes(x = Alter, y = Probability, colour = Level)) +
  geom_line() + 
  facet_grid(Geschlecht.labs ~ Ergometrieart.labs, labeller=label_value)+
  geom_text(data = rpe_text, mapping = aes(label = label,x=x, y=y), 
            inherit.aes = FALSE, size = 4)+
  theme_bw()+ 
  xlab("Age")+
  scale_colour_discrete(name = "RPE")+
  theme(axis.text = element_text(size = 15), 
        axis.title = element_text(size = 15),
        strip.text = element_text(size =15), 
        legend.text = element_text(size = 15), 
        legend.title = element_text(size = 15))

#ggsave("Fig_S_4mmol_Age.tiff",width = 20, height = 15, units = "cm", dpi= 300)

# Number of stages 
newdat <- data.frame(
  Ergometrieart = rep(1:2, 200),
  Geschlecht = rep(0:1, each = 200),
  Alter = rep(mean(Data_RPE$Alter, 400)), 
  VO2max_full = rep(mean(Data_RPE$VO2max_full),400), 
  max_stage = rep(seq(from = 2, to = 10, length.out = 100), 4))

newdat <- cbind(newdat, predict(fit_ord_lact4, newdat, type = "probs"))
newdat <- newdat %>% dplyr::select(-VO2max_full, -Alter)
lnewdat <- melt(newdat, id.vars = c("Ergometrieart", "Geschlecht", "max_stage"),
                variable.name = "Level", value.name="Probability")

lnewdat$Ergometrieart.labs = c("Bicycle","Treadmill")
lnewdat$Geschlecht.labs = rep(c("Female","Male"),each = 200)


rpe_text <- data.frame(
  label = c("17", "15","16", "17","15","16","17","15","16","17","15","16"),
  Ergometrieart.labs   = c("Bicycle","Bicycle","Bicycle","Treadmill","Treadmill","Treadmill",
                           "Bicycle","Bicycle","Bicycle","Treadmill","Treadmill","Treadmill"),
  Geschlecht.labs = c("Female","Female","Female","Female","Female","Female",
                      "Male", "Male", "Male", "Male", "Male", "Male"),
  x     = rep(c(9.7,2.2,7.5),8),
  y     = c(0.24, 0.235,0.235,0.24,0.235,0.235,0.24,0.235,0.235,0.24,0.235,0.235)
)

ggplot(lnewdat, aes(x = max_stage, y = Probability, colour = Level)) +
  geom_line() + 
  facet_grid(Geschlecht.labs ~ Ergometrieart.labs, labeller=label_value)+
  geom_text(data = rpe_text, mapping = aes(label = label,x=x, y=y), 
            inherit.aes = FALSE, size = 4)+
  theme_bw()+
  scale_x_continuous(breaks = 2:10)+
  scale_colour_discrete(name = "RPE")+
  theme(axis.text = element_text(size = 15), 
        axis.title = element_text(size = 15),
        strip.text = element_text(size =15), 
        legend.text = element_text(size = 15), 
        legend.title = element_text(size = 15)) +
  xlab("Number of stages")

#ggsave("Fig_S_4mmol_Nstages.tiff",width = 20, height = 15, units = "cm", dpi= 300)



