Рассчитать наклон и значение пересечения для логарифмической линии тренда как Excel

Я генерирую логарифмические линии тренда и использовал формулу Excel для этого. Но я не могу рассчитать наклон и значение перехвата, как рассчитано в Excel. Я думаю, я сделал несколько ошибок в моей формуле.

Это мой код

 var X= [10, 25, 30, 40]; Y= [5, 4, 7, 12];

 var Slope, Intercept, SX = 0, SY = 0,
            SXX = 0, SXY = 0, SYY = 0,
            SumProduct = 0, N = X.length;

            for (var i = 0; i < N; i++) {
                SX = SX + X[i];
                SY = SY + Y[i];
                SXY = SXY + X[i] * Y[i];
                SXX = SXX + X[i] * X[i];
                SYY = SYY + Y[i] * Y[i];
            }

            Slope = ((N * SXY) - (SX * SY)) / ((N * SXX) - (SX * SX));

            Intercept = (SY - (Slope * SX)) / N;

Скриптовая ссылка

Формула Excel:

Логарифмическое уравнение: y=(c*LN(x))+b

где:

c = INDEX(LINEST(y,LN(x)),1)
b = INDEX(LINEST(y,LN(x)),1,2)

Снимок экрана для вывода в формате Excel

введите описание изображения здесь

Пожалуйста, предложите, как получить формулу Excel в JavaScript.

1 ответ

Решение

Вы пропустили Math.log() за ln() в Excel. редактировать for части как это.

for (var i = 0; i < N; i++) {
    SX = SX + Math.log(X[i]);
    SY = SY + Y[i];
    SXY = SXY + Math.log(X[i]) * Y[i];
    SXX = SXX + Math.log(X[i]) * Math.log(X[i]);
    SYY = SYY + Y[i] * Y[i];
}

Я подтвердил, что вывод самсонов в виде Excel.

> Slope
3.8860409979365333
> Intercept
-5.252238189415747
Другие вопросы по тегам