`таблица` не отображается в матричном формате - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь сгенерировать таблицу путаницы, используя данные HMDA из пакета AER. Поэтому я запустил пробитную модель, предсказал на тестовом наборе и использовал функцию table(), чтобы сгенерировать график 2 на 2, но R просто возвращает мне длинный список, не показывая нужную мне матрицу 2 на 2.

Может ли кто-нибудь сказать мне, что происходит>

# load required packages and data (HMDA)
library(e1071)
library(caret)
library(AER)
library(plotROC)
data(HMDA)

# again, check variable columns
names(HMDA)

# convert dependent variables to numeric
HMDA$deny <- ifelse(HMDA$deny == "yes", 1, 0)

# subset needed columns
subset <- c("deny", "hirat", "lvrat", "mhist", "unemp")

# subset data
data <- HMDA[complete.cases(HMDA), subset]

# do a 75-25 train-test split
train_row_numbers <- createDataPartition(data$deny, p=0.75, list=FALSE)
training <- data[train_row_numbers, ]
testing <- data[-train_row_numbers, ]


# fit a probit model and predict on testing data
probit.fit <- glm(deny ~ ., family = binomial(link = "probit"), data = training)
probit.pred <- predict(probit.fit, testing)

confmat_probit <- table(Predicted = probit.pred, 
               Actual = testing$deny)
confmat_probit

1 Ответ

1 голос
/ 25 февраля 2020

Вам необходимо указать порог или точку отсечения для прогнозирования дихотомического результата. Predict возвращает прогнозируемые значения, а не 0/1.

И будьте осторожны с функцией predict, поскольку типом по умолчанию является "link", который в вашем случае является "probit". Если вы хотите, чтобы predict вернул вероятности, укажите type="response".

probit.pred <- predict(probit.fit, testing, type="response")

Затем выберите точку отсечения; любой прогноз выше этого значения будет ИСТИННЫМ:

confmat_probit <- table(`Predicted>0.1` = probit.pred > 0.1 , Actual = testing$deny)
confmat_probit

             Actual
Predicted>0.1   0   1
        FALSE 248  21
        TRUE  273  53
...