4 votos

La identificación de los sujetos concretos de los valores atípicos en la presencia de entre el sujeto de la heterogeneidad

Tengo un simple conjunto de datos de las personas a las alturas, muchas personas con las mediciones en varios días (una vez al año durante 10 años, por ejemplo). Tengo la fecha de cada medición.

Algunos de los valores de altura, son absurdas. Yo ya caída de los valores que son "imposibles" (por ejemplo, los valores de altura por encima de 3m). Sin embargo, me gustaría identificar valores inusuales dentro de un paciente. Si un paciente tiene 5 registros en alrededor de 1.8 m, me gustaría una bandera roja si hay un valor de 2.1 m

Estoy pensando en probar la prueba de ESD para los valores atípicos - parece fácil de implementar - pero pensé en preguntarle si hay mejores ideas antes de empezar.

Gracias.

EDITAR:

La prueba de ESD que me refiero es el [[Generalizada] 'Extrema Studentized Desviarse'][1]; prueba similar a la Prueba de Grubbs, 'se utiliza para detectar uno o más valores atípicos en un univariante conjunto de datos sigue una distribución aproximadamente normal'.

Voy a tener mediciones para más de 100.000 personas - sin embargo, cada persona sólo tiene entre 0 y alrededor de 20 mediciones.

Estoy esperando a generalizar esto a otras medidas, como el IMC, las pruebas de laboratorio (Eosinófilos, los Recuentos de glóbulos Blancos), pruebas respiratorias (FEV1), etc. Sospecho que éste va a ser difícil porque es más variada, subiendo y bajando con poca dependencia en el tiempo - de ahí mi partida con la altura!

1voto

fcop Puntos 2891

Creo que va a tener que echar un vistazo a los efectos aleatorios (ver ¿Cómo dar cuenta de los participantes en un estudio de diseño?).

La idea es que usted tiene, para un número de personas $N$, un número de mediciones de la altura en los distintos años $y$, lo $h_{iy},i=1, 2 \dots, N, y=1, 2, \dots 10$. Cada una de las $h_{iy}$ depende de la altura en el primer año (que depende de la persona $i$) y aumenta con los años (la tasa de aumento también puede depender de la persona $i$), por lo que tiene algo como $h_{iy} = \beta_{1i} + \beta_{2i} y + \epsilon$, donde los coeficientes $\beta_{1i}, \beta_{2i}$ depende de la persona (de ahí el índice $i$), pero si se puede estimar esta ecuación, entonces usted tiene una línea de regresión para cada persona y se puede ver, para que una sola persona, que los puntos están 'muy lejos' de ese individuo, de la propia persona recta de regresión.

Un libro de referencia es Fitzmaurice, Laird, Vajilla, "Aplicado análisis longitudinal", donde se pueden encontrar todos los detalles, así que me limitaré a explicar las principales líneas de razonamiento:

Se supone que el $\beta_{1i}$ $\beta_{2i}$ están distribuidos normalmente con una media de $\beta_1$ (resp. $\beta_2$) y una desviación estándar $\sigma_1$ (resp. $\sigma_2$) (de modo que la suposición es que la altura en el primer año están normalmente distribuidas, así como las tasas de crecimiento). Por lo que podemos re-escribir $\beta_{ki}$ $\beta_{ki}=\beta_k + b_{kj}$ donde $\beta_k$ es la media de todos los $\beta_{ki}$$b_{ki} \sim N(0;\sigma_i), k=1,2$.

Por lo que su regresión se convierte en $h_{iy}=\beta_1+b_{1i} + (\beta_2+b_{2i})y+\epsilon$, este es el formulario que se encuentra en la referencia Fitzmaurice et al.

el $b_{ki}$ se llama el de efectos aleatorios. El $\beta_{k}$ son los efectos fijos.

Para ilustrar esto me deja usar algunos datos simulados:

# this is just for simuating data, you have the data, the simulation generates heights
# for N=500 people for 10 years. 

library(reshape2)

# simulation for 500 persons
N<-500

#simulate the heights in the first year, mean 1.7, sd 0.2, 
# generate a random number of each of the N persons
h0<-rnorm(n=N, mean=1.7, sd=0.2)

