Bien que les réponses de @ Tim ♦ et @ gung ♦ couvrent à peu près tout, je vais essayer de les synthétiser en une seule et de fournir des clarifications supplémentaires.
Le contexte des lignes citées peut se référer principalement à des tests cliniques sous la forme d'un certain seuil, comme cela est le plus courant. Imaginez une maladie , et tout sauf D, y compris l'état de santé appelé D c . Nous, pour notre test, voudrions trouver une mesure proxy qui nous permet d'obtenir une bonne prédiction pour D. (1) La raison pour laquelle nous n'obtenons pas de spécificité / sensibilité absolue est que les valeurs de notre quantité proxy ne sont pas parfaitement en corrélation avec l'état de la maladie, mais ne s'y associent qu'en général et, par conséquent, dans les mesures individuelles, nous pourrions avoir une chance que cette quantité franchisse notre seuil de D cDDDcDDcindividus et vice versa. Par souci de clarté, supposons un modèle gaussien de variabilité.
Disons que nous utilisons comme quantité proxy. Si x a été bien choisi, alors E [ x D ] doit être supérieur à E [ x D c ] ( E est l'opérateur de valeur attendu). Maintenant, le problème se pose lorsque nous réalisons que D est une situation composite (tout comme D c ), en fait composée de 3 degrés de gravité D 1 , D 2 , D 3 , chacun avec une valeur attendue progressivement croissante pour x . Pour une seule personne, choisie parmixxE[ xré]E[ xD c]Erérécré1ré2ré3XCatégorie D ou de lacatégorie D c , les probabilités que le «test» devienne positif ou non dépendent de la valeur seuil que nous choisissons. Disons que nous choisissons x T en nous basant sur l'étude d'un échantillon vraiment aléatoire ayant à la fois desindividus D et D c . Notre x T provoquera des faux positifs et négatifs. Si nous sélectionnons unepersonne D au hasard, la probabilité régissant savaleur x si elle est donnée par le graphique vert, et celle d'unepersonne D c choisie au hasardpar le graphique rouge.rérécXTrérécXTréXréc
Les nombres réels obtenus dépendront du nombre réel d' individus et D c mais la spécificité et la sensibilité qui en résulteront ne le seront pas. Soit F ( ) une fonction de probabilité cumulative. Ensuite, pour la prévalence de p de la maladie D , voici un tableau 2x2 comme on pourrait s'y attendre du cas général, lorsque nous essayons de voir réellement comment notre test fonctionne dans la population combinée.rérécF( )pré
( D c , - ) = ( 1 - p ) ( 1 - F D c ( x T ) ) ( D , - ) = p ( F D ( x T ) ) ( D c , + )
( D , + ) = p ( 1 - Fré( xT) )
( D c , - ) = ( 1 - p ) ( 1 - FD c( xT) )
( D , - ) = p ( Fré( xT) )
( D c , + ) = ( 1 - p ) ∗ FD c( xT)
Les nombres réels dépendent de , mais la sensibilité et la spécificité sont indépendantes de p . Mais, les deux dépendent de F D et F D c . Par conséquent, tous les facteurs qui les affectent changeront définitivement ces paramètres. Si, par exemple, nous travaillions à l'USI, notre F D serait plutôt remplacé par F D 3 , et si nous parlions de consultations externes, remplacé par F D 1 . C'est une question distincte qu'à l'hôpital, la prévalence est également différente,ppFréFD cFréFD 3FD 1mais ce n'est pas la prévalence différente qui fait que les sensibilités et les spécificités diffèrent, mais la distribution différente, car le modèle sur lequel le seuil a été défini n'était pas applicable à la population apparaissant en ambulatoire ou en hospitalisation . Vous pouvez aller de l'avant et décomposer dans plusieurs sous-populations, car la sous-partie hospitalisée de D c doit également avoir un x élevé pour d'autres raisons (car la plupart des procurations sont également `` élevées '' dans d'autres conditions graves). La répartition de la population D en sous-population explique le changement de sensibilité, tandis que celle de la population D c explique le changement de spécificité (par des changementsrécrécXréréc et F D c ). Voilà en quoi consiste legraphe D composite. Chacune des couleurs aura en fait son propre F , et donc, tant que celui-ci diffère du F sur lequel la sensibilité et la spécificité d'origine ont été calculées, ces mesures changeront.FréFD créFF
Exemple
Supposons une population de 11550 avec 10000 Dc, 500,750,300 D1, D2, D3 respectivement. La partie commentée est le code utilisé pour les graphiques ci-dessus.
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')
Nous pouvons facilement calculer les x-moyennes pour les différentes populations, y compris Dc, D1, D2, D3 et le composite D.
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
Pour obtenir une table 2x2 pour notre scénario de test d'origine, nous avons d'abord défini un seuil, basé sur les données (qui dans un cas réel seraient définies après l'exécution du test comme le montre @gung). Quoi qu'il en soit, en supposant un seuil de 13,5, nous obtenons la sensibilité et la spécificité suivantes lorsqu'elles sont calculées sur l'ensemble de la population.
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
Supposons que nous travaillons avec les patients externes et que nous n'obtenions des patients malades qu'à partir de la proportion D1, ou que nous travaillions à l'USI où nous n'obtenons que le D3. (pour un cas plus général, nous devons également diviser la composante Dc) Comment notre sensibilité et notre spécificité changent-elles? En modifiant la prévalence (c'est-à-dire en modifiant la proportion relative de patients appartenant à l'un ou l'autre cas, nous ne modifions pas du tout la spécificité et la sensibilité. Il se trouve que cette prévalence change également avec une distribution changeante)
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
Pour résumer, un graphique pour montrer le changement de sensibilité (la spécificité suivrait une tendance similaire si nous avions également composé la population Dc de sous-populations) avec une moyenne x variable pour la population, voici un graphique
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))
- ré