@ Tim♦と@ gung♦の回答はほとんどすべてをカバーしていますが、両方を1つに統合して、さらに明確にすることを試みます。
引用された行のコンテキストは、最も一般的であるように、主に特定のしきい値の形で臨床試験を参照する場合があります。病気、と呼ばれる健康な状態を含む以外のすべてを想像してください。テストでは、適切な予測を取得できるプロキシ測定値を見つけたいと考えています。(1)絶対的な特異性/感度が得られない理由は、プロキシ量の値が完全に相関しないためです。病状ですが、一般的にはそれに関連しているだけなので、個々の測定では、その量がしきい値を超える可能性がありD D c D D cDDDcDDc個人とその逆。わかりやすくするために、変動性のガウスモデルを想定します。
プロキシ量としてを使用しているとしましょう。が選択されている場合、はより大きくなければなりません(は期待値演算子です)。ここで、が複合状況(同様)であり、実際には3つのグレードの重大度、、で構成され、それぞれに期待値が徐々に増加することがわかったときに問題が発生します。単一の個人の場合、カテゴリまたはから選択x E [ x D ] E [ x D c ] E D D c D 1 D 2 D 3 x D D c x T D D c x T D x D cバツバツE[ xD]E[ xD c]EDDcD1D2D3バツDDcカテゴリ、「テスト」が正になる確率は、選択したしきい値によって異なります。と両方の個体を持つ真にランダムなサンプルの研究に基づいてを選択するとします。私たちのはいくつかの偽陽性と陰性を引き起こします。人物をランダムに選択した場合、緑のグラフで値を決定する確率は赤のグラフで、ランダムに選択された人物のです。バツTDDcバツTDバツDc
得られる実際の数は、およびの実際の数に依存しますが、結果として得られる特異性と感度には依存しません。してみましょう、累積確率関数です。次に、疾患の有病率について、結合された母集団でテストが実際にどのように実行されるかを実際に見ようとすると、一般的なケースで予想される2x2の表が表示されます。D c F ()p DDDcF()pD
(D c 、− )= (1 − p )(1 − F D c(x T))(D 、− )= p (F D(x T))(D c 、+ )
(D 、+ )= p (1 − FD(xT))
(D c 、− )=(1 − p )(1 − FD c(xT))
(D、− )= p (FD(xT))
(D c 、+ )= (1 − p )∗ FD c(xT)
実際の数字はに依存しますが、感度と特異性は、独立しました。ただし、これらは両方ともおよび依存しています。したがって、これらに影響するすべての要因は、これらのメトリックを確実に変更します。たとえば、ICUで作業している場合、はに置き換えられ、外来について話している場合は置き換えられます。病院では、有病率も異なることは別の問題ですが、p F D F D c F D F D 3 F D 1 D c D c x D D c F D F D c D F FppFDFD cFDFD 3FD 1ただし、感度と特異度が異なるのは、有病率の違いではなく、分布の違いです。これは、しきい値が定義されたモデルが、外来患者または入院患者として現れる集団に適用できないためです。あなたは先に行くと、打破することができますの入院患者のサブパートbecasue、複数の亜集団にも上げなければならないその他の理由(ほとんどのプロキシでもあるので、他の深刻な状態では「上昇」)へ。破断のことながら、亜集団に集団は、感度の変化を説明する集団における対応する変化により(特異性の変化を説明とDcDcバツDDcFDFD c)これは、複合グラフが実際に構成するものです。各色は実際には独自の持つため、これが元の感度と特異度が計算された異なる限り、これらのメトリックは変化します。DFF
例
それぞれ10000 Dc、500、750、300 D1、D2、D3の11550の母集団を想定します。コメントアウトされた部分は、上のグラフで使用されているコードです。
set.seed(12345)
dc<-rnorm(10000,mean = 9, sd = 3)
d1<-rnorm(500,mean = 15,sd=2)
d2<-rnorm(750,mean=17,sd=2)
d3<-rnorm(300,mean=20,sd=2)
d<-cbind(c(d1,d2,d3),c(rep('1',500),rep('2',750),rep('3',300)))
library(ggplot2)
#ggplot(data.frame(dc))+geom_density(aes(x=dc),alpha=0.5,fill='green')+geom_density(data=data.frame(c(d1,d2,d3)),aes(x=c(d1,d2,d3)),alpha=0.5, fill='red')+geom_vline(xintercept = 13.5,color='black',size=2)+scale_x_continuous(name='Values for x',breaks=c(mean(dc),mean(as.numeric(d[,1])),13.5),labels=c('x_dc','x_d','x_T'))
#ggplot(data.frame(d))+geom_density(aes(x=as.numeric(d[,1]),..count..,fill=d[,2]),position='stack',alpha=0.5)+xlab('x-values')
Dc、D1、D2、D3、コンポジットDなど、さまざまな母集団のx平均を簡単に計算できます。
mean(dc)
mean(d1)
mean(d2)
mean(d3)
mean(as.numeric(d[,1]))
> mean(dc) [1] 8.997931
> mean(d1) [1] 14.95559
> mean(d2) [1] 17.01523
> mean(d3) [1] 19.76903
> mean(as.numeric(d[,1])) [1] 16.88382
元のテストケースの2x2テーブルを取得するには、まずデータに基づいてしきい値を設定します(実際のケースでは、@ gungが示すようにテストを実行した後に設定されます)。とにかく、しきい値を13.5とすると、母集団全体で計算すると、次の感度と特異度が得られます。
sdc<-sample(dc,0.1*length(dc))
sdcomposite<-sample(c(d1,d2,d3),0.1*length(c(d1,d2,d3)))
threshold<-13.5
truepositive<-sum(sdcomposite>13.5)
truenegative<-sum(sdc<=13.5)
falsepositive<-sum(sdc>13.5)
falsenegative<-sum(sdcomposite<=13.5)
print(c(truepositive,truenegative,falsepositive,falsenegative))
sensitivity<-truepositive/length(sdcomposite)
specificity<-truenegative/length(sdc)
print(c(sensitivity,specificity))
> print(c(truepositive,truenegative,falsepositive,falsenegative)) [1]139 928 72 16
> print(c(sensitivity,specificity)) [1] 0.8967742 0.9280000
外来患者で作業していて、D1比率からのみ罹患患者を取得している、またはD3のみを取得しているICUで作業していると仮定します。(より一般的なケースでは、Dcコンポーネントも分割する必要があります)感度と特異度はどのように変化しますか?有病率を変更することにより(つまり、どちらの場合にも属する患者の相対的比率を変更することにより、特異性と感度はまったく変更されません。この有病率も、分布の変化に伴って変化することになります)
sdc<-sample(dc,0.1*length(dc))
sd1<-sample(d1,0.1*length(d1))
truepositive<-sum(sd1>13.5)
truenegative<-sum(sdc<=13.5)
falsepositive<-sum(sdc>13.5)
falsenegative<-sum(sd1<=13.5)
print(c(truepositive,truenegative,falsepositive,falsenegative))
sensitivity1<-truepositive/length(sd1)
specificity1<-truenegative/length(sdc)
print(c(sensitivity1,specificity1))
sdc<-sample(dc,0.1*length(dc))
sd3<-sample(d3,0.1*length(d3))
truepositive<-sum(sd3>13.5)
truenegative<-sum(sdc<=13.5)
falsepositive<-sum(sdc>13.5)
falsenegative<-sum(sd3<=13.5)
print(c(truepositive,truenegative,falsepositive,falsenegative))
sensitivity3<-truepositive/length(sd3)
specificity3<-truenegative/length(sdc)
print(c(sensitivity3,specificity3))
> print(c(truepositive,truenegative,falsepositive,falsenegative)) [1] 38 931 69 12
> print(c(sensitivity1,specificity1)) [1] 0.760 0.931
> print(c(truepositive,truenegative,falsepositive,falsenegative)) [1] 30 944 56 0
> print(c(sensitivity3,specificity3)) [1] 1.000 0.944
要約すると、集団の平均xを変化させて感度の変化を示すプロット(特異性は、サブ母集団からDc母集団を構成した場合も同様の傾向に従います)は、次のグラフです
df<-data.frame(V1=c(sensitivity,sensitivity1,sensitivity3),V2=c(mean(c(d1,d2,d3)),mean(d1),mean(d3)))
ggplot(df)+geom_point(aes(x=V2,y=V1),size=2)+geom_line(aes(x=V2,y=V1))
- プロキシではない場合、技術的には100%の特異性と感度があります。たとえば、肝臓生検でを特定の客観的に定義された病理学的画像を持つと定義すると、肝臓生検テストがゴールドスタンダードになり、感度がそれ自体に対して測定されるため、100%になります。D