A pesar de que en clase se vio cómo se puede calcular estos dos valores (coeficiente de correlación y angulo entre dos vectores), dejo un código bien comentado como en Python se pueden calcular
import numpy as np
"""
El coeficiente de correlación viene dado por:
(â.T)b̂
-----------
||â||.||b̂||
donde â y b̂ son
â = a - mean(a)*1
b̂ = b - mean(b)*1
Donde â.T es la transpuesta de â
"""defcalculo_coeficiente_correlacion(a,b):"""
Calcula el coeficiente de correlación dados
dos vectores a y b.
Esta función recibe "a" y "b" como listas
"""#Crea los array a y b a partir de las listas#Esto, con el fin de hacer operaciones entre vectores
array_a = np.array(a)
array_b = np.array(b)
#calcula los promedios de los vectores a y b
promedio_a = np.mean(a)
promedio_b = np.mean(b)
#Calcula las distancias de cada dato puntual respecto a su media
distancia_a = a-promedio_a*np.array([1]*len(a))
distancia_b = b-promedio_b*np.array([1]*len(b))
#Calcula el producto punto entre estas dos distancias#Que viene siendo el numerador de la ecuación de coeficientes de correlacion
numerador = np.dot(distancia_a,distancia_b)
#Calcula la norma de â y b̂#Construcción del denominador
norma_a = np.linalg.norm(distancia_a)
norma_b = np.linalg.norm(distancia_b)
denominador = norma_a*norma_b
#Calculo del coeficiente de correlación
coef_corr = numerador/denominador
return coef_corr
"""
El angulo entre dos vectores está dado por la siguiente fórmula:
(a)(b)
Cos (theta) = ---------
||a||.||b||
"""defangulo(a,b):
a = np.array(a)
b = np.array(b)
#Calcula la norma de a y b
norma_a = np.linalg.norm(a)
norma_b = np.linalg.norm(b)
resultado = np.dot(a,b) / (norma_a*norma_b)
#despejando theta:
angulo = np.rad2deg(np.arccos(resultado))
return angulo
if __name__ == '__main__':
a = [ 1, 2, 3, 4, 5]
b = [-6, -7, -8, -9, -10]
resultado = calculo_coeficiente_correlacion(a,b)
print(f'El coeficiente de correlación es: {resultado}')
c = [1,0]
d = [-1,0]
#De antemano sabemos que el ángulo será 180°
angulo = angulo(c,d)
print(f'EL angulo entre c y d (en grados) es: {angulo}')
muchas gracias
Excelente, muchas gracias!!