Depression is common in middle-aged and older adults with gastrointestinal diseases (GID), affecting outcomes and costs, yet practical screening tools are lacking. We aimed to develop and internally validate a parsimonious screening model for concurrent depression risk screening using nationally representative data, comparing machine learning algorithms with SHAP interpretability. This cross-sectional study used CHARLS 2018 data, including 1,269 GID patients aged ≥ 45. Depressive symptoms: CES-D-10 score ≥ 10. Predictor variables were selected via a hybrid Boruta and LASSO regression approach. Six ML algorithms were compared, with hyperparameters tuned by 10-fold cross-validation. Model performance was assessed by AUC, accuracy, sensitivity, specificity, F1-score, calibration curves, and decision curve analysis (DCA). The SHapley Additive exPlanations (SHAP) framework provided interpretability. Six core predictors were retained from the feature selection. Among them, logistic regression (LR) demonstrated the best generalizability on the validation cohort, achieving an AUC of 0.697 (95% CI: 0.644–0.748), accuracy of 0.651, sensitivity of 0.722, specificity of 0.583, and F1-score of 0.670. The AUPRC (0.671) exceeded the baseline prevalence (0.492). Calibration was reasonable (Brier = 0.225; HL test p = 0.614), and DCA demonstrated net benefit across 20–70% thresholds. SHAP ranked contribution in descending order: health status, Twbp, gender, IADL, sleep time and ADL. We developed an LR-based nomogram using six clinical variables for screening depressive symptoms in middle-aged and older GID patients. It showed moderate internal discrimination and may serve as a supplementary screening aid for concurrent identification of depressive symptoms and timely integrated care, though external validation is urgently needed.
No takes yet. Share an insight, caveat, or question.
Cheng et al. (2026) studied this question.
Synapse has enriched 5 closely related papers on similar clinical questions. Consider them for comparative context: