解释phi系数函数如何在有说服力的Javascript中工作?

解释phi系数函数如何在有说服力的Javascript中工作?,javascript,arrays,math,Javascript,Arrays,Math,我目前正在阅读有说服力的Javascript,到目前为止,这本书读得不错,但我一直坚持他提出的一个函数,用于计算φ系数。这是代码 这本书显然有相当多的上下文,我不能复制/粘贴书中的所有内容,因此如果有人真的读过这本书,可以向我解释一下,那就太棒了 我不明白的是,当他说“表[3]”或“表[0]”时指的是什么?我理解φ系数公式: ν=(n11n00-n10n01)/(√ n1•n0•n•1n•0) 但我(根本)不明白他是如何将其翻译成JS的。这段代码中到底发生了什么 function phi(tab

我目前正在阅读有说服力的Javascript,到目前为止,这本书读得不错,但我一直坚持他提出的一个函数,用于计算φ系数。这是代码

这本书显然有相当多的上下文,我不能复制/粘贴书中的所有内容,因此如果有人真的读过这本书,可以向我解释一下,那就太棒了

我不明白的是,当他说“表[3]”或“表[0]”时指的是什么?我理解φ系数公式:

ν=(n11n00-n10n01)/(√ n1•n0•n•1n•0)

但我(根本)不明白他是如何将其翻译成JS的。这段代码中到底发生了什么

function phi(table) {
  return (table[3] * table[0] - table[2] * table[1]) /
    Math.sqrt((table[2] + table[3]) *
              (table[0] + table[1]) *
              (table[1] + table[3]) *
              (table[0] + table[2]));
}

试着将每一步的过程形象化,并将其替换为一个等式:

┌──────────────┬──────────────┐ │ label: n00 │ label: n01 │ │ count: 76 │ count: 9 │ │ no squirrel, │ no squirrel, │ │ no pizza │ pizza │ ├──────────────┼──────────────┤ │ label: n10 │ label: n11 │ │ count: 4 │ count: 1 │ │ squirrel, │ squirrel, │ │ no pizza │ pizza │ └──────────────┴──────────────┘
非常感谢。我被困在这上面有一段时间了!这很有道理,再次感谢。:)
table = [n00, n01, n10, n11]

n00 = table[0] = 76
n10 = table[1] = 4
n01 = table[2] = 9
n11 = table[3] = 1

n1• = n10 + n11 = table[2] + table[3] = 9  + 1 = 10
n0• = n00 + n01 = table[0] + table[1] = 76 + 4 = 80
n•1 = n01 + n11 = table[1] + table[3] = 4  + 1 = 5
n•0 = n00 + n10 = table[0] + table[2] = 76 + 9 = 85
//pseudo code
phi = function(table) {
  return (n11 * n00 - n10 * n01) /
    Math.sqrt(n1• * n0• * n•1 * n•0)
}

//JavaScript code
phi = function(table) {
  return (table[3] * table[0] - table[2] * table[1]) /
    Math.sqrt((table[2] + table[3]) *
              (table[0] + table[1]) *
              (table[1] + table[3]) *
              (table[0] + table[2]))
}