関節リウマチの新診断基準スコア計算関数

  • 昨日関節リウマチ(RA)の新診断基準スコアの概説をした。
  • それに沿って、7項目の情報を取ることにする
#############
# PはRA診断基準の情報
# P[,1]は腫脹大関節数
# P[,2]は腫脹小関節数
# P[,3]はリウマトイド因子(陰性:0,陽性:1,強陽性:2)
# P[,4]はACPA(陰性:0,陽性:1,強陽性:2)
# P[,5]は関節炎の持続期間(単位週)
# P[,6]はESR(正常:0,異常:1)
# P[,7]はCRP(正常:0,異常:1)
#############
  • テキストファイルではこんな感じの7列のファイル
0	3	1	2	8.64618283463642	0	1
2	5	1	0	1.61998201394454	0	1
2	6	2	2	7.65365008963272	1	0
  • それが行列Pに読み込まれたとして、以下でスコアを計算する
    • 出力は、"Score"がいわゆるRA診断用スコア、"Joint","Autoantibody","Inflammation","Duration"はそれぞれ、診断基準の群別の得点
RAscore<-function(P){
 Score<-Joint<-Autoantibody<-Inflammation<-Duration<-rep(0,length(P[,1]))
 Joint<-calcJoint(P[,1:2])
 Autoantibody<-apply(P[,3:4],1,FUN="max")
 Autoantibody[which(Autoantibody==2)]<-3
 Autoantibody[which(Autoantibody==1)]<-2
 Inflammation<-apply(P[,6:7],1,FUN="max")
 
 Duration[which(P[,5]>=6)]<-1
 
 Score<-Joint+Autoantibody+Inflammation+Duration
 list(Score=Score,Joint=Joint,Autoantibody=Autoantibody,Inflammation=Inflammation,Duration=Duration)
}

calcJoint<-function(Pj){
 Psum<-Pj[,1]+Pj[,2]
 ret<-rep(0,length(Pj[,1]))
 ret[which(Psum>=1 & Pj[,2]==0)]<-1
 ret[which(Pj[,2]>=1 & Pj[,2]<=3 & Psum<=10)]<-2
 ret[which(Pj[,2]>=4 & Pj[,2]<=10 & Psum<=10)]<-3
 ret[which(Psum>10 & Pj[,2]>=1)]<-5
 ret
}

RAsc<-RAscore(P)