Code

data <- 
  data %>%
  mutate(
    Subject.ID = NULL,
    Height = Height..cm./100,
    Weight =  Weight..kg.,
    Treated = factor(Treated, levels = c('N', 'Y'), labels = c('No', 'Yes')),
    Improved = factor(Improved, levels = c(F, T), labels = c('No', 'Yes')),
    BMI = Weight / (Height^2)
  ) %>%
  select(Treated, BMI, Improved)


logit1 <- glm(Improved ~ Treated, data = data, family = 'binomial')
summary(logit1) # AIC: 372.12

logit2 <- glm(Improved ~ Treated + BMI, data = data, family = 'binomial')
summary(logit2) # AIC: 361.76

logit3 <- glm(Improved ~ Treated + BMI + Treated : BMI, data = data, family = 'binomial')
summary(logit3) # AIC: 363.75

logit4 <- glm(Improved ~ Treated : BMI, data = data, family = 'binomial')
summary(logit4) # AIC: 362.23


pred1 <- predict(logit1, type="response")
pred2 <- predict(logit2, type="response")
pred3 <- predict(logit3, type="response")
pred4 <- predict(logit4, type="response")

lvls <- levels(data$Improved)

pred1 <- ifelse(pred1 < 0.5, lvls[1], lvls[2])
pred2 <- ifelse(pred2 < 0.5, lvls[1], lvls[2])
pred3 <- ifelse(pred3 < 0.5, lvls[1], lvls[2])
pred4 <- ifelse(pred4 < 0.5, lvls[1], lvls[2])

data$pred1 <- factor(pred1, lvls)
data$pred2 <- factor(pred2, lvls)
data$pred3 <- factor(pred3, lvls)
data$pred4 <- factor(pred4, lvls)

t1 <- xtabs(~Improved + pred1, data=data)
t2 <- xtabs(~Improved + pred2, data=data)
t3 <- xtabs(~Improved + pred3, data=data)
t4 <- xtabs(~Improved + pred4, data=data)

acc1 <- round(100 * (t1[1,1] + t1[2/2])/sum(t1),3)
acc2 <- round(100 * (t2[1,1] + t2[2/2])/sum(t2),3)
acc3 <- round(100 * (t3[1,1] + t3[2/2])/sum(t3),3)
acc4 <- round(100 * (t4[1,1] + t4[2/2])/sum(t4),3)

Accuracy - Treatment x Improved

## [1] 52.143

Accuracy - Treatment + BMI x Improved

## [1] 39.286

Graphic

## `geom_smooth()` using formula = 'y ~ x'