JoVE Logo

Sign In

A subscription to JoVE is required to view this content. Sign in or start your free trial.

In This Article

  • Summary
  • Abstract
  • Introduction
  • Protocol
  • תוצאות
  • Discussion
  • Disclosures
  • Acknowledgements
  • Materials
  • References
  • Reprints and Permissions

Summary

הפרוטוקול הנוכחי מתאר קודים ב-R להערכת יכולות ההבחנה והכיול של מודל סיכון מתחרה, וכן קודים לאימות פנימי וחיצוני שלו.

Abstract

מודל הסיכון הפרופורציונלי של קוקס מיושם באופן נרחב עבור ניתוחי הישרדות בסביבות קליניות, אך הוא אינו מסוגל להתמודד עם תוצאות הישרדות מרובות. בשונה ממודל הסיכון הפרופורציונלי המסורתי של קוקס, מודלי סיכון מתחרים שוקלים את נוכחותם של אירועים מתחרים ואת שילובם עם נומוגרפיה, מכשיר חישוב גרפי, המהווה כלי שימושי לרופאים לביצוע חיזוי פרוגנוסטי מדויק. במחקר זה אנו מדווחים על שיטה לביסוס נומוגרפיית הסיכון המתחרה, כלומר הערכת יכולות ההבחנה שלה (כלומר, מדד הקונקורדנציה והשטח מתחת לעקומה) והכיול (כלומר, עקומות הכיול), וכן התועלת נטו (כלומר, ניתוח עקומת החלטה). בנוסף, אימות פנימי באמצעות דגימות מחדש של bootstrap של מערך הנתונים המקורי ותיקוף חיצוני באמצעות מערך נתונים חיצוני של נומוגרפיית הסיכון המתחרה הוקמה בוצעו גם כדי להדגים את יכולת האקסטרפולציה שלה. נומוגרפיית הסיכון המתחרה צריכה לשמש כלי שימושי לרופאים לחזות פרוגנוזה תוך התחשבות בסיכונים מתחרים.

Introduction

