Changing Classification Threshold in Log-Reg Models

Let's use the iris data set

data(iris)

The Species variable is categorical and will serve as our response. Since log-reg is only appropriate for binary categorical variables, we create a new response setosa based on whether a given iris setosa or not.

iris1 <- iris %>% mutate(setosa = ifelse(Species == "setosa", 1, 0))

Now we create the logistic regression model, with setosa as a function of Sepal.Width.

log_reg <- glm(setosa ~ Sepal.Width , data = iris1, family = "binomial")

We create probability predictions from the model (note that the result would be log-odds if we omitted type = "response")

probs<-predict(log_reg, iris1, type = "response")

Finally, we create our actual predictions using an ifelse statement. The classification threshhold is determined by the value we set on the right side of the >= inequality. Here, for example, we set our threshold at 0.253.

predicts<-ifelse( probs >= .253, 1, 0)
predicts
##   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20 
##   1   0   1   1   1   1   1   1   0   1   1   1   0   0   1   1   1   1   1   1 
##  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40 
##   1   1   1   1   1   0   1   1   1   1   1   1   1   1   1   1   1   1   0   1 
##  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60 
##   1   0   1   1   1   0   1   1   1   1   1   1   1   0   0   0   1   0   0   0 
##  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80 
##   0   0   0   0   0   1   0   0   0   0   1   0   0   0   0   0   0   0   0   0 
##  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100 
##   0   0   0   0   0   1   1   0   0   0   0   0   0   0   0   0   0   0   0   0 
## 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 
##   1   0   0   0   0   0   0   0   0   1   1   0   0   0   0   1   0   1   0   0 
## 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 
##   1   0   0   0   1   1   0   0   0   0   0   1   0   0   0   0   1   1   0   1 
## 141 142 143 144 145 146 147 148 149 150 
##   1   1   0   1   1   0   0   0   1   0