Функция плотности вероятности с javascript d3 и dc



Я пытаюсь создать функцию плотности вероятности набора данных с помощью Javascript, (библиотеки d3 и dc) (аналогично функции плотности R), но я не нашел, как это сделать.



Можно ли это сделать?



Спасибо



PD: с jqplot это: http://services.mbi.ucla.edu/jqplot/examples/kcp_pdf.html

456   1  

1 ответ:

Наконец, я должен иметь возможность работать с алгоритмом KDE (реализованным в science.JS библиотека)

Как всегда библиотека dc нуждается в том, чтобы данные были адаптированы. Когда данные уменьшаются в объекте со всеми внешними признаками и его частотой, объект должен быть преобразован в массив с записью для каждого внешнего вида. Группы необходимы, потому что dc нужна группа для рисования.

Мои решения были:

// Creating the group
var group = dimension.group().reduceSum();
......
// Process the object. 
groups = group.all()
var newValues = []
for (var i = 0; i < groups.length; i++) {
    for (var j = 0; j < groups[i].value;j++){
        if (groups[i].key == "null" ||
            groups[i].key == null ||
            (groups[i].key - start < 0) ||
            (groups[i].key - end > 0)) {
        } else {
            newValues.push(parseFloat(groups[i].key))
        }
    }
}
.....
// Creating the new data that represent a density function. 
var kde = science.stats.kde().sample(newValues);
// I have replaced the bandwidth method (Multivariate Density Estimation)
// because this method works better than previous (Density Estimation) 
// min and max are calculated previously 
kde.bandwidth(science.stats.bandwidth.nrd0);
var frequency = Math.abs(parseFloat(max) - parseFloat(min)) / 512
var newData = kde(d3.range(min,max,frequency));

.....
// The array that is inside of the group is a reference (obviously but it is important)
// Deleting the contains of the array
groups.splice(0,groups.length) 
// add the new data
for (var key in newData) {
    groups.push({key:newData[key][0],value:newData[key][2]
})

Реализация, которая работает можно увидеть в рамках что я и делаю (репозиторий ).

Comments

    Ничего не найдено.