Добавление регрессионного уравнения к точечной диаграмме - PullRequest
0 голосов
/ 25 мая 2018

У меня работает следующий график:

var Grade_access = c3.generate({
    bindto: '#grade_access',
    data: {
        url: 'grades_access.csv',
        x: 'Access_grade',
        types: {
            Grade:'scatter',
            Regression: 'line'
        },
    },
    axis: {
        y: {
        label: {
            text: "Average grade",
            position: "outer-middle"
        },
        min: 1,
        max: 9
        },
        x: {
        label: {
            text: "Access grade PAU",
            position: "outer-center"
        },
        min: 9,
        max: 14
        }
    },
    size: {
        height: 400,
        width: 800
    },
    zoom: {
        enabled: true
    },
    legend: {
        show: true,
        position: 'inset',
        inset: {
        anchor: 'top-right',
        x: 20,
        y: 300
        }
    }
})

document.getElementById("equation").innerHTML = "Grade = " + 2 + "·x + " + 1;

grade_access.csv выглядит так:

Access_grade,Chemistry I,Regression
9.85,3.8,4.54
10.64,5.0,5.31
10.0,4.0,4.69
10.92,5.4,5.58
11.69,5.5,6.33
11.79,8.0,6.43
11.03,6.3,5.69
10.47,5.0,5.14
10.1,5.6,4.78
12.13,8.5,6.76
11.94,6.4,6.57
10.96,6.7,5.62
10.45,5.9,5.12
10.45,5.7,5.12
12.62,7.7,7.24
10.19,5.0,4.87

Но я хочу изменить две вещи, чтобы улучшить его:

  • Избегайте точек синего цвета, соединенных линией (я хочу, чтобы оранжевые точки объединились для создания линии регрессии)
  • Отображение истинного уравнения линии регрессии (теперь я составил коэффициенты: 2 и 1 не настоящие)

Любая помощь?Заранее спасибо!

1 Ответ

0 голосов
/ 25 мая 2018

Чтобы скрыть линию, соединенную синими точками, вы можете либо проверить элемент path и скрыть класс с помощью css, либо изменить Grade на Chemistry I.

Поскольку ваши значения регрессии ужерассчитано, это просто делает вычисление коэффициентов очень простым.

var d1 = data[0];
var d2 = data[1];
var b = (1-(d2['Regression']/d1['Regression']))/((d1['Access_grade']-d2['Access_grade'])/d1['Regression']);
var a = d1['Regression'] - (b * d1['Access_grade']);

Я взял первые две точки данных, а затем все равно, что решить систему линейных уравнений.

Вот ваш плункер .

...