Enseñarle a analizar NRI en lenguaje R

NRI (índice de reclasificación neta) se refiere al índice de reclasificación neta, que se utiliza para comparar el rendimiento de los modelos nuevos y antiguos en la clínica. Por ejemplo, usualmente usamos ECG para evaluar el infarto de miocardio. Ahora hay un nuevo índice de troponina, queremos saber que la proteína de creatinina combinada con ECG es mejor para evaluar el infarto de miocardio o el ECG solo. Sabemos que luego de que se establece un modelo, se puede generar un punto de corte para dividir una población en grupos positivos y negativos. Luego del establecimiento del nuevo modelo, los grupos positivos y negativos deben ser diferentes del modelo original, y los falsos positivos y los falsos negativos también son diferentes. NRI principalmente compara Es la redistribución de verdaderos positivos y verdaderos negativos de este tipo de población. No diré el principio. Nadie más lo ha dicho bien. Vea la imagen a continuación para una explicación (imagen del público cuenta:
Inserte la descripción de la imagen aquí
Desenroscar ) NRI se encuentra actualmente en documentos de SCI Las aplicaciones chinas son cada vez más utilizadas. Hoy en día hablamos principalmente sobre cómo usar el lenguaje R para hacer NRI, o usar los datos de cáncer de mama que vienen con nuestro SPSS.
Para hacer NRI en lenguaje R, es necesario usar el paquete nricens y el paquete de supervivencia, que deben descargarse primero. Primero importamos los datos y vemos las variables. Los datos se explican de la siguiente manera:
edad significa edad, pathize significa tamaño patológico del tumor (cm), lnpos significa ganglios linfáticos axilares positivos, histgrad significa grado histopatológico, er significa estado del receptor de estrógeno, pr significa estado del receptor de progesterona, estado resultado evento Para muerte, Pathscat representa la categoría de tamaño del tumor patológico (variable de agrupación), ln_yesno representa si hay agrandamiento de los ganglios linfáticos, el tiempo es el tiempo de supervivencia y el siguiente agec lo establecemos nosotros mismos, no me importa.

library(nricens)
library(survival)
library(foreign)
bc <- read.spss("E:/r/test/Breast cancer survival agec.sav",
                use.value.labels=F, to.data.frame=T)
bc <- na.omit(bc)#删除缺失值

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Si queremos saber las muertes en 48 meses, es decir, 4 años, podemos realizar análisis de regresión COX

names(bc)
time<-bc$time#生成时间变量
status<-bc$status#生成结局变量
j1<-as.matrix(subset(bc,select = c(age,pathsize,pr,er)))#旧模型变量,要以矩阵形式,不能有缺失值,不然会报错
j2<-as.matrix(subset(bc,select = c(age,pathsize,pr,er,ln_yesno))) #新模型变量,要以矩阵形式,不能有缺失值,不然会报错
mod.std<-coxph(Surv(time,status)~ .,data.frame(time, status,j1),x=TRUE)#生成旧模型COX回归函数
mod.new<-coxph(Surv(time,status)~ .,data.frame(time, status,j2),x=TRUE) #生成新模型COX回归函数
p.std = get.risk.coxph(mod.std, t0=48)#生成预测函数
p.new = get.risk.coxph(mod.new, t0=48)#生成预测函数
nricens(mdl.std = mod.std, mdl.new = mod.new, t0 = 48, cut = c(0.2, 0.4),
        niter = 100,alpha = 0.05,updown = 'category')#cut分临床切点,分为高中低风险,niter为重抽样次数,category为分类的意思,alpha为置信区间

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Debemos prestar atención al valor de NRI +. Es un valor positivo. El nuevo modelo es mejor que el modelo anterior. Por último, el gráfico generado
Inserte la descripción de la imagen aquí
también se puede procesar de acuerdo con variables categóricas y modelos lineales generalizados. Primero debe establecer el variable de tiempo, y la variable de resultado, y las otras son básicamente las mismas

bc= bc[ bc$time > 48| (bc$time < 48 & bc$status == 1), ]#重新定义一下数据
status1= ifelse(bc$time < 48 & bc$status == 1, 1, 0)#重新定义下结局变量
j3<-as.matrix(subset(bc,select = c(age,pathsize,pr,er)))
j4<-as.matrix(subset(bc,select = c(age,pathsize,pr,er,ln_yesno)))
mstd1= glm(status1 ~ ., binomial(logit), data.frame(status1, j3), x=TRUE)
mnew1= glm(status1 ~ ., binomial(logit), data.frame(status1, j4), x=TRUE)
nribin(mdl.std=mstd1, mdl.new = mnew1, cut = c(0.2, 0.4),
       niter = 1000, updown = 'category')

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Para artículos más interesantes, preste atención a la cuenta pública: investigación de base cero
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/dege857/article/details/113107587
Recomendado
Clasificación