Contenido del Curso
Fundamentos de la Teoría de la Probabilidad
Fundamentos de la Teoría de la Probabilidad
¿Qué es la covarianza?
Covarianza es una medida numérica que cuantifica la relación entre dos variables.
Mide cómo los cambios en una variable corresponden a los cambios en otra variable. Más específicamente, la covarianza mide la variabilidad conjunta de dos variables y proporciona información sobre la dirección (positiva o negativa) de esta variabilidad.
Cálculo de la covarianza
Realizar el primer experimento estocástico varias veces y registrar los resultados de cada experimento en el arreglo
x
;Realizar el segundo experimento estocástico varias veces y registrar los resultados en el arreglo
y
;Calcular la covarianza utilizando la biblioteca
numpy
:covariance = np.cov(x, y)[0, 1]
.
Ejemplos
import numpy as np import matplotlib.pyplot as plt # Assume that results of some stochastic experiments are stored in x array x = np.random.rand(100) * 10 # We provide another stochastic experiment by using the value of x and adding some noise y = x + np.random.randn(100) # Calculate the covariance covariance = np.cov(x, y)[0, 1] plt.scatter(x, y) # Add labels and title plt.xlabel('X') plt.ylabel('Y') plt.title('Covariance is '+ str(round(covariance, 3) )) # Show the plot plt.show()
Observamos que a medida que el valor de x
aumenta, el valor de y
también aumenta. Por lo tanto, la correlación es positiva. Presentemos otro experimento:
import numpy as np import matplotlib.pyplot as plt # Assume that resylts of some stohastic experiments are stored in x array x = np.random.rand(100) * 10 # We provide another stohastic experiment by using the value of -x and adding some noise y = -x + np.random.randn(100) # Calculate the covariance covariance = np.cov(x, y)[0, 1] plt.scatter(x, y) # Add labels and title plt.xlabel('X') plt.ylabel('Y') plt.title('Covariance is '+ str(round(covariance, 3) )) # Show the plot plt.show()
Ahora, mientras el valor de x
aumenta, el valor de y
disminuye y la covarianza es negativa. Ahora observemos la covariación entre los resultados de dos experimentos independientes:
import numpy as np import matplotlib.pyplot as plt # Generate random data for two variables with zero correlation np.random.seed(0) x = np.random.rand(200) y = np.random.rand(200) # Calculate the covariance covariance = np.cov(x, y)[0, 1] plt.scatter(x, y) # Add labels and title plt.xlabel('X') plt.ylabel('Y') plt.title('Covariance is '+ str(round(covariance, 3) )) # Show the plot plt.show()
Como resultado, podemos hacer una conclusión:
Si la covarianza entre dos valores es positiva, entonces al aumentar el primer valor, el segundo valor también aumenta;
Si la covarianza entre dos valores es negativa, entonces al aumentar el primer valor, el segundo valor disminuye;
Si los valores son independientes, entonces tienen correlación cero (son no correlacionados).
Presta atención al último punto: la correlación es cero si los valores son independientes. Pero el inverso no es cierto: si la correlación es cero, esto no significa independencia. Observa el siguiente ejemplo:
import numpy as np import matplotlib.pyplot as plt # Set the number of vectors/points to generate num_points = 1000 # Generate random angles uniformly distributed between 0 and 2*pi angles = np.random.uniform(0, 2*np.pi, num_points) # Convert angles to vectors in polar coordinates r = np.sqrt(np.random.uniform(0, 1, num_points)) # Square root to achieve uniform distribution within the circle x = r * np.cos(angles) y = r * np.sin(angles) # Calculate the covariance covariance = np.cov(x, y)[0, 1] plt.scatter(x, y) # Add labels and title plt.xlabel('X') plt.ylabel('Y') plt.title('Covariance is '+ str(round(covariance, 3) )) # Show the plot plt.show()
Los puntos en el ejemplo anterior se encuentran dentro del círculo unitario y, por lo tanto, son dependientes pero no correlacionados.
En general, solo las relaciones lineales entre valores pueden identificarse bien con la ayuda de la covarianza. Así, en el caso de valores no correlacionados, podemos concluir que no tienen dependencias lineales, pero pueden tener otros tipos de dependencias más complejas.
¡Gracias por tus comentarios!