R言語でNRIを分析する方法を教えてください

NRI(Net reclassification index)は、クリニックでの新旧モデルのパフォーマンスを比較するために使用されるネット再分類インデックスを指します。たとえば、通常、ECGを使用して心筋梗塞を評価します。現在、新しいインデックストロポニンがあります。心筋梗塞またはECGのみを評価するには、ECGと組み合わせたクレアチニンタンパク質が優れていることを知りたいと思います。モデルが確立された後、母集団を正と負のグループに分割するためのカットポイントを生成できることがわかっています。新しいモデルの確立後、正と負のグループは元のモデルとは異なる必要があり、誤検出と偽陰性も異なります。NRIは主に比較します。これは、このタイプの母集団の真陽性と真陰性の再分布です。原則は言いません。他の誰もそれをうまく言いません。説明については、下の写真を参照してください(公開写真アカウント:
ここに画像の説明を挿入
Unscrew NRIは現在SCIの論文に掲載されており、中国語のアプリケーションがますます広く使用されるようになっています。今日は主にR言語を使用してNRIを作成する方法、またはSPSSに付属の乳がんデータを使用する方法について説明します。
R言語でNRIを作成するには、nricensパッケージとsurvivalパッケージを使用する必要があり、最初にダウンロードする必要があります。まず、データをインポートして変数を表示します。データは次のように説明されます:
年齢は年齢を意味し、pathsizeは病理学的腫瘍サイズ(cm)を意味し、lnposは陽性の腋窩リンパ節を意味し、histgradは組織病理学的グレードを意味し、erはエストロゲン受容体の状態を意味し、prはプロゲステロン受容体の状態を意味し、ステータス結果イベントパスキャットは病理学的腫瘍サイズカテゴリ(グループ化変数)を表し、ln_yesnoはリンパ節腫大があるかどうかを表し、時間は生存時間であり、次の年齢は自分で設定します。気にしないでください。

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)#删除缺失值

ここに画像の説明を挿入
ここに画像の説明を挿入
48か月、つまり4年での死亡を知りたい場合は、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为置信区间

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
NRI +の値に注意する必要があります。これは正の値です。新しいモデルは古いモデルよりも優れています。最後に、生成されたグラフ
ここに画像の説明を挿入
は、カテゴリ変数と一般化線形モデルに従って処理することもできます。最初に設定する必要があります。時間変数、結果変数、その他は基本的に同じです

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')

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
よりエキサイティングな記事については、パブリックアカウントに注意を払ってください:ゼロベースの研究
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/dege857/article/details/113107587