计算对数趋势线的斜率和截距值为excel

时间:2017-03-30 05:32:18

标签: javascript excel vba excel-charts trendline

我正在生成对数趋势线并使用Excel公式。但我无法计算在Excel中计算的斜率和截距值。我想,我在公式中犯了一些错误。

这是我的代码

<template>
    <div>
        ...
        <div class="list-group">
            <a :href="baseUrl+'/message/inbox'" class="list-group-item">
                Message
            </a>
            <a :href="baseUrl+'/message/review'" class="list-group-item">
                Review
            </a>
            <a :href="baseUrl+'/message/resolution'" class="list-group-item">
                Resolution
            </a>
        </div>
        ...
    </div>
</template>
<script>
    export default {
        ...
        data() {
            return {
                baseUrl: window.Laravel.baseUrl
            }
        },
        ...
    }
</script>

Fiddle link

Excel公式:

对数方程:y =(c * LN(x))+ b

其中:

 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输出的屏幕截图

enter image description here

请建议如何在JavaScript中派生Excel公式。

1 个答案:

答案 0 :(得分:4)

您在Excel中错过Math.log() ln()。像这样编辑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