Python 定义函数以返回样本协方差
我有两个向量,我试图在函数中使用它们来返回样本协方差。 有人能帮我修改程序吗?一般来说,我对python和编程都是新手Python 定义函数以返回样本协方差,python,Python,我有两个向量,我试图在函数中使用它们来返回样本协方差。 有人能帮我修改程序吗?一般来说,我对python和编程都是新手 xv= array([8., 9.5, 7.8, 4.2, -7.7, -5.4, 3.2]) yv= array([8.9, 2.0, 4.8, -4.2, 2.7, -3.4, -5.9]) def cov(x,y): if (len(x) != len(y) [Stop] x.bar = mean(x) y.b
xv= array([8., 9.5, 7.8, 4.2, -7.7, -5.4, 3.2])
yv= array([8.9, 2.0, 4.8, -4.2, 2.7, -3.4, -5.9])
def cov(x,y):
if (len(x) != len(y)
[Stop]
x.bar = mean(x)
y.bar = mean(y)
N = len(x)
Cov = (sum((x-x.bar)*(y-y.bar))) / (N-1.0)
return(Cov)
您可以尝试查看广泛使用的
numpy
包,了解协方差等操作:
这是我的版本,没有使用外部库。协方差方程来自维基百科:
我以这种方式重写了函数:
def cov(x,y):
if (len(x) != len(y)):
sys.exit()
x_bar = float(sum(x)/len(x))
y_bar = float(sum(y)/len(y))
N = len(x)
sum_xy = 0
for i in range(len(x)):
sum_xy += (x[i]-x_bar)*(y[i]-y_bar)
return(sum_xy/(N-1.0))
当前代码的具体问题是什么?从x.bar=mean(y)开始…我收到了无效的语法消息。不知道为什么?x.bar不是正确的变量名;不要在变量名中使用“.”;x_bar或xbar是您想要使用的。感谢您的帮助,此操作运行正常。但我只是在寻找样本协方差。我相信它的12.495超出了返回的矩阵。是因为我们的公式不同吗?是否希望返回矩阵?因为只有两个变量,所以返回的值是这两个变量之间的协方差。我只希望返回一个数字。只是样本协方差。当前函数返回一个数字。那问题出在哪里呢?别担心,我一时糊涂,但现在已经不是了。我真的很感谢你的帮助。谢谢
def cov(x,y):
if (len(x) != len(y)):
sys.exit()
x_bar = float(sum(x)/len(x))
y_bar = float(sum(y)/len(y))
N = len(x)
sum_xy = 0
for i in range(len(x)):
sum_xy += (x[i]-x_bar)*(y[i]-y_bar)
return(sum_xy/(N-1.0))