A Covariância é uma medida descritiva que expressa o grau de variação conjunta entre duas variáveis aleatórias. Em outras palavras, ela mede a relação linear entre duas variáveis aleatórias.
Se a covariância entre duas variáveis é positiva, significa que elas variam juntas na mesma direção, enquanto que se a covariância é negativa, elas variam juntas em direções opostas. Se a covariância é zero, as duas variáveis são independentes uma da outra.
Origem Histórica
A ideia de covariância surgiu no final do século XIX, ligada aos trabalhos de Francis Galton (avô da estatística) e Karl Pearson , que formalizaram a correlação. Galton usou o conceito para estudar hereditariedade, analisando como características como altura se transmitiam entre gerações.
A covariância é amplamente utilizada em várias áreas, tais como: | |
---|---|
Finanças | Para avaliar o risco de um portfólio de investimentos, a covariância é utilizada para medir o grau de correlação entre as taxas de retorno de diferentes ativos. |
Ciência de dados | Em análise de dados, a covariância é frequentemente usada para entender a relação entre duas variáveis. Por exemplo, em um estudo de saúde, pode-se usar a covariância para entender a relação entre a ingestão de álcool e a pressão arterial. |
Engenharia | Em processos industriais, a covariância é usada para entender como as variáveis do processo estão relacionadas entre si. Por exemplo, pode-se usar a covariância para entender como a temperatura e a pressão de um processo estão correlacionadas. |
Biologia | A covariância é usada para entender a relação entre duas variáveis biológicas. Por exemplo, em um estudo de ecologia, pode-se usar a covariância para entender como a temperatura do ar está relacionada com a atividade de forrageamento de uma espécie de inseto. |
Psicologia | Em pesquisas psicológicas, a covariância pode ser usada para entender a relação entre duas variáveis. Por exemplo, pode-se usar a covariância para entender a relação entre a ansiedade e a depressão. |
Diferenças entre Variância, Coeficiente de Variação e Covariância
Métrica | O que mede? | Unidade | Interpretação |
---|---|---|---|
Variância | Dispersão dos dados em relação à média. | Quadrado da unidade dos dados | Quanto maior, mais dispersos os dados estão em torno da média. |
Coeficiente de Variação | Dispersão relativa (em relação à média). | Adimensional (porcentagem) | Permite comparar variabilidade entre conjuntos de dados com diferentes escalas. |
Covariância | Relação linear entre duas variáveis. | Produto das unidades das duas variáveis | Indica se duas variáveis tendem a aumentar ou diminuir juntas. |
Fórmula:
$\ \ \ \ Amostra:$
$$\large cov(x, y) = \frac{\sum_{i=1}^{n} (x_{i} – \bar{x}) \cdot (y_{i}- \bar{y})}{n-1}$$
$\ \ \ \ População:$
$$\large cov(x, y) = \frac{\sum_{i=1}^{N} (x_{i} – \mu_{x}) \cdot (y_{i}- \mu_{y})}{N}$$
Sendo:
- $\bar{x}:$ média aritmética amostral dos elementos do conjunto X
- $\mu_{x}:$ média aritmética populacional dos elementos do conjunto X
- $\bar{y}:$ média aritmética amostral dos elementos do conjunto Y
- $\mu_{y}:$ média aritmética populacional dos elementos do conjunto Y
- $n – 1:$ total de elementos da amostra
- $N:$ total de elementos da população
Python :
# Amostra
cov_xy = sum(list(map(lambda x, y: (x - mX) * (y - mY), X, Y))) / (len(X) - 1)
# População
cov_xy = sum(list(map(lambda x, y: (x - mX) * (y - mY), X, Y))) / len(X)
Julia :
# Amostra
cov_xy = sum((X .- mX) .* (Y .- mY)) / (length(X) - 1)
# População
cov_xy = sum((X .- mX) .* (Y .- mY)) / (length(X))
Libs:
Exemplo
Determine a covariância dos elementos de X e Y:
Python
''' Utilizando somente o Python '''
X = [1, 3, 2, 5, 8, 7, 12, 2, 4]
Y = [8, 6, 9, 4, 3, 3, 2, 7, 7]
mX = sum(X) / len(X) # média de X
mY = sum(Y) / len(Y) # média de Y
# Descobrindo a covariância amostral
cov_a_xy = sum(list(map(lambda x, y: (x - mX) * (y - mY), X, Y))) / (len(X) - 1)
# Descobrindo a covariância populacional
cov_p_xy = sum(list(map(lambda x, y: (x - mX) * (y - mY), X, Y))) / len(X)
# cov_a_xy: -8.069444444444445
# cov_p_xy: -7.172839506172839
''' Utilizando o Pandas '''
import pandas as pd
X = [1, 3, 2, 5, 8, 7, 12, 2, 4]
Y = [8, 6, 9, 4, 3, 3, 2, 7, 7]
# Criando o dataframe com os dados de X
df = pd.DataFrame(X, columns=['X'])
# Acrescentando uma coluna com os dados de Y
df['Y'] = Y
# Criando uma coluna com os valores de X - mX
df['X-mX'] = list(map(lambda x: x - df.X.mean(), X))
# Criando uma coluna com os valores de Y - mY
df['Y-mY'] = list(map(lambda y: y - df.Y.mean(), Y))
# Criando uma coluna com os valores de (X - mX) * (Y -mY)
df['(X-mX)x(Y-mY)'] = df['X-mX'] * df['Y-mY']
# Descobrindo a covariância amostral
cov_a_xy = sum(df['(X-mX)x(Y-mY)']) / (len(X) - 1)
# Descobrindo a covariância populacional
cov_p_xy = sum(df['(X-mX)x(Y-mY)']) / len(X)
# cov_a_xy: -8.069444444444445
# cov_p_xy: -7.172839506172839
Julia
X = [1, 3, 2, 5, 8, 7, 12, 2, 4]
Y = [8, 6, 9, 4, 3, 3, 2, 7, 7]
mX = sum(X) / length(X) # média de X
mY = sum(Y) / length(Y) # média de Y
# Descobrindo a covariância amostral
cov_a_xy = sum((X .- mX) .* (Y .- mY)) / (length(X) - 1)
# Descobrindo a covariância populacional
cov_p_xy = sum((X .- mX) .* (Y .- mY)) / (length(X))
Covariância a partir da variância
Fórmula:
$$\large cov(x, y) = \frac{s^2_{X+Y}\ -\ s^2_{X}\ -\ s^2_{Y} }{2}$$
Sendo:
- $s^2_{X+Y}:$ variância da soma dos elementos de X e Y
- $s^2_{X}:$ variância de X
- $s^2_{Y}:$ variância de Y
Python / Julia :
cov_xy = (var_xy - var_x - var_y) / 2
Exemplo
Python
''' Utilizando somente o Python '''
X = [1, 3, 2, 5, 8, 7, 12, 2, 4]
Y = [8, 6, 9, 4, 3, 3, 2, 7, 7]
''' Covariância Amostral '''
# Encontrando a media de X
mX = sum(X) / len(X)
# Encontrando a media de Y
mY = sum(Y) / len(Y)
# Encontrando a media de X + Y
mXY = sum(list(map(lambda x, y: x + y, X, Y))) / len(list(map(lambda x, y: x + y, X, Y)))
# Calculando a variância amostral de X
var_x = sum(list(map(lambda x: (x - mX)**2, X))) / (len(X) - 1)
# Calculando a variância amostral de X
var_y = sum(list(map(lambda y: (y - mY)**2, Y))) / (len(Y) - 1)
# Calculando a variância amostral de X + Y
var_xy = sum(list(map(lambda y: (y - mXY)**2, list(map(lambda x, y: x + y, X, Y))))) / (len(list(map(lambda x, y: x + y, X, Y))) - 1)
cov_a_xy = (var_xy - var_x - var_y) / 2
# cov_a_xy: -8.069444444444445
''' Covariância Populacional '''
# Encontrando a media de X
mX = sum(X) / len(X)
# Encontrando a media de Y
mY = sum(Y) / len(Y)
# Encontrando a media de X + Y
mXY = sum(list(map(lambda x, y: x + y, X, Y))) / len(list(map(lambda x, y: x + y, X, Y)))
# Calculando a variância amostral de X
var_x = sum(list(map(lambda x: (x - mX)**2, X))) / len(X)
# Calculando a variância amostral de Y
var_y = sum(list(map(lambda y: (y - mY)**2, Y))) / len(Y)
# Calculando a variância amostral de X + Y
var_xy = sum(list(map(lambda y: (y - mXY)**2, list(map(lambda x, y: x + y, X, Y))))) / len(list(map(lambda x, y: x + y, X, Y)))
#list(map(lambda x, y: x + y, X, Y))
cov_p_xy = (var_xy - var_x - var_y) / 2
# cov_p_xy: -7.172839506172839
''' Utilizando o Numpy'''
import numpy as np
''' Covariância Amostral '''
X = [1, 3, 2, 5, 8, 7, 12, 2, 4]
Y = [8, 6, 9, 4, 3, 3, 2, 7, 7]
var_xy = np.var(list(map(lambda x, y: x + y, X, Y)), ddof=1)
var_x = np.var(X, ddof=1)
var_y = np.var(Y, ddof=1)
cov_a_xy = (var_xy - var_x - var_y) / 2
''' Covariância Populacional '''
X = [1, 3, 2, 5, 8, 7, 12, 2, 4]
Y = [8, 6, 9, 4, 3, 3, 2, 7, 7]
var_xy = np.var(list(map(lambda x, y: x + y, X, Y)), ddof=0)
var_x = np.var(X, ddof=0)
var_y = np.var(Y, ddof=0)
cov_p_xy = (var_xy - var_x - var_y) / 2
# cov_a_xy: -8.069444444444445
# cov_p_xy: -7.172839506172839
Deixe um comentário