Conteúdo do Curso
Fundamentos da Teoria das Probabilidades
Fundamentos da Teoria das Probabilidades
O Que É Covariância?
Covariância é uma medida numérica que quantifica a relação entre duas variáveis.
Ela mede como as mudanças em uma variável correspondem às mudanças em outra variável. Mais especificamente, a covariância mede a variabilidade conjunta de duas variáveis e fornece informações sobre a direção (positiva ou negativa) dessa variabilidade.
Cálculo da covariância
Realizar o primeiro experimento estocástico várias vezes e registrar os resultados de cada experimento no array
x
;Realizar o segundo experimento estocástico várias vezes e registrar os resultados no array
y
;Calcular a covariância utilizando a biblioteca
numpy
:covariance = np.cov(x, y)[0, 1]
.
Exemplos
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()
Observa-se que, à medida que o valor de x
aumenta, o valor de y
também aumenta. A correlação, portanto, é positiva. Vamos apresentar outro 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()
Agora, enquanto o valor de x
aumenta, o valor de y
diminui e a covariância é negativa. Agora, vamos analisar a covariação entre os resultados de dois experimentos independentes:
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 fazer a conclusão:
Se a covariância entre dois valores é positiva, então com o aumento do primeiro valor o segundo valor também aumenta;
Se a covariância entre dois valores é negativa, então com o aumento do primeiro valor o segundo valor diminui;
Se os valores são independentes, então eles têm correlação zero (são não correlacionados).
Atenção ao último ponto: a correlação é zero se os valores forem independentes. Mas o inverso não é verdadeiro: se a correlação é zero, isso não significa independência. Veja o exemplo:
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()
Os pontos no exemplo acima estão dentro do círculo unitário e, portanto, são dependentes, mas não correlacionados.
Em geral, apenas relações lineares entre valores podem ser bem identificadas com a ajuda da covariância. Assim, no caso de valores não correlacionados, podemos concluir que eles não possuem dependências lineares, mas podem apresentar outros tipos de dependências mais complexas.
Obrigado pelo seu feedback!