javascript - 解释 phi 系数函数如何在 Eloquent Javascript 中工作?

标签 javascript arrays math

我目前正在阅读 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]))
}

关于javascript - 解释 phi 系数函数如何在 Eloquent Javascript 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26323481/

相关文章:

javascript - 简单的 jquery 验证创建错误消息

javascript - Greplin 编程挑战第 3 级(Matlab)

javascript - 检查数字字符串是否包含十进制?

javascript - POST-GET session 变量 (javascript-php) -javascript 采用前一个变量,但不是最后创建的变量

javascript - 在微观策略报告中调用 js 文件

javascript - 如何克隆 json 数组而不更改现有 json 数组的值

确认数组的缓存对齐

c# - C# 是否支持任意精度算术?

javascript - Angular 6 中的 xml2js : Can't resolve 'stream' and 'timers'

java - 要求用户从数组中选择