如何在 r 中创建混淆矩阵(逐步)
逻辑回归是当响应变量是二元时我们可以使用的一种回归。
评估逻辑回归模型质量的常见方法是创建一个混淆矩阵,它是一个 2 × 2 的表,显示模型的预测值与测试数据集的实际值。
以下分步示例展示了如何在 R 中创建混淆矩阵。
步骤一:拟合逻辑回归模型
对于此示例,我们将使用ISLR包中的默认数据集。我们将使用学生身份、银行余额和年收入来预测某个人拖欠贷款的可能性。
以下代码显示了如何将逻辑回归模型拟合到该数据集:
#load necessary packages library (caret) library (InformationValue) library (ISLR) #load dataset data <-Default #split dataset into training and testing set set. seeds (1) sample <- sample(c(TRUE, FALSE), nrow(data), replace= TRUE , prob=c(0.7,0.3)) train <- data[sample, ] test <- data[!sample, ] #fit logistic regression model model <- glm(default~student+balance+income, family=" binomial ", data=train)
第 2 步:创建混淆矩阵
接下来,我们将使用caret包中的fusionMatrix()函数来创建混淆矩阵:
#use model to predict probability of default
predicted <- predict(model, test, type="response")
#convert defaults from "Yes" and "No" to 1's and 0's
test$default <- ifelse(test$default==" Yes ", 1, 0)
#find optimal cutoff probability to use to maximize accuracy
optimal <- optimalCutoff(test$default, predicted)[1]
#create confusion matrix
confusionMatrix(test$default, predicted)
0 1
0 2912 64
1 21 39
步骤 3:评估混淆矩阵
我们还可以使用混淆矩阵计算以下指标:
- 敏感性: “真实阳性率”——模型正确预测会违约的个体百分比。
- 特异性: “真负率”——模型正确预测不会违约的个体百分比。
- 总误分类率:模型误分类总数的百分比。
以下代码显示了如何计算这些指标:
#calculate sensitivity
sensitivity(test$default, predicted)
[1] 0.3786408
#calculate specificity
specificity(test$default, predicted)
[1] 0.9928401
#calculate total misclassification error rate
misClassError(test$default, predicted, threshold =optimal)
[1] 0.027
该模型的总分类错误率为2.7% 。
一般来说,该比率越低,模型预测结果的能力就越好。因此,这个特定的模型在预测个人是否会违约方面被证明非常有效。