Estoy tratando de separar dos grupos de valores de un solo conjunto de datos. Puedo suponer que una de las poblaciones está normalmente distribuida y tiene al menos la mitad del tamaño de la muestra. Los valores del segundo son más bajos o más altos que los valores del primero (se desconoce la distribución). Lo que intento hacer es encontrar los límites superior e inferior que encerrarían a la población normalmente distribuida de la otra.
Mi suposición me proporciona un punto de partida:
- Todos los puntos dentro del rango intercuartil de la muestra son de la población normalmente distribuida.
Estoy tratando de detectar valores atípicos tomándolos del resto de la muestra hasta que no encajen en el 3 st.dev de la población normalmente distribuida. Lo cual no es ideal, pero parece producir un resultado lo suficientemente razonable.
¿Mi suposición es estadísticamente sólida? ¿Cuál sería una mejor manera de hacer esto?
PD: arregla las etiquetas a alguien.
fuente
Respuestas:
Si entiendo correctamente, entonces solo puede ajustar una mezcla de dos normales a los datos. Hay muchos paquetes R disponibles para hacer esto. Este ejemplo usa el paquete mixtools :
Esto da:
Mezcla de dos normales http://img294.imageshack.us/img294/4213/kernal.jpg
El paquete también contiene métodos más sofisticados: consulte la documentación.
fuente
fuente
Esto supone que ni siquiera sabe si la segunda distribución es normal o no; Básicamente manejo esta incertidumbre enfocándome solo en la distribución normal. Este puede o no ser el mejor enfoque.
Si puede suponer que las dos poblaciones están completamente separadas (es decir, todos los valores de la distribución A son menores que todos los valores de la distribución B), entonces un enfoque es utilizar la función optimizar () en R para buscar el punto de ruptura que produce estimaciones de la media y la desviación estándar de la distribución normal que hacen que los datos sean más probables:
Si no puede asumir una separación completa, entonces creo que tendrá que asumir alguna distribución para la segunda distribución y luego usar el modelado de mezclas. Tenga en cuenta que el modelado de mezclas en realidad no etiquetará los puntos de datos individuales, pero le dará la proporción de la mezcla y las estimaciones de los parámetros de cada distribución (por ejemplo, media, SD, etc.).
fuente
optimize
requiere dos distribuciones para estar al lado del otro, según tengo entendido. En mi caso, uno está dentro del otro, es decir, los valores de la segunda población están a ambos lados de los límites.Me sorprende que nadie sugiera la solución obvia:
Ahora para la explicación: la
ltsReg
función en el paqueterobustbase
, cuando se llama con la opciónproduce los pesos univariados (exactos) de MCD. (estos son pesos n-vector 0-1 almacenados en el
$raw.weights
objeto. El algoritmo para identificarlos es el estimador MCD (1)).En pocas palabras, estos pesos son 1 para los miembros del subconjunto deh = ⌈ ( n + 2 ) / 2 ⌉ observaciones más concentradas.
En la dimensión uno, comienza ordenando todas las observaciones y luego calcula la medida de todos los subconjuntos contiguos deh observaciones: denotando
X( i ) el yot h entrada del vector de observaciones ordenadas, calcula la medida de ( x( 1 ), . . . , x( h + 1 )) luego ( x( 2 ), . . . , x( h + 2 ))
y así sucesivamente ...) luego retiene el que tiene una medida menor.
(p. ej.
Este algoritmo supone que su grupo de interés cuenta con una mayoría estricta de la muestra original y que tiene una distribución simétrica (pero no hay hipótesis sobre la distribución del resto)n - h observación).
fuente