- この記事の構成
- 鑑別診断・診断過程・診断支援システムの基礎的な動きについて考えてみる
- 非常に大きなデータソースがあって、「最終診断名」がある。その診断名に至るにあたって、ありとあらゆる情報取得(主訴、随伴症状、検査結果、他)があるとする
- それを利用可能とする
- 情報同士は、独立ではないのだが、独立でなくすると、あっという間に面倒くさくなるので、独立であるとして、どのように確率・尤度が変化するかを見ることにする
- このデータソースと検査の利用については次の記事に続く
Nr<-10000
Nq<-10
Cs<-rep(2,Nq)
Cs[1]<-5
Nd<-3
Q<-matrix(0,Nr,Nq)
for(i in 1:Nq){
Q[,i]<-sample(1:Cs[i],Nr,replace=TRUE)
}
D<-sample(1:Nd,Nr,replace=TRUE)
for(i in 1:Nq){
print(paste("Q",i,"の分割表"))
tmpt<-as.matrix(table(Q[,i],D))
print(tmpt)
print(paste("診断名ごとの情報項目ファクターの確率"))
tmpt2<-tmpt/apply(tmpt,2,sum)
print(tmpt2)
print(paste("情報項目ファクターごとの診断名の尤度"))
tmpt3<-tmpt2/apply(tmpt2,1,sum)
print(tmpt3)
}
print("事前確率〜有病率")
preprob<-table(D)/Nr
print(preprob)
H<-rep(0,Nq)
for(i in 1:Nq){
H[i]<-sample(1:Cs[i],1)
}
ProbHistory<-matrix(0,1+Nq,length(preprob))
ProbHistory[1,]<-preprob
for(i in 1:Nq){
print(paste("Q",i,"の分割表"))
tmpt<-as.matrix(table(Q[,i],D))
print(tmpt)
print(paste("診断名ごとの質問項目ファクターの確率"))
tmpt2<-tmpt/apply(tmpt,2,sum)
print(tmpt2)
print(paste("質問項目ファクターごとの診断名の尤度"))
tmpt3<-tmpt2/apply(tmpt2,1,sum)
print(tmpt3)
ProbHistory[i+1,]<-ProbHistory[i,]*tmpt3[H[i],]
ProbHistory[i+1,]<-ProbHistory[i+1,]/sum(ProbHistory[i+1,])
}
matplot(ProbHistory,type="l")