-
-
Save wastemobile/309d02f19fd4845d5034 to your computer and use it in GitHub Desktop.
相關係數
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var JOURNAL = require('./journal'); | |
//陣列的 indexOf(name) 回傳索引或 -1(不存在) | |
//這個 hasEvent 用來檢測某事件是否存在 | |
function hasEvent(event, entry) { | |
return entry.events.indexOf(event) != -1; | |
} | |
//將某事件與變松鼠的關係寫成 [n00, n01, n10, n11] 陣列 | |
function tableFor(event, journal) { | |
var table = [0, 0, 0, 0]; | |
for (var i = 0; i < journal.length; i++) { | |
var entry = journal[i], index = 0; | |
if (hasEvent(event, entry)) { | |
index += 1; | |
} | |
if (entry.squirrel) { | |
index += 2; | |
} | |
table[index] += 1; | |
} | |
return table; | |
} | |
//根據資料陣列計算出相關係數 | |
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])); | |
} | |
//製作「事件:相關係數」的計算結果物件 phis | |
function gatherCorrelations(journal) { | |
var phis = {}; | |
for (var entry = 0; entry < journal.length; entry++) { | |
var events = journal[entry].events; | |
for (var i = 0; i < events.length; i++) { | |
var event = events[i]; | |
if (!(event in phis)) { | |
phis[event] = phi(tableFor(event, journal)); | |
} | |
} | |
} | |
return phis; | |
} | |
// var correlations = gatherCorrelations(JOURNAL); | |
// for (var key in correlations) { | |
// console.log(key + ": " + correlations[key]); | |
// } | |
//接下來是先用人眼觀察資料,發現吃花生(0.59)與沒刷牙(-0.38) | |
//然後將這兩個事件組合成單一事件,再計算其相關係數 | |
//得出絕對正相關(1)的結果 | |
for (var i = 0; i < JOURNAL.length; i++) { | |
var entry = JOURNAL[i]; | |
if (hasEvent("peanuts", entry) && !hasEvent("brushed teeth", entry)) { | |
entry.events.push("peanut teeth"); | |
} | |
} | |
console.log(phi(tableFor("peanut teeth", JOURNAL))); | |
//如果這個程式要改成自動探測,該怎麼做? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var JOURNAL = [ | |
{"events":["carrot","exercise","weekend"],"squirrel":false}, | |
{"events":["bread","pudding","brushed teeth","weekend","touched tree"],"squirrel":false}, | |
{"events":["carrot","nachos","brushed teeth","cycling","weekend"],"squirrel":false}, | |
{"events":["brussel sprouts","ice cream","brushed teeth","computer","weekend"],"squirrel":false}, | |
{"events":["potatoes","candy","brushed teeth","exercise","weekend","dentist"],"squirrel":false}, | |
{"events":["brussel sprouts","pudding","brushed teeth","running","weekend"],"squirrel":false}, | |
{"events":["pizza","brushed teeth","computer","work","touched tree"],"squirrel":false}, | |
{"events":["bread","beer","brushed teeth","cycling","work"],"squirrel":false}, | |
{"events":["cauliflower","brushed teeth","work"],"squirrel":false}, | |
{"events":["pizza","brushed teeth","cycling","work"],"squirrel":false}, | |
{"events":["lasagna","nachos","brushed teeth","work"],"squirrel":false}, | |
{"events":["brushed teeth","weekend","touched tree"],"squirrel":false}, | |
{"events":["lettuce","brushed teeth","television","weekend"],"squirrel":false}, | |
{"events":["spaghetti","brushed teeth","work"],"squirrel":false}, | |
{"events":["brushed teeth","computer","work"],"squirrel":false}, | |
{"events":["lettuce","nachos","brushed teeth","work"],"squirrel":false}, | |
{"events":["carrot","brushed teeth","running","work"],"squirrel":false}, | |
{"events":["brushed teeth","work"],"squirrel":false}, | |
{"events":["cauliflower","reading","weekend"],"squirrel":false}, | |
{"events":["bread","brushed teeth","weekend"],"squirrel":false}, | |
{"events":["lasagna","brushed teeth","exercise","work"],"squirrel":false}, | |
{"events":["spaghetti","brushed teeth","reading","work"],"squirrel":false}, | |
{"events":["carrot","ice cream","brushed teeth","television","work"],"squirrel":false}, | |
{"events":["spaghetti","nachos","work"],"squirrel":false}, | |
{"events":["cauliflower","ice cream","brushed teeth","cycling","work"],"squirrel":false}, | |
{"events":["spaghetti","peanuts","computer","weekend"],"squirrel":true}, | |
{"events":["potatoes","ice cream","brushed teeth","computer","weekend"],"squirrel":false}, | |
{"events":["potatoes","ice cream","brushed teeth","work"],"squirrel":false}, | |
{"events":["peanuts","brushed teeth","running","work"],"squirrel":false}, | |
{"events":["potatoes","exercise","work"],"squirrel":false}, | |
{"events":["pizza","ice cream","computer","work"],"squirrel":false}, | |
{"events":["lasagna","ice cream","work"],"squirrel":false}, | |
{"events":["cauliflower","candy","reading","weekend"],"squirrel":false}, | |
{"events":["lasagna","nachos","brushed teeth","running","weekend"],"squirrel":false}, | |
{"events":["potatoes","brushed teeth","work"],"squirrel":false}, | |
{"events":["carrot","work"],"squirrel":false}, | |
{"events":["pizza","beer","work","dentist"],"squirrel":false}, | |
{"events":["lasagna","pudding","cycling","work"],"squirrel":false}, | |
{"events":["spaghetti","brushed teeth","reading","work"],"squirrel":false}, | |
{"events":["spaghetti","pudding","television","weekend"],"squirrel":false}, | |
{"events":["bread","brushed teeth","exercise","weekend"],"squirrel":false}, | |
{"events":["lasagna","peanuts","work"],"squirrel":true}, | |
{"events":["pizza","work"],"squirrel":false}, | |
{"events":["potatoes","exercise","work"],"squirrel":false}, | |
{"events":["brushed teeth","exercise","work"],"squirrel":false}, | |
{"events":["spaghetti","brushed teeth","television","work"],"squirrel":false}, | |
{"events":["pizza","cycling","weekend"],"squirrel":false}, | |
{"events":["carrot","brushed teeth","weekend"],"squirrel":false}, | |
{"events":["carrot","beer","brushed teeth","work"],"squirrel":false}, | |
{"events":["pizza","peanuts","candy","work"],"squirrel":true}, | |
{"events":["carrot","peanuts","brushed teeth","reading","work"],"squirrel":false}, | |
{"events":["potatoes","peanuts","brushed teeth","work"],"squirrel":false}, | |
{"events":["carrot","nachos","brushed teeth","exercise","work"],"squirrel":false}, | |
{"events":["pizza","peanuts","brushed teeth","television","weekend"],"squirrel":false}, | |
{"events":["lasagna","brushed teeth","cycling","weekend"],"squirrel":false}, | |
{"events":["cauliflower","peanuts","brushed teeth","computer","work","touched tree"],"squirrel":false}, | |
{"events":["lettuce","brushed teeth","television","work"],"squirrel":false}, | |
{"events":["potatoes","brushed teeth","computer","work"],"squirrel":false}, | |
{"events":["bread","candy","work"],"squirrel":false}, | |
{"events":["potatoes","nachos","work"],"squirrel":false}, | |
{"events":["carrot","pudding","brushed teeth","weekend"],"squirrel":false}, | |
{"events":["carrot","brushed teeth","exercise","weekend","touched tree"],"squirrel":false}, | |
{"events":["brussel sprouts","running","work"],"squirrel":false}, | |
{"events":["brushed teeth","work"],"squirrel":false}, | |
{"events":["lettuce","brushed teeth","running","work"],"squirrel":false}, | |
{"events":["candy","brushed teeth","work"],"squirrel":false}, | |
{"events":["brussel sprouts","brushed teeth","computer","work"],"squirrel":false}, | |
{"events":["bread","brushed teeth","weekend"],"squirrel":false}, | |
{"events":["cauliflower","brushed teeth","weekend"],"squirrel":false}, | |
{"events":["spaghetti","candy","television","work","touched tree"],"squirrel":false}, | |
{"events":["carrot","pudding","brushed teeth","work"],"squirrel":false}, | |
{"events":["lettuce","brushed teeth","work"],"squirrel":false}, | |
{"events":["carrot","ice cream","brushed teeth","cycling","work"],"squirrel":false}, | |
{"events":["pizza","brushed teeth","work"],"squirrel":false}, | |
{"events":["spaghetti","peanuts","exercise","weekend"],"squirrel":true}, | |
{"events":["bread","beer","computer","weekend","touched tree"],"squirrel":false}, | |
{"events":["brushed teeth","running","work"],"squirrel":false}, | |
{"events":["lettuce","peanuts","brushed teeth","work","touched tree"],"squirrel":false}, | |
{"events":["lasagna","brushed teeth","television","work"],"squirrel":false}, | |
{"events":["cauliflower","brushed teeth","running","work"],"squirrel":false}, | |
{"events":["carrot","brushed teeth","running","work"],"squirrel":false}, | |
{"events":["carrot","reading","weekend"],"squirrel":false}, | |
{"events":["carrot","peanuts","reading","weekend"],"squirrel":true}, | |
{"events":["potatoes","brushed teeth","running","work"],"squirrel":false}, | |
{"events":["lasagna","ice cream","work","touched tree"],"squirrel":false}, | |
{"events":["cauliflower","peanuts","brushed teeth","cycling","work"],"squirrel":false}, | |
{"events":["pizza","brushed teeth","running","work"],"squirrel":false}, | |
{"events":["lettuce","brushed teeth","work"],"squirrel":false}, | |
{"events":["bread","brushed teeth","television","weekend"],"squirrel":false}, | |
{"events":["cauliflower","peanuts","brushed teeth","weekend"],"squirrel":false} | |
]; | |
// This makes sure the data is exported in node.js — | |
// `require('./path/to/04_data.js')` will get you the array. | |
if (typeof module != "undefined" && module.exports) | |
module.exports = JOURNAL; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment