R语言 构建logistic模型 以及计算C指数
构建logistic模型:
-
准备数据,包括自变量和因变量。自变量需要进行数据清洗和转换,确保数据格式正确且不存在缺失值。
-
将数据分为训练集和测试集,通常使用70%的数据作为训练集,30%的数据作为测试集。将训练集用于模型训练,测试集用于模型评估。
-
使用glm函数构建logistic模型,其中指定family参数为binomial,表示二项分布,即因变量是二元的。例如:
model <- glm(y ~ x1 + x2, data = train, family = "binomial")
- 模型训练完成后,使用summary函数查看模型的参数估计值、标准误差、z值、p值等信息。例如:
summary(model)
- 使用predict函数预测测试集的因变量,并将预测结果与实际值比较,计算模型的准确率、精确率、召回率等指标。例如:
pred <- predict(model, newdata = test, type = "response")
y_pred <- ifelse(pred > 0.5, 1, 0)
accuracy <- sum(y_pred == test$y) / nrow(test)
precision <- sum(y_pred & test$y) / sum(y_pred)
recall <- sum(y_pred & test$y) / sum(test$y)
计算C指数:
C指数是用于评估分类模型的一种指标,可以用于比较不同模型的性能。它的取值范围在0.5和1之间,越接近1表示模型越好。
-
准备数据,包括自变量和因变量。自变量需要进行数据清洗和转换,确保数据格式正确且不存在缺失值。
-
将数据分为训练集和测试集,通常使用70%的数据作为训练集,30%的数据作为测试集。将训练集用于模型训练,测试集用于模型评估。
-
使用glm函数构建logistic模型,其中指定family参数为binomial,表示二项分布,即因变量是二元的。例如:
model <- glm(y ~ x1 + x2, data = train, family = "binomial")
- 使用roc函数计算ROC曲线和AUC值。ROC曲线是以假阳性率为横轴,真阳性率为纵轴的二维图形,AUC值是ROC曲线下的面积。例如:
library(pROC)
roc_obj <- roc(test$y, pred)
auc <- auc(roc_obj)
- 使用coords函数计算不同阈值下的真阳性率和假阳性率,并使用plot函数绘制ROC曲线。例如:
coords_obj <- coords(roc_obj, "all")
plot(coords_obj$specificity, coords_obj$sensitivity, type = "l",
xlab = "False positive rate", ylab = "True positive rate",
main = "ROC curve")
abline(0, 1, lty = 2)
- 最后,使用ci.auc函数计算C指数的置信区间。例如:
ci <- ci.auc(roc_obj)
c_index <- round(auc, 2)
c_index_ci <- paste0("(", round(ci[1], 2), ", ", round(ci[2], 2), ")")
原文地址: https://www.cveoy.top/t/topic/bi3Z 著作权归作者所有。请勿转载和采集!