Aunque las respuestas de @ Tim ♦ y @ gung ♦ cubren casi todo, intentaré sintetizarlas en una sola y proporcionar más aclaraciones.
El contexto de las líneas citadas podría referirse principalmente a pruebas clínicas en forma de cierto Umbral, como es más común. Imagine una enfermedad , y todo excepto D, incluido el estado saludable conocido como D c . Nosotros, para nuestra prueba, quisiéramos encontrar alguna medida de proxy que nos permita obtener una buena predicción para DDDDcD (1) La razón por la que no obtenemos especificidad / sensibilidad absoluta es que los valores de nuestra cantidad de proxy no se correlacionan perfectamente con el estado de la enfermedad, pero generalmente solo se asocia con él y, por lo tanto, en mediciones individuales, podríamos tener la posibilidad de que esa cantidad cruce nuestro umbral para Dcindividuos y viceversa. En aras de la claridad, supongamos un modelo gaussiano para la variabilidad.
Digamos que estamos usando como la cantidad de proxy. Si x se ha elegido bien, entonces E [ x D ] debe ser mayor que E [ x D c ] ( E es el operador del valor esperado). Ahora el problema surge cuando nos damos cuenta de que D es una situación compuesta (también lo es D c ), en realidad hecha de 3 grados de severidad D 1 , D 2 , D 3 , cada uno con un valor esperado progresivamente creciente para laxxE[xD]E[xDc]EDDcD1D2D3 . Para un solo individuo, seleccionado entrex categoría D o de lacategoría D c , las probabilidades de que la 'prueba' sea positiva o no dependerá del valor umbral que elijamos. Digamos que elegimos x T en base al estudio de una muestra verdaderamente aleatoria que tieneindividuos D y D c . Nuestra x T causará algunos falsos positivos y negativos. Si seleccionamos unapersona D al azar, la probabilidad que gobierna suvalor x es dada por el gráfico verde, y la de unapersona D c elegida al azarpor el gráfico rojo.DDcxTDDcxTDxDc
Los números reales obtenidos dependerán de los números reales de individuos y D c, pero la especificidad y sensibilidad resultantes no lo harán. Deje F ( ) ser una función de probabilidad acumulativa. Luego, para la prevalencia de p de la enfermedad D , aquí hay una tabla de 2x2 como se esperaría del caso general, cuando tratamos de ver realmente cómo funciona nuestra prueba en la población combinada.DDcF()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 ( Fre( xT) )
( D c , + ) = ( 1 - p ) ∗ FD c( xT)
Los números reales dependen de , pero la sensibilidad y la especificidad son independientes de p . Pero, ambos dependen de F D y F D c . Por lo tanto, todos los factores que los afectan cambiarán definitivamente estas métricas. Si estuviéramos, por ejemplo, trabajando en la UCI, nuestra F D sería reemplazada por F D 3 , y si estuviéramos hablando de pacientes ambulatorios, reemplazada por F D 1 . Es un asunto separado que en el hospital, la prevalencia también es diferente,pagpagFreFD cFreFD 3FD 1pero no es la diferente prevalencia lo que hace que las sensibilidades y especificidades difieran, sino la distribución diferente, ya que el modelo en el que se definió el umbral no era aplicable a la población que aparecía como pacientes ambulatorios o pacientes hospitalizados . Puede seguir adelante y desglosar en múltiples subpoblaciones, ya que la subparte de internación de D c también tendrá una x elevada debido a otras razones (ya que la mayoría de los servidores proxy también están 'elevados' en otras condiciones graves). La ruptura de la población D en subpoblación explica el cambio en la sensibilidad, mientras que el de la población D c explica el cambio en la especificidad (por los cambios correspondientes enreCreCXrereC y F D cFreFD cEsto es de lo que realmente se compone el gráfico compuesto. Cada uno de los colores tendrá su propia F y, por lo tanto, siempre que esto difiera de la F en la que se calcularon la sensibilidad y especificidad originales, estas métricas cambiarán.reFF
Ejemplo
Suponga una población de 11550 con 10000 Dc, 500,750,300 D1, D2, D3 respectivamente. La parte comentada es el código utilizado para los gráficos anteriores.
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')
Podemos calcular fácilmente las medias x para las diversas poblaciones, incluidas Dc, D1, D2, D3 y el compuesto 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
Para obtener una tabla de 2x2 para nuestro caso de prueba original, primero establecemos un umbral, basado en los datos (que en un caso real se establecería después de ejecutar la prueba como muestra @gung). De todos modos, suponiendo un umbral de 13.5, obtenemos la siguiente sensibilidad y especificidad cuando se calcula en toda la población.
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
Supongamos que estamos trabajando con los pacientes ambulatorios y que solo tenemos pacientes enfermos de la proporción D1, o que estamos trabajando en la UCI donde solo recibimos D3. (para un caso más general, también necesitamos dividir el componente Dc) ¿Cómo cambian nuestra sensibilidad y especificidad? Al cambiar la prevalencia (es decir, al cambiar la proporción relativa de pacientes que pertenecen a cualquier caso, no cambiamos la especificidad y la sensibilidad en absoluto. Simplemente sucede que esta prevalencia también cambia con la distribución cambiante)
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
Para resumir, una gráfica para mostrar el cambio de sensibilidad (la especificidad seguiría una tendencia similar si también hubiéramos compuesto la población Dc a partir de subpoblaciones) con media variable x para la población, aquí hay un gráfico
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))
- re