בשנים האחרונות זוהו גורמים פרוגנוסטיים מתפתחים עם התפתחות הרפואה המדויקת, ומודלים פרוגנוסטיים המשלבים גורמים מולקולריים וקלינופתולוגיים מושכים תשומת לב גוברת במסגרות קליניות. עם זאת, מודלים לא גרפיים, כגון מודל הסיכון הפרופורציונלי של קוקס, עם תוצאות של ערכי מקדם, קשים לקלינאים להבין1. לשם השוואה, נומוגרפיה היא כלי ויזואליזציה של מודלי רגרסיה (כולל מודל רגרסיה קוקס, מודל סיכון מתחרה וכו '), דיאגרמה דו-ממדית המיועדת לחישוב גרפי משוער של פונקציה מתמטית2. הוא מאפשר הערכה של רמות שונות של משתנים במודל קליני וחישוב ציוני סיכון (RS) כדי לחזות פרוגנוזה.

הערכת מודל חיונית בבניית מודלים, ושני מאפיינים מקובלים בדרך כלל להערכה: אפליה וכיול. במודלים קליניים, אפליה מתייחסת ליכולתו של מודל להפריד בין אנשים המפתחים אירועים לבין אלה שלא, כגון חולים שמתו לעומת אלה שנותרו בחיים, ומדד הקונקורדנציה (C-index) או האזור שמתחת לעקומת ההפעלה של המקלט (AUC) משמשים בדרך כלל כדי לאפיין אותו 3,4. כיול הוא תהליך של השוואת ההסתברויות החזויות של מודל עם ההסתברויות בפועל, ועקומות כיול היו בשימוש נרחב כדי לייצג אותו. בנוסף, תיקוף מודל (תיקוף פנימי וחיצוני) הוא שלב חשוב בבניית מודל, ורק מודלים מתוקפים ניתנים לאקסטרפולציה נוספת5.

מודל הסיכון הפרופורציונלי של קוקס הוא מודל רגרסיה המשמש במחקר רפואי לחקר הקשר בין גורמים פרוגנוסטיים למצב הישרדות. עם זאת, מודל הסיכון הפרופורציונלי של קוקס מתייחס רק לשני סטטוסים של תוצאה [Y (0, 1)], בעוד שנבדקי המחקר מתמודדים לעתים קרובות עם יותר משני סטטוסים, וסיכונים מתחרים מתעוררים [Y (0, 1, 2)]1. הישרדות כוללת (OS), המוגדרת כזמן מתאריך המוצא (למשל, טיפול) ועד לתאריך המוות מכל סיבה שהיא, היא נקודת הקצה החשובה ביותר בניתוח הישרדות. עם זאת, מערכת ההפעלה אינה מצליחה להבדיל בין מוות ספציפי לסרטן לבין מוות שאינו ספציפי לסרטן (למשל, אירועים קרדיווסקולריים וסיבות אחרות שאינן קשורות), ובכך מתעלמת מסיכונים מתחרים6. במצבים אלה, מודל הסיכון המתחרה מועדף לחיזוי מצב הישרדות תוך התחשבות בסיכונים מתחרים7. המתודולוגיה של בנייה ותיקוף של מודלי סיכון פרופורציונליים של קוקס מבוססת היטב, בעוד שהיו מעט דיווחים לגבי תיקוף של מודלי סיכון מתחרים.

במחקר הקודם שלנו נקבעה נומוגרפיית סיכון מתחרה ספציפית, שילוב של נומוגרפיה ומודל סיכון מתחרה, ואומדן דירוג סיכון המבוסס על מודל סיכון מתחרה8. מחקר זה נועד להציג שיטות שונות של הערכה ותיקוף של נומוגרפיית הסיכון המתחרה שנקבעה, אשר אמורה לשמש כלי שימושי עבור קלינאים לחזות פרוגנוזה תוך התחשבות בסיכונים מתחרים.

Access restricted. Please log in or start a trial to view this content.

Protocol

מסד הנתונים מעקב, אפידמיולוגיה ותוצאות קצה (SEER) הוא מסד נתונים פתוח לסרטן המכיל רק נתוני מטופלים שזהותם אינה מזוהה (מזהה SEER: 12296-נובמבר 2018). לכן, מחקר זה היה פטור מאישור ועדת הבדיקה של בית החולים המסונף ג'ינהואה, בית הספר לרפואה של אוניברסיטת ג'ג'יאנג.

1. הכנת נתונים והכנת חבילות R

  1. הכן וייבא את הנתונים.
    > Dataset <- read.csv(".../Breast cancer Data.xlsx") #Import נתונים.
    הערה: הנתונים מועלים בקובץ משלים 1.
  2. התקן וטען את חבילות R.
    חבילות > <- c("rms","cmprsk","mstate","הישרדות","סיכוןרגרסיה",
    פרודים")
    > req.pcg <- function(pcg){
    חדש <- PCG[!( pcg %in% מותקן.packages()[, "חבילה"])]
    if (length(new)) install.packages(new, dependencies = T)
    sapply(pcg, require, ch = T)
    }
    > req.pcg (חבילות)

    הערה: בצע את ההליכים הבאים בהתבסס על תוכנת R (גירסה 3.6.2) באמצעות החבילות rms, cmprsk, mstate, survival, riskRegression ו - prodlim (http://www.r-projectrg/).

2. לקבוע נומוגרפיות סיכון מתחרות בשתי שיטות נפרדות

  1. קבע את נומוגרפיית הסיכון המתחרה בשיטה ישירה.
    > mod_cph <- cph(Surv(הישרדותחודשים, מצב) ~ פקטור1+ פקטור2+...,
    x=T, y=T, surv=T, data=Dataset)
    > nom <- nomogram(mod_cph, fun=list(function(x) 1-surv_cph(36, x)...),
    funlabel=c("אירוע בן 3 שנים1 Prob." ...), lp=F)
    #Take החודש ה-36 כדוגמה.
    > mod_crr <- crr(Survivalmonths, fstatus, failcode=1, cov1=cov)
    ציון > <- log(log(((1-real.3y),(1-cif.min36)))/(maxbeta/100)
    > חלקה (נום)
  2. קבע את נומוגרפיית הסיכון המתחרה בשיטה משוקללת.
    > df.w <- crprep("Survivalmonths", fstatus",
    data=dataset, trans=c(1,2), cens=0,
    שמור=c("פקטור1", פקטור2"...))
    > mod.w <- cph(Surv(Tstart, Tstop, status==1) ~ factor1+factor2+...,
    data=df.w, weight=weight.cens, subset=failcode==1, surv=T)
    > nom.w <- nomogram(mod.w...)

3. יכולת האפליה של נומוגרפיית הסיכון המתחרה

  1. C-index לאפליה
    1. הכנס את cov המטריצה למודל הסיכון המתחרה mod_crr. וקבל רכב שטח מטריצה חזוי.
      > SUV <- predict.crr(mod_crr, cov)
    2. קבל את המקרים המצטברים בחודש מסוים מ- SUV וחשב את מדד C עם הפונקציה rcorr.cens.
      > CIF36 <- SUV[אשר(SUV[,1]==36),][-1]
      > rcorr <- rcorr.cens(1-cif36,Surv(Dataset$Survivalmonths,Dataset$tumordeath))
      > cindex <- rcorr[1]
  2. AUC בגין אפליה
    1. סקור את ביצועי החיזוי של מודל הסיכון המתחרה באמצעות הפונקציה Score (חבילת riskRegression).
      > fgr.w <- FGR(Hist(Survivalmonths, fstatus) ~ factor1+ factor2+..., data=Dataset, סיבה=1)
      ציון > <- Score(list("Fine-Gray" = fgr.w),
    2. חלץ את AUC מן "ציון".
      > score$AUC

4. יכולת כיול של מודלי סיכון מתחרים

  1. עקומות כיול עם רווח בר-סמך של 95% של מודל הסיכון המתחרה
    1. קבל מסגרת נתונים עם המקרים המצטברים של כל אדם בזמן כשל מסוים.
      > cif36 <- data.frame(cif36) #Take החודש ה-36 כדוגמה.
      > colnames(cif36.36_o)<-c("36m")
    2. חלק את הקבוצה על פי המקרים המצטברים המשוערים לחמש תת-קבוצות וחשב את ממוצע המקרים המצטברים החזויים של כל תת-קבוצה.
      > group36 <- cut(cif36$'36m',
      Quantile(CIF36$'36m', SEQ(0, 1, 0.2)),
      include.lowest = TRUE, תוויות = 1:5)
      > mean36 <- as.vector(by(cif36 $'36m', group36, mean))
    3. חשב את המקרים המצטברים הנצפים, כלומר, המקרים המצטברים בפועל, באמצעות הפונקציה cuminc, ולאחר מכן קבל את המקרים המצטברים שנצפו עם רווח בר-סמך של 95% בזמן כשל מסוים.
      > cum36 <- cuminc(Dataset$Survivalmonths,Dataset$fstatus,group36)
      > obs36 <- נקודות זמן(cum36,Dataset$Survivalmonths)$est[c(1:5),36]
      > obs36var <- timepoints(cum36,Dataset$Survivalmonths)$var[c(1:5),36]
      > df <- data.frame(mean36, obs36, obs36var)
    4. התווה את עקומת הכיול עם ההיארעות המצטברת החזויה כציר x והמקרים המצטברים הנצפים כציר y באמצעות הפונקציה ggplot.
      > ggplot(df)+ geom_point(aes(x=mean36,y=obs36),col="red")+
      geom_point(aes(x=mean36,y=obs36),col="red",pch=4)+
      geom_line(col="red",aes(x=mean36,y=obs36))+
      geom_errorbar(col="red",aes(x=mean36,y=obs36+1.96
      *sqrt(obs36var)),
      ymin = obs36-1.96*sqrt(obs36var), ymax = obs36+1.96
      *sqrt(obs36var))
      geom_abline(lty=3,lwd=2,col=c(rgb(0,118,192,
      maxColorValue=255)))
  2. עקומת כיול עם ציוני סיכון של מודל הסיכון המתחרה
    1. להעריך כל רמה של כל המשתנים ולקבל את RS הכולל.
      > Dataset$factor1[Dataset$factor1==1] <- factor1.scale["Factor1_level1"]
      >
      ... דוגמה #For, Dataset$histology[Dataset$histology==1]<-histology.scale["Histology1"]
      > Dataset$rs <- Dataset$factor1+Dataset$factor2+Dataset$factor3+...
      הערה: קבל את סך RS עבור כל מטופל על ידי סיכום הנקודות של כל משתנה.
    2. לספור את התדרים ולחשב את ההיארעות המצטברת הנצפית של ציוני הסיכון הכוללים השונים.
      > rs.freq <- as.data.frame(table(Dataset$rs))
      > obs.36 <- וקטור(mode="numeric", length=nrow(rs.freq))
      > עבור (i ב-1: nrow(rs.freq)) {
      ערכת נתונים <- subset(Dataset,Dataset$rs== rs.freq [i,1])
      cif.dataset <- cuminc(dataset$Survivalmonths,dataset$death3)
      cif36.dataset <- timepoints(cif.dataset,36)
      obs.36[i] <- cif36.dataset$est[1]}
    3. הגדר את טווח ציר ה- x וחשב את המקרים המצטברים החזויים של ציוני הסיכון הכוללים.
      > RS <- טווח(nom$total.points)
      > x.36 <- seq(min(RS),max(RS),0.01)
      > pre.36 <- 1-(1-cif.min36)^exp(x.36*maxbeta/100)
    4. התווה את עקומת הכיול עם ציוני סיכון.
      > plot(x.36, pre.36, type='l'...)
      > par(חדש=TRUE)
      > עלילה (as.vector(rs.freq[,1]), obs.36... )

5. ניתוח עקומת החלטה של מודלי סיכון מתחרים

  1. מקור הפונקציה stdca לביצוע ניתוח עקומת ההחלטה.
    מקור > ("STDCA. R")
  2. חלץ את משוואות הפולינום מהנומוגרפיה כדי לחשב את הסתברות ההישרדות.
    > nomogramEx(nomo = nom)
    > Dataset$predictors <- A * (Dataset$rs ^3) + B * (Dataset$rs ^2) + C * Dataset$rs + D
    #predictors הן הסתברויות חזויות למוות ספציפי לסרטן המחושבות על ידי הנומוגרפיה שנקבעה
  3. בצע את ניתוח עקומת ההחלטה.
    > stdca(data = Dataset, outresult = "status", ttoutcome = "Survivalmonths", timepoint = 36,
    מנבאים = "מנבאים", cmprsk = TRUE, חלק = FALSE, הסתברות = FALSE)

    הערה: להערכת תוצאה בנוכחות סיכון מתחרה, יש לבחור ב- TRUE עבור cmprsk.

6. אימות פנימי בשיטת bootstrap

  1. קבל את ממוצע המקרים המצטברים החזויים באמצעות שיטת bootstrap.
    1. דגום מחדש את ערכת הנתונים המקורית (ערכת נתונים) עם החלף כדי ליצור את ערכת הנתונים bootstrap (Dataset_in). צור מודל סיכון מתחרה (mod.in_crr) עם ערכת הנתונים bootstrap. השתמש בפונקציה predict.crr כדי לחזות זמני mod.in_crr ולולאה b כדי ליצור suvall.in.
      ב=ב
      suvall.in <- רשימה()
      for(j in 1:B){
      Dataset_in <- ערכת נתונים[sample(c(1:nrow(Dataset),nrow(ערכת נתונים),
      החלף = TRUE),]
      צרף(Dataset_ אינץ')
      קוב. ב- <- model.matrix(~factor1+ factor2+...) [,-1]
      מוד. ב- _crr <- crr(Survivalmonths, fstatus, failcode=1, cov1=cov.in)
      ניתוק(מערך נתונים. פנימי)
      רכב שטח. ב- <- predict.crr(mod. in _crr, cov)
      suvall.in[[j]] <- suv.in}
    2. קבל את ממוצע המקרים המצטברים החזויים בחודש מסוים.
      CIF36All. < פנימי - וקטור(mode="numeric", length=nrow(Dataset))
      עבור (k ב-1:B) {
      CIF36All. פנימי<- CIF36All. פנימי+ סובל. פנימי[[k]][which(suvall. inner[[k]][,1]==36),][-1]
      }
      cif36.in <- cif36all.in/B
  2. חשב את C-index באמצעות אימות צולב פנימי עם הפונקציה rcorr.cens.
    רקורר. < פנימי- rcorr.cens(1-cif36.in,Surv(Dataset$Survivalmonths,Dataset$tumordeath))
    סיקס. < פנימי- rcorr. פנימי[1]
  3. כייל באמצעות אימות פנימי צולב.
    הערה: הקודים של עקומת הכיול של מודל הסיכון המתחרה עם אימות פנימי דומים לקודים בסעיף 4, בעוד SUV הוחלף על ידי suv.in.

7. תיקוף חיצוני של מודל הסיכון המתחרה

  1. קבל את המקרים המצטברים החזויים באמצעות נתונים חיצוניים. קבל את המקרים המצטברים החזויים עם מטריצה של משתני נתונים חיצוניים (cov.ex).
    suv.ex <- predict.crr(mod_crr,cov.ex)
    cif36.ex <- suv.ex [which(suv.ex $time=="36"),][-1]
  2. חשב את C-index באמצעות אימות חיצוני.
    rcorr.ex <- rcorr.cens(1-cif36.ex,Surv(Dataset.ex$Survivalmonths,Dataset.ex$tumordeath))
    cindex.ex <- rcorr.ex[1]
  3. כייל באמצעות אימות חיצוני.
    הערה: הקודים של עקומת הכיול של מודל הסיכון המתחרה עם אימות פנימי דומים לקודים בסעיף 4, בעוד SUV מוחלף על ידי suv.ex.

Access restricted. Please log in or start a trial to view this content.

תוצאות

במחקר זה, נתונים של חולות עם סרטן השד נשלפו ממסד הנתונים SEER ושימשו כנתונים לדוגמה. מסד הנתונים SEER מספק נתונים על סרטן המייצג כ -34.6% מאוכלוסיית ארצות הברית, והתקבל אישור לגשת למסד הנתונים (מספר סימוכין 12296-נובמבר 2018).

שתי נומוגרפיות (איור 1), שתיהן כוללות סוג היסט...

Access restricted. Please log in or start a trial to view this content.

Discussion

מחקר זה השווה בין נומוגרפיות סיכון מתחרות שנקבעו בשתי שיטות שונות וערך הערכה ותיקוף של הנומוגרפיות שנקבעו. באופן ספציפי, מחקר זה סיפק הדרכה שלב אחר שלב לביסוס הנומוגרפיה על בסיס שיטה ישירה, כמו גם חישוב מדד C והתוויית עקומות הכיול.

חבילת rms בתוכנת R נמצאת בשימוש נרחב לבנ?...

Access restricted. Please log in or start a trial to view this content.

Disclosures

המחברים מצהירים כי אין להם אינטרסים מתחרים.

Acknowledgements

המחקר נתמך על ידי מענקים מפרויקט תוכנית המדע והטכנולוגיה הרפואית של פרובינציית ג'ג'יאנג (מספרי מענק 2013KYA212), התוכנית הכללית של הקרן למדעי הטבע של מחוז ג'ג'יאנג (מענק מספר Y19H160126), ותוכנית המפתח של לשכת המדע והטכנולוגיה העירונית ג'ינהואה (מענק מספר 2016-3-005, 2018-3-001d ו- 2019-3-013).

Access restricted. Please log in or start a trial to view this content.

Materials

NameCompanyCatalog NumberComments
R softwareNoneNot ApplicableVersion 3.6.2 or higher 
Computer systemMicrosoft Windows 10 Windows 10 or higher

References

  1. Andersen, P. K., Gill, R. D. Cox's regression model for counting processes: A large sample study. The Annals of Statistics. 10 (4), 1100-1120 (1982).
  2. Lubsen, J., Pool, J., vander Does, E. A practical device for the application of a diagnostic or prognostic function. Methods of Information in Medicine. 17 (2), 127-129 (1978).
  3. Harrell, F. E., Lee, K. L., Mark, D. B. Multivariable prognostic models: Issues in developing models, evaluating assumptions and adequacy, and measuring and reducing errors. Statistics In Medicine. 15 (4), 361-387 (1996).
  4. Hung, H., Chiang, C. -T. Estimation methods for time-dependent AUC models with survival data. The Canadian Journal of Statistics / La Revue Canadienne de Statistique. 38 (1), 8-26 (2010).
  5. Moons, K. G. M., et al. Risk prediction models: I. Development, internal validation, and assessing the incremental value of a new (bio)marker. Heart. 98 (9), 683-690 (2012).
  6. Fu, J., et al. Real-world impact of non-breast cancer-specific death on overall survival in resectable breast cancer. Cancer. 123 (13), 2432-2443 (2017).
  7. Fine, J. P., Gray, R. J. A proportional hazards model for the subdistribution of a competing risk. Journal of the American Statistical Association. 94 (446), 496-509 (1999).
  8. Wu, L., et al. Establishing a competing risk regression nomogram model for survival data. Journal of Visualized Experiments. (164), e60684(2020).
  9. Zhang, Z., Geskus, R. B., Kattan, M. W., Zhang, H., Liu, T. Nomogram for survival analysis in the presence of competing risks. Annals of Translational Medicine. 5 (20), 403(2017).
  10. Zhang, Z. H., et al. Overview of model validation for survival regression model with competing risks using melanoma study data. Annals Of Translational Medicine. 6 (16), 325(2018).
  11. Newson, R. Confidence intervals for rank statistics: Somers' D and extensions. Stata Journal. 6 (3), 309-334 (2006).
  12. Davison, A. C., Hinkley, D. V., Schechtman, E. Efficient bootstrap simulation. Biometrika. 73 (3), 555-566 (1986).
  13. Roecker, E. B. Prediction error and its estimation for subset-selected models. Technometrics. 33 (4), 459-468 (1991).
  14. Steyerberg, E. W., Harrell, F. E. Prediction models need appropriate internal, internal-external, and external validation. Journal of Clinical Epidemiology. 69, 245-247 (2016).
  15. Zhang, Z., Chen, L., Xu, P., Hong, Y. Predictive analytics with ensemble modeling in laparoscopic surgery: A technical note. Laparoscopic, Endoscopic and Robotic Surgery. 5 (1), 25-34 (2022).

Access restricted. Please log in or start a trial to view this content.

Reprints and Permissions

Request permission to reuse the text or figures of this JoVE article

Request Permission

Explore More Articles

187

This article has been published

Video Coming Soon

JoVE Logo

Privacy

Terms of Use

Policies

Research

Education

ABOUT JoVE

Copyright © 2025 MyJoVE Corporation. All rights reserved