Reputation: 7107
I am trying to rearrange my plot such that it follows the correct confusion matrix structure from the caret
package.
For example, I have the following confusion matrix table:
Prediction 0 1
0 3444 265
1 98 148
Where the 1
is the bankrupt
case and the 0
is the Non-Bankrupt
case in my data. I seem to have my data the opposite of what I want it to look like.
Other confusion matrix:
Reference
Prediction 0 1
0 3317 313
1 87 164
Reference
Prediction 0 1
0 3079 308
1 78 182
Reference
Prediction 0 1
0 2980 335
1 106 144
I want to rearrange the plots such at (for the first confusion matrix) the 3444
number and points are in the upper quadrant with the text "Non-Bankrupt" next to it (which is the 0
in the confusion matrix). The 148
should be in the bottom right quadrant. The 265
should be in the upper right quadrant and the 98
should be in the bottom left quadrant. (Just as displayed in the first confusion matrix)
Code:
d %>%
ggplot(aes(x = pred_status, y = status, color = correct)) +
geom_jitter() +
geom_text(aes(label = n), size = 15, color = "black", family = "serif") +
facet_wrap(~Model_Name) +
scale_x_discrete(labels = c("Non-Bankrupt", "Bankrupt")) +
scale_y_discrete(labels = c("Non-Bankrupt", "Bankrupt"))
Sample of the data:
d <- structure(list(pred_status = structure(c(1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L,
1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L,
1L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L,
2L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L), .Label = c("0", "1"), class = "factor"), status = structure(c(1L,
1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L,
1L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
2L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 1L,
2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 2L, 2L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("0", "1"), class = "factor"),
correct = structure(c(1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L,
1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L,
2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L,
1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("Correct",
"Incorrect"), class = "factor"), n = c(2980L, 2980L, 313L,
3444L, 2980L, 3444L, 3444L, 2980L, 3317L, 2980L, 3317L, 3317L,
182L, 3317L, 3079L, 2980L, 3444L, 3444L, 3317L, 3079L, 3079L,
144L, 3444L, 3444L, 3079L, 2980L, 2980L, 3444L, 3444L, 3317L,
3444L, 3444L, 2980L, 3444L, 3317L, 3079L, 3079L, 3079L, 3444L,
2980L, 3317L, 3444L, 3444L, 3317L, 144L, 3079L, 2980L, 2980L,
3317L, 3079L, 182L, 335L, 3444L, 3317L, 3444L, 3444L, 3444L,
106L, 3079L, 3317L, 3079L, 3079L, 3444L, 3444L, 3079L, 164L,
3444L, 2980L, 3079L, 2980L, 3079L, 164L, 3317L, 3317L, 2980L,
148L, 313L, 3444L, 3079L, 3317L, 3444L, 3079L, 3444L, 3317L,
3444L, 3444L, 3079L, 3444L, 3317L, 3079L, 144L, 3079L, 3317L,
3317L, 3079L, 3317L, 3444L, 2980L, 3317L, 2980L, 3444L, 2980L,
3079L, 3079L, 3444L, 3444L, 2980L, 3317L, 3317L, 2980L, 3079L,
98L, 3079L, 3444L, 3444L, 2980L, 3317L, 3079L, 3444L, 2980L,
3079L, 3317L, 144L, 182L, 3317L, 3079L, 2980L, 3079L, 3444L,
313L, 2980L, 3317L, 3444L, 3317L, 3317L, 3079L, 2980L, 3444L,
182L, 3079L, 3317L, 3444L, 265L, 164L, 335L, 3079L, 2980L,
2980L, 3444L, 3079L, 3444L, 2980L, 3317L, 148L, 3444L, 2980L,
3079L, 3444L, 3079L, 2980L, 3317L, 3444L, 2980L, 98L, 3317L,
78L, 3317L, 2980L, 3079L, 106L, 3079L, 3079L, 3079L, 2980L,
2980L, 3317L, 2980L, 3444L, 3444L, 3079L, 2980L, 3444L, 3079L,
2980L, 3317L, 3317L, 164L, 308L, 3317L, 3444L, 313L, 3444L,
3317L, 3444L, 2980L, 3317L, 3317L, 3444L, 2980L, 3444L),
Model_Name = c("4 Year", "4 Year", "2 Year", "1 Year", "4 Year",
"1 Year", "1 Year", "4 Year", "2 Year", "4 Year", "2 Year",
"2 Year", "3 Year", "2 Year", "3 Year", "4 Year", "1 Year",
"1 Year", "2 Year", "3 Year", "3 Year", "4 Year", "1 Year",
"1 Year", "3 Year", "4 Year", "4 Year", "1 Year", "1 Year",
"2 Year", "1 Year", "1 Year", "4 Year", "1 Year", "2 Year",
"3 Year", "3 Year", "3 Year", "1 Year", "4 Year", "2 Year",
"1 Year", "1 Year", "2 Year", "4 Year", "3 Year", "4 Year",
"4 Year", "2 Year", "3 Year", "3 Year", "4 Year", "1 Year",
"2 Year", "1 Year", "1 Year", "1 Year", "4 Year", "3 Year",
"2 Year", "3 Year", "3 Year", "1 Year", "1 Year", "3 Year",
"2 Year", "1 Year", "4 Year", "3 Year", "4 Year", "3 Year",
"2 Year", "2 Year", "2 Year", "4 Year", "1 Year", "2 Year",
"1 Year", "3 Year", "2 Year", "1 Year", "3 Year", "1 Year",
"2 Year", "1 Year", "1 Year", "3 Year", "1 Year", "2 Year",
"3 Year", "4 Year", "3 Year", "2 Year", "2 Year", "3 Year",
"2 Year", "1 Year", "4 Year", "2 Year", "4 Year", "1 Year",
"4 Year", "3 Year", "3 Year", "1 Year", "1 Year", "4 Year",
"2 Year", "2 Year", "4 Year", "3 Year", "1 Year", "3 Year",
"1 Year", "1 Year", "4 Year", "2 Year", "3 Year", "1 Year",
"4 Year", "3 Year", "2 Year", "4 Year", "3 Year", "2 Year",
"3 Year", "4 Year", "3 Year", "1 Year", "2 Year", "4 Year",
"2 Year", "1 Year", "2 Year", "2 Year", "3 Year", "4 Year",
"1 Year", "3 Year", "3 Year", "2 Year", "1 Year", "1 Year",
"2 Year", "4 Year", "3 Year", "4 Year", "4 Year", "1 Year",
"3 Year", "1 Year", "4 Year", "2 Year", "1 Year", "1 Year",
"4 Year", "3 Year", "1 Year", "3 Year", "4 Year", "2 Year",
"1 Year", "4 Year", "1 Year", "2 Year", "3 Year", "2 Year",
"4 Year", "3 Year", "4 Year", "3 Year", "3 Year", "3 Year",
"4 Year", "4 Year", "2 Year", "4 Year", "1 Year", "1 Year",
"3 Year", "4 Year", "1 Year", "3 Year", "4 Year", "2 Year",
"2 Year", "2 Year", "3 Year", "2 Year", "1 Year", "2 Year",
"1 Year", "2 Year", "1 Year", "4 Year", "2 Year", "2 Year",
"1 Year", "4 Year", "1 Year")), row.names = c(NA, -200L), class = c("tbl_df",
"tbl", "data.frame"))
Upvotes: 1
Views: 48
Reputation: 6485
I tried and came up with this minor changes:
library(tidyverse)
d %>%
ggplot(aes(x = status, y = fct_rev(pred_status), color = correct)) +
geom_jitter() +
geom_text(aes(label = n), size = 15, color = "black", family = "serif") +
facet_wrap(~Model_Name) +
scale_x_discrete(labels = c("Non-Bankrupt", "Bankrupt")) +
scale_y_discrete(labels = c("Bankrupt", "Non-Bankrupt"))
Which gives me this figure:
Not 100% sure if the labels are correct now?è
Upvotes: 2