Итоговый анализ

Чтобы найти все типы событий, представленных в наборе данных, мы обрабатываем каждое вхождение по очереди, и затем создаём цикл по всем событиям вхождения. Мы храним объект phis, в котором содержатся корреляционные коэффициенты для всех типов событий, которые мы уже нашли. Если мы встречаем новый тип, которого ещё не было в 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);

console.log(correlations.пицца);

// ? 0.068599434

Смотрим, что получилось:

for (var event in correlations)

  console.log(event + ": " + correlations[event]);

// ? морковка:   0.0140970969

// ? упражнения: 0.0685994341

// ? выходной:   0.1371988681

// ? хлеб:      -0.0757554019

// ? пудинг:    -0.0648203724

// и так далее...

Большинство корреляций лежат близко к нулю. Морковки, хлеб и пудинг, очевидно, не связаны с обращением в белку. Но оно вроде бы более часто происходит на выходных. Давайте отфильтруем результаты, чтобы выводить только корреляции больше 0,1 или меньше -0,1

for (var event in correlations) {

  var correlation = correlations[event];

  if (correlation > 0.1 || correlation < -0.1)

    console.log(event + ": " + correlation);

}

// ? выходной:     0.1371988681

// ? чистил зубы: -0.3805211953

// ? конфета:      0.1296407447

// ? работа:      -0.1371988681

// ? спагетти:     0.2425356250

// ? читал:        0.1106828054

// ? арахис:       0.5902679812

Ага! У двух факторов корреляции заметно больше остальных. Арахис сильно влияет на вероятность превращения в белку, тогда как чистка зубов наоборот, препятствует этому.

Интересно. Попробуем вот что:

for (var i = 0; i < JOURNAL.length; i++) {

  var entry = JOURNAL[i];

  if (hasEvent("арахис", entry) &&

     !hasEvent("чистка зубов", entry))

    entry.events.push("арахис зубы");

}

console.log(phi(tableFor("арахис зубы", JOURNAL)));

// ? 1

Ошибки быть не может! Феномен случается именно тогда, когда Жак ест арахис и не чистит зубы. Если б он только не был таким неряхой относительно оральной гигиены, он бы вообще не заметил своего несчастья.

Зная это, Жак просто перестаёт есть арахис и обнаруживает, что трансформации прекратились.

У Жака какое-то время всё хорошо. Но через несколько лет он теряет работу, и в конце концов ему приходится наняться в цирк, где он выступает как Удивительный Человек-белка, набирая полный рот арахисового масла перед шоу. Однажды, устав от столь жалкого существования, Жак не обращается обратно в человека, пробирается через дыру в цирковом тенте и исчезает в лесу. Больше его никто не видел.

Более 800 000 книг и аудиокниг! 📚

Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением

ПОЛУЧИТЬ ПОДАРОК