我需要在我的Torch / Lua程序中使用Pearson相关系数。 这是功能:
function math.pearson(a)
-- compute the mean
local x1, y1 = 0, 0
for _, v in pairs(a) do
x1, y1 = x1 + v[1], y1 + v[2]
print('x1 '..x1);
print('y1 '..y1);
end
-- compute the coefficient
x1, y1 = x1 / #a, y1 / #a
local x2, y2, xy = 0, 0, 0
for _, v in pairs(a) do
local tx, ty = v[1] - x1, v[2] - y1
xy, x2, y2 = xy + tx * ty, x2 + tx * tx, y2 + ty * ty
end
return xy / math.sqrt(x2) / math.sqrt(y2)
end
此函数需要一个可在pairs()函数中使用的输入耦合表。 我试图向它提交正确的输入表,但我无法正常工作。
我尝试过:
z = {}
a = {27, 29, 45, 98, 1293, 0.1}
b = {0.0001, 0.001, 0.32132, 0.0001, 0.0009}
z = {a,b}
但遗憾的是它不起作用。它将计算b的第一个元素之间的对,而我希望它计算a和b之间的相关性。 我该怎么办?
你能提供一个好的对象,可以作为math.pearson()函数的输入吗?
答案 0 :(得分:3)
如果您使用的是this implementation,那么我认为它需要不同的参数结构。您应该传递一个包含两个值表的表,如:
local z = {
{27, 0.0001}, {29, 0.001}, {45, 0.32132}, {98, 0.0001}, {1293, 0.0009}
}
print(math.pearson(z))
这为我打印-0.25304101592759
。