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