3

2 つのデータ リストの傾きを計算しようとしています。これはEXCELのSLOPE関数で簡単に計算できます。=SLOPE(A1:A100, B1:B100). この関数を C# WinForm で模倣しようとしています。これが私のコードです。何かを計算できますが、Excel 関数から得られる正しい数値ではありません。ここでエラーを見つけるのを手伝ってください。本当にありがとう!

private double Getslope(List<double> ProductGrossExcessReturnOverRFR, List<double> primaryIndexExcessReturnOverRFR, int months, int go_back = 0)
{
    double slope = 0;
    double sumx = 0, sumy = 0, sumxy = 0, sumx2 = 0;
    for (int i = ProductGrossExcessReturnOverRFR.Count - 1 - go_back; i > ProductGrossExcessReturnOverRFR.Count - (1 + months + go_back); i--)
    {
        sumxy += ProductGrossExcessReturnOverRFR[i] * primaryIndexExcessReturnOverRFR[i];
        sumx += ProductGrossExcessReturnOverRFR[i];
        sumy += primaryIndexExcessReturnOverRFR[i];
        sumx2 += ProductGrossExcessReturnOverRFR[i] * ProductGrossExcessReturnOverRFR[i];      
    }

    return slope = 1 / (((sumxy - sumx * sumy / months) / (sumx2 - sumx * sumx / months)));
}

テスト データ:関数を使用して Excel で計算する場合、勾配は 0.3373 である必要があり
{1.085231224, 2.335034309, 0.346667278}ます。しかし、私のコードは何とか0.47を生成します...
{3.185231224,3.705034309 , -0.883332722}=SLOPE

4

1 に答える 1