Tengo un problema para calcular el coeficiente de correlación de Pearson de los conjuntos de datos con una desviación estándar posiblemente cero (es decir, todos los datos tienen el mismo valor).
Supongamos que tengo los siguientes dos conjuntos de datos:
float x[] = {2, 2, 2, 3, 2};
float y[] = {2, 2, 2, 2, 2};
El coeficiente de correlación "r" se calcularía utilizando la siguiente ecuación:
float r = covariance(x, y) / (std_dev(x) * std_dev(y));
Sin embargo, dado que todos los datos del conjunto de datos "y" tienen el mismo valor, la desviación estándar std_dev (y) sería cero y "r" no estaría definida.
¿Hay alguna solución para este problema? ¿O debería usar otros métodos para medir la relación de datos en este caso?
correlation
Andree
fuente
fuente
Respuestas:
La "teoría del muestreo" le dirá que no existe tal estimación. Pero puede obtener uno, solo debe ser razonable con respecto a su información previa y hacer un trabajo matemático mucho más difícil.
Si especificó un método de estimación bayesiano, y el posterior es el mismo que el anterior, puede decir que los datos no dicen nada sobre el parámetro. Debido a que las cosas pueden ponerse "singulares" en nosotros, entonces no podemos usar espacios de parámetros infinitos. Supongo que debido a que usa la correlación de Pearson, tiene una probabilidad normal bivariada:
Qi=(xi-μx)2
Ahora, para indicar que un conjunto de datos puede tener el mismo valor, escriba , y luego obtenemos:yi=y
s2x=1
Y así su probabilidad depende de cuatro números, . Por lo tanto, desea una estimación de , por lo que debe multiplicar por un previo e integrar los parámetros molestos . Ahora, para preparar la integración, "completamos el cuadrado" ρ μ x , μ y , σ x , σ y ∑ i Q is2x,y,x¯¯¯,N ρ μx,μy,σx,σy
Ahora deberíamos errar por el lado de la precaución y garantizar una probabilidad normalizada adecuadamente. De esa manera no podemos meternos en problemas. Una de esas opciones es usar un previo débilmente informativo, que solo restringe el rango de cada uno. Entonces tenemos para los medios con anterior plano y para las desviaciones estándar con jeffreys anterior. Estos límites son fáciles de establecer con un poco de "sentido común" pensando en el problema. Tomaré un previo no especificado para , y así obtenemos (el uniforme debería funcionar bien, si no trunca la singularidad en ): L σ < σ x , σ y < U σ ρ ± 1Lμ<μx,μy<Uμ Lσ<σx,σy<Uσ ρ ±1
Donde . Esto da un posterior de:A=2(Uμ−Lμ)2[log(Uσ)−log(Lσ)]2
Ahora la primera integración sobre se puede hacer haciendo un cambio de variables y la primera integral sobre convierte en:μy z=N−−√μy−[y−(x¯¯¯−μx)ρσyσx]σy1−ρ2√⟹dz=N√σy1−ρ2√dμy μy
Y puede ver desde aquí que no hay soluciones analíticas posibles. Sin embargo, también vale la pena señalar que el valor no se ha eliminado de las ecuaciones. Esto significa que los datos y la información previa aún tienen algo que decir sobre la verdadera correlación. Si los datos no dicen nada sobre la correlación, entonces simplemente nos quedaríamos con como la única función de en estas ecuaciones.ρ p(ρ) ρ
También muestra cómo ese paso al límite de límites infinitos para "desecha" parte de la información sobre , que está contenida en la función CDF normal de aspecto complicado . Ahora, si tiene muchos datos, entonces pasar al límite está bien, no perderá mucho, pero si tiene información muy escasa, como en su caso, es importante mantener cada chatarra que tenga. Significa matemáticas feas, pero este ejemplo no es demasiado difícil de hacer numéricamente. Por lo tanto, podemos evaluar la probabilidad integrada de en valores de digamos bastante facilidad. Simplemente reemplace las integrales por sumas en intervalos lo suficientemente pequeños, para que tenga una suma triple ρ Φ ( . ) ρ - 0.99 , - 0.98 , … , 0.98 , 0.99μy ρ Φ(.) ρ −0.99,−0.98,…,0.98,0.99
fuente
Estoy de acuerdo con sesqu en que la correlación no está definida en este caso. Dependiendo de su tipo de aplicación, podría calcular, por ejemplo, la similitud de Gower entre ambos vectores, que es: donde representa el kronecker-delta , aplicado como función en . δv1,v2gower(v1,v2)=∑ni=1δ(v1i,v2i)n δ v1,v2
Entonces, por ejemplo, si todos los valores son iguales, gower (.,.) = 1. Si, por otro lado, difieren solo en una dimensión, gower (.,.) = 0.9. Si difieren en cada dimensión, gower (.,.) = 0 y así sucesivamente.
Por supuesto, esta no es una medida de correlación, pero le permite calcular qué tan cerca está el vector con s> 0 del que tiene s = 0. Por supuesto, también puede aplicar otras métricas, si sirven mejor a su propósito.
fuente
La correlación no está definida en ese caso. Si debe definirlo, lo definiría como 0, pero considere una diferencia absoluta media simple en su lugar.
fuente
Esta pregunta proviene de programadores, por lo que sugeriría que se conecte a cero. No hay evidencia de una correlación, y la hipótesis nula sería cero (sin correlación). Puede haber otro conocimiento del contexto que proporcione una correlación "típica" en un contexto, pero el código podría reutilizarse en otro contexto.
fuente