#generate a random growth rate for each of the N persons
ch1<-rnorm(n=N, mean=0.01, sd=0.01)


# simulate h_iy:  the height in the first year + (annual growth x year) + error term
h<-h0 + ch1 %*% t(1:10) + rnorm(n=N, mean=0, sd=0.02)

# reformat it a bit so that it is useable later on
colnames(h)<-1:10
df<-cbind( data.frame(subject=1:nrow(h)), 
           as.data.frame(h) )

df.molten<-melt(data=df, id.vars="subject", value.name="height", variable.name="year")
df.molten$year<-as.numeric(df.molten$year)

Después de la simulación de los datos, ahora vamos a estimar la mencionada ecuación como un modelo lineal de efectos mixtos (con el paquete nlme en R):

library(nlme)
library(ggplot2)

lme.h<-lme(height  ~ year + 1,       # we estimate height as function of year
           data=df.molten,           # on the simulated data
           random= ~ 1 + year | subject,  # we use a random effect on the intercept and on the coeffcient of year
           control=lmeControl(opt="optim"),
           method="REML")

Los valores que se estiman para que sus datos pueden ser encontrado con las siguientes llamadas:

lme.fix<-fixed.effects(lme.h)
lme.blup<-random.effects(lme.h)

El primero de ellos te los efectos fijos $\beta_k$ (se les compara con los valores utilizados en la simulación), el segundo le da la mejor linear unbiased prediction (blup) de los efectos aleatorios para cada persona de su conjunto de datos.

Compare ahora el estimado de efectos fijos + el blup predictores de los efectos aleatorios " para cada persona a su entrada (en este caso simulado) de datos, en primer lugar para la intersección:

df.plot<-data.frame(sim=h0, estim=lme.blup[[1]]+lme.fix[1])

ggplot(df.plot, aes(x=sim,y=estim))+
  coord_fixed()+
  geom_abline(intercept=0, slope=1, colour="red")+
  geom_point()

No puedo subir las parcelas de aquí, pero si se ejecuta el código, a continuación, obtendrá un gráfico con el eje horizontal la simulación inicial (es decir, en el primer año) las alturas y en el eje vertical el estimado/valores previstos para cada persona en el primer año, la línea roja es la bisectriz.

Similar, pero para el coeficiente del año:

df.plot<-data.frame(sim=ch1, estim=lme.blup[[2]]+lme.fix[2])

ggplot(df.plot, aes(x=sim,y=estim))+
  coord_fixed()+
  geom_abline(intercept=0, slope=1, colour="red")+
  geom_point()

Con estos resultados tienen una línea de regresión para cada inidivual persona, también se puede estimar la varianza alrededor de la línea y, a continuación, encontrar "outliers" para cada persona. Para más detalles me refiero a Fitzmaurice et al.

así, por persona $i$ usted se encuentra en la línea de regresión $h_{iy}=\hat{\beta}_1+\hat{b}_{1i} + (\hat{\beta}_2+\hat{b}_{2i})y$ donde $\hat{\beta}_1$ lme.fix[1], $\hat{b}_{1i}$ lme.blup[[1]][i] y $\hat{\beta}_2$ lme.fix[2], $\hat{b}_{2i}$ lme.blup[[2]][i]

Para más detalles sobre el paquete nlme puede utilizar este pdf

0voto

JW. Puntos 386

Puesto que usted tiene una medida que es muy conocido, ¿por qué no definir la desviación en base a su conocimiento de la tecnología de medición en lugar de utilizar una medida estadística de la desviación. Por ejemplo, si usted tiene experiencia en hacer mediciones de la altura y saber fácilmente la altura se puede medir con precisión, para que dentro de 1" (.05 m), entonces usted puede simplemente descartar todas las medidas con mayor desviación de 1" a pesar de las fallas. El análisis estadístico se trata de encontrar un significado a los datos. Si usted tiene una definición de una desviación de medida basado en la lógica de la evaluación de los límites de la medición de la altura de la tecnología, ¿por qué buscar para el análisis estadístico para una medida de la desviación?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X