Tengo un conjunto de puntos de datos que se supone que se sientan en un lugar y siguen un patrón, pero hay algunos puntos de dispersión del lugar principal que causan incertidumbre en mi análisis final. Me gustaría obtener un lugar limpio para aplicarlo más tarde para mi análisis. Los puntos azules son más o menos los puntos de dispersión que quiero encontrar y los excluyen de una manera sofisticada sin hacerlo manualmente.
Estaba pensando en usar algo como Regresión de vecinos más cercanos, pero no estoy seguro de si es el mejor enfoque o no estoy muy familiarizado sobre cómo debería implementarse para obtener un resultado adecuado. Por cierto, quiero hacerlo sin ningún procedimiento de adaptación.
La versión transpuesta de los datos es la siguiente:
X=array([[ 0.87 , -0.01 , 0.575, 1.212, 0.382, 0.418, -0.01 , 0.474,
0.432, 0.702, 0.574, 0.45 , 0.334, 0.565, 0.414, 0.873,
0.381, 1.103, 0.848, 0.503, 0.27 , 0.416, 0.939, 1.211,
1.106, 0.321, 0.709, 0.744, 0.309, 0.247, 0.47 , -0.107,
0.925, 1.127, 0.833, 0.963, 0.385, 0.572, 0.437, 0.577,
0.461, 0.474, 1.046, 0.892, 0.313, 1.009, 1.048, 0.349,
1.189, 0.302, 0.278, 0.629, 0.36 , 1.188, 0.273, 0.191,
-0.068, 0.95 , 1.044, 0.776, 0.726, 1.035, 0.817, 0.55 ,
0.387, 0.476, 0.473, 0.863, 0.252, 0.664, 0.365, 0.244,
0.238, 1.203, 0.339, 0.528, 0.326, 0.347, 0.385, 1.139,
0.748, 0.879, 0.324, 0.265, 0.328, 0.815, 0.38 , 0.884,
0.571, 0.416, 0.485, 0.683, 0.496, 0.488, 1.204, 1.18 ,
0.465, 0.34 , 0.335, 0.447, 0.28 , 1.02 , 0.519, 0.335,
1.037, 1.126, 0.323, 0.452, 0.201, 0.321, 0.285, 0.587,
0.292, 0.228, 0.303, 0.844, 0.229, 1.077, 0.864, 0.515,
0.071, 0.346, 0.255, 0.88 , 0.24 , 0.533, 0.725, 0.339,
0.546, 0.841, 0.43 , 0.568, 0.311, 0.401, 0.212, 0.691,
0.565, 0.292, 0.295, 0.587, 0.545, 0.817, 0.324, 0.456,
0.267, 0.226, 0.262, 0.338, 1.124, 0.373, 0.814, 1.241,
0.661, 0.229, 0.416, 1.103, 0.226, 1.168, 0.616, 0.593,
0.803, 1.124, 0.06 , 0.573, 0.664, 0.882, 0.286, 0.139,
1.095, 1.112, 1.167, 0.589, 0.3 , 0.578, 0.727, 0.252,
0.174, 0.317, 0.427, 1.184, 0.397, 0.43 , 0.229, 0.261,
0.632, 0.938, 0.576, 0.37 , 0.497, 0.54 , 0.306, 0.315,
0.335, 0.24 , 0.344, 0.93 , 0.134, 0.4 , 0.223, 1.224,
1.187, 1.031, 0.25 , 0.53 , -0.147, 0.087, 0.374, 0.496,
0.441, 0.884, 0.971, 0.749, 0.432, 0.582, 0.198, 0.615,
1.146, 0.475, 0.595, 0.304, 0.416, 0.645, 0.281, 0.576,
1.139, 0.316, 0.892, 0.648, 0.826, 0.299, 0.381, 0.926,
0.606],
[-0.154, -0.392, -0.262, 0.214, -0.403, -0.363, -0.461, -0.326,
-0.349, -0.21 , -0.286, -0.358, -0.436, -0.297, -0.394, -0.166,
-0.389, 0.029, -0.124, -0.335, -0.419, -0.373, -0.121, 0.358,
0.042, -0.408, -0.189, -0.213, -0.418, -0.479, -0.303, -0.645,
-0.153, 0.098, -0.171, -0.066, -0.368, -0.273, -0.329, -0.295,
-0.362, -0.305, -0.052, -0.171, -0.406, -0.102, 0.011, -0.375,
0.126, -0.411, -0.42 , -0.27 , -0.407, 0.144, -0.419, -0.465,
-0.036, -0.099, 0.007, -0.167, -0.205, -0.011, -0.151, -0.267,
-0.368, -0.342, -0.299, -0.143, -0.42 , -0.232, -0.368, -0.417,
-0.432, 0.171, -0.388, -0.319, -0.407, -0.379, -0.353, 0.043,
-0.211, -0.14 , -0.373, -0.431, -0.383, -0.142, -0.345, -0.144,
-0.302, -0.38 , -0.337, -0.2 , -0.321, -0.269, 0.406, 0.223,
-0.322, -0.395, -0.379, -0.324, -0.424, 0.01 , -0.298, -0.386,
0.018, 0.157, -0.384, -0.327, -0.442, -0.388, -0.387, -0.272,
-0.397, -0.415, -0.388, -0.106, -0.504, 0.034, -0.153, -0.32 ,
-0.271, -0.417, -0.417, -0.136, -0.447, -0.279, -0.225, -0.372,
-0.316, -0.161, -0.331, -0.261, -0.409, -0.338, -0.437, -0.242,
-0.328, -0.403, -0.433, -0.274, -0.331, -0.163, -0.361, -0.298,
-0.392, -0.447, -0.429, -0.388, 0.11 , -0.348, -0.174, 0.244,
-0.182, -0.424, -0.319, 0.088, -0.547, 0.189, -0.216, -0.228,
-0.17 , 0.125, -0.073, -0.266, -0.234, -0.108, -0.395, -0.395,
0.131, 0.074, 0.514, -0.235, -0.389, -0.288, -0.22 , -0.416,
-0.777, -0.358, -0.31 , 0.817, -0.363, -0.328, -0.424, -0.416,
-0.248, -0.093, -0.28 , -0.357, -0.348, -0.298, -0.384, -0.394,
-0.362, -0.415, -0.349, -0.08 , -0.572, -0.07 , -0.423, 0.359,
0.4 , 0.099, -0.426, -0.252, -0.697, -0.508, -0.348, -0.254,
-0.307, -0.116, -0.029, -0.201, -0.302, -0.25 , -0.44 , -0.233,
0.274, -0.295, -0.223, -0.398, -0.298, -0.209, -0.389, -0.247,
0.225, -0.395, -0.124, -0.237, -0.104, -0.361, -0.335, -0.083,
-0.254]])
fuente
x
yy
y les determinada. Pero tengo muchos de este tipo de gráficos con diferentes características y diferentes puntos de dispersión y quiero encontrar una forma confiable de excluirlos sin definirlos mirando los diagramas.Respuestas:
Para comenzar a identificar los puntos "dispersos", considere centrarse en lugares donde la estimación de la densidad del núcleo es relativamente baja.
Esta sugerencia supone que poco o nada se sabe o se sospecha inicialmente sobre el "lugar" de los puntos, la curva o las curvas a lo largo de las cuales caerán la mayoría de ellos, y se hace con el espíritu de exploración semiautomática de los datos. (en lugar de probar hipótesis).
Es posible que deba jugar con el ancho del núcleo y el umbral de "relativamente bajo". Existen buenas formas automáticas para estimar el primero, mientras que el segundo podría identificarse mediante un análisis de las densidades en los puntos de datos (para identificar un grupo de valores bajos).
Ejemplo
La figura genera una combinación de dos tipos de datos: uno, que se muestra como puntos rojos, son datos de alta precisión, mientras que el otro, que se muestra como puntos azules, son datos de precisión relativamente baja obtenidos cerca del valor extremadamente bajo deX . En su fondo se encuentran (a) contornos de una estimación de densidad de grano (en escala de grises) y (b) la curva alrededor de la cual se generaron los puntos (en negro).
Los puntos con densidades relativamente bajas se han marcado automáticamente . (Las densidades en estos puntos son menos de un octavo de la densidad media entre todos los puntos). Incluyen la mayoría, pero no todos, de los puntos de baja precisión y algunos de los puntos de alta precisión (en la parte superior Correcto). Los puntos de baja precisión que se encuentran cerca de la curva (como extrapolados por los puntos de alta precisión) no se han marcado. El círculo de los puntos de alta precisión resalta el hecho de que donde sea que los puntos sean escasos, la traza de la curva subyacente será incierta. ¡Esta es una característica del enfoque sugerido, no una limitación!
Código
R
El código para producir este ejemplo sigue. Utiliza laks
biblioteca, que evalúa la anisotropía en el patrón de puntos para desarrollar una forma de núcleo orientada. Este enfoque funciona bien en los datos de muestra, cuya nube de puntos tiende a ser larga y delgada.fuente
kde
) para identificar los puntos que se deben marcar. Si no hubiera simulado los datos de una forma funcional conocida (como se indica enf
), no habría podido dibujar ninguna curva de referencia, ya que no se realizó ningún ajuste.f(x)
.