Imagine que tiene un polígono definido por un conjunto de coordenadas y su centro de masa está en . Puede tratar el polígono como una distribución uniforme con un límite poligonal.
Busco un método que encuentre la matriz de covarianza de un polígono .
Sospecho que la matriz de covarianza de un polígono está estrechamente relacionada con el segundo momento de área , pero no sé si son equivalentes. Las fórmulas que se encuentran en el artículo de Wikipedia que vinculé parecen (una suposición aquí, no me resulta especialmente claro en el artículo) referirse a la inercia rotacional alrededor de los ejes x, y y z en lugar de los ejes principales del polígono.
(Por cierto, si alguien me puede indicar cómo calcular los ejes principales de un polígono, eso también me sería útil)
Es tentador simplemente realizar PCA en las coordenadas , pero al hacerlo se encuentra con el problema de que las coordenadas no están necesariamente distribuidas uniformemente alrededor del polígono y, por lo tanto, no son representativas de la densidad del polígono. Un ejemplo extremo es el contorno de Dakota del Norte, cuyo polígono se define por una gran cantidad de puntos que siguen al río Rojo, más solo dos puntos más que definen el borde occidental del estado.
fuente
Respuestas:
Hagamos un análisis primero.
Suponga que dentro del polígono su densidad de probabilidad es la función proporcional Entonces la constante de proporcionalidad es la inversa de la integral de sobre el polígono,P p(x,y). p
El baricentro del polígono es el punto de coordenadas promedio, calculado como sus primeros momentos. El primero es
El tensor inercial se puede representar como la matriz simétrica de segundos momentos calculados después de traducir el polígono para colocar su baricentro en el origen: es decir, la matriz de segundos momentos centrales
donde van de a a El tensor en sí, también conocido como matriz de covarianza, es(k,l) (2,0) (1,1) (0,2).
Un PCA de produce los ejes principales de estos son los vectores propios unitarios escalados por sus valores propios.I(P) P:
A continuación, veamos cómo hacer los cálculos. Debido a que el polígono se presenta como una secuencia de vértices que describe su límite orientado es natural invocar∂P,
Por ejemplo, con y densidad constante ( es decir , uniforme) podemos (por inspección) seleccionar uno de los muchos soluciones, comodω=xkyldxdy p, ω(x,y)=−1l+1xkyl+1dx.
El punto de esto es que la integral de contorno sigue los segmentos de línea determinados por la secuencia de vértices. Cualquier segmento de línea desde el vértice al vértice puede parametrizarse mediante una variable real en la formau v t
donde es la dirección normal de la unidad de aPor lo tanto, los valores de varían de a Bajo esta parametrización, e son funciones lineales de y y son funciones lineales de Por lo tanto, el integrando de la integral de contorno sobre cada borde se convierte en una función polinómica de que se evalúa fácilmente para los pequeños yw∝v−u u v. t 0 |v−u|. x y t dx dy dt. t, k l.
Implementar este análisis es tan sencillo como codificar sus componentes. En el nivel más bajo necesitaremos una función para integrar un polinomio de una forma sobre un segmento de línea. Las funciones de nivel superior los agregarán para calcular los momentos sin procesar y centrales para obtener el baricentro y el tensor inercial, y finalmente podemos operar en ese tensor para encontrar los ejes principales (que son sus vectores propios escalados). El
R
siguiente código realiza este trabajo. No tiene pretensiones de eficiencia: solo pretende ilustrar la aplicación práctica del análisis anterior. Cada función es sencilla y las convenciones de denominación son paralelas a las del análisis.Se incluye en el código un procedimiento para generar polígonos cerrados, simplemente conectados, no auto-intersectantes (deformando al azar los puntos a lo largo de un círculo e incluyendo el vértice inicial como su punto final para crear un bucle cerrado). A continuación se presentan algunas declaraciones para trazar el polígono, mostrar sus vértices, unir el baricentro y trazar los ejes principales en rojo (el más grande) y azul (el más pequeño), creando un sistema de coordenadas centrado positivamente centrado en el polígono.
fuente
Editar: No noté que Whuber ya había respondido. Dejaré esto como un ejemplo de otro enfoque (quizás menos elegante) del problema.
La matriz de covarianza
Deje que sea un punto al azar de la distribución uniforme en un polígono con zona . La matriz de covarianza es:(X,Y) P A
donde es la varianza de , es la varianza de , y es la covarianza entre y . Esto supone una media cero, ya que el centro de masa del polígono se encuentra en el origen. La distribución uniforme asigna densidad de probabilidad constante a cada punto en , entonces:CXX=E[X2] X CYY=E[Y2] Y CXY=E[XY] X Y 1A P
Triangulación
En lugar de intentar integrar directamente sobre una región complicada como , podemos simplificar el problema dividiendo en subregiones triangulares:P P n
En su ejemplo, una posible partición se ve así:
Hay varias formas de producir una triangulación (ver aquí ). Por ejemplo, podría calcular la triangulación de Delaunay de los vértices, luego descartar los bordes que quedan fuera de (ya que puede no ser convexo como en el ejemplo).P
Las integrales sobre se pueden dividir en sumas de integrales sobre los triángulos:P
Un triángulo tiene límites agradables y simples, por lo que estas integrales son más fáciles de evaluar.
Integrando sobre triángulos
Hay varias formas de integrarse sobre triángulos. En este caso, utilicé un truco que implica mapear un triángulo al cuadrado de la unidad. La transformación a coordenadas barcéntricas podría ser una mejor opción.
Aquí hay soluciones para las integrales anteriores, para un triángulo arbitrario definido por vértices . Dejar:T (x1,y1),(x2,y2),(x3,y3)
Entonces:
Poniendo todo junto
Supongamos que y contienen las coordenadas x / y de los vértices de cada triángulo , como se anteriormente. Enchufe en para cada triángulo, observando que los términos del área se cancelan. Esto da la solución:vix viy Ti (3) (2)
Ejes principales
Los ejes principales están dados por los vectores propios de la matriz de covarianza , al igual que en PCA. A diferencia de PCA, tenemos una expresión analítica para , en lugar de tener que estimarla a partir de puntos de datos muestreados. Tenga en cuenta que los vértices en sí no son una muestra representativa de la distribución uniforme en , por lo que uno no puede simplemente tomar la matriz de covarianza de la muestra de los vértices. Pero, * es * una función relativamente simple de los vértices, como se ve en .C C P C (4)
fuente