`table` 未以矩阵格式显示

`table` not showing in matrix format

我试图使用 AER 包中的 HMDA 数据来制造混乱 table。所以我 运行 一个概率模型,对测试集进行预测,并使用 table() 函数生成一个 2×2 图,但是 R 只是 returns 我一个长列表,没有显示 2 by我想要的 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

您需要指定预测二分结果的阈值或分界点。预测 return 个预测值,而不是 0 / 1。

并注意 predict 函数,因为默认类型是 "link",在您的情况下是 "probit"。如果您想要 predict 到 return 的概率,请指定 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