我目前正在阅读《Eloquent Javascript》,到目前为止,这是一本很好的书,但我一直停留在他提出的这个用于计算 phi 系数的函数上。这是代码。
显然有很多上下文,我无法复制/粘贴书中的所有内容,所以如果真正读过这本书的人可以向我解释这一点,那就太棒了!
我不明白的是,当他说“table[3]”或“table[0]”时指的是什么?我理解的phi系数公式:
ψ = (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]))
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)