【发布时间】:2013-11-28 01:16:32
【问题描述】:
我正在尝试计算两个数据列表的斜率。您可以使用 SLOPE 函数在 EXCEL 中轻松计算此值。 =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)));
}
测试数据:{1.085231224, 2.335034309, 0.346667278} 和{3.185231224,3.705034309 , -0.883332722} 如果您在 Excel 中使用 =SLOPE 函数计算,其斜率应为 0.3373。但我的代码以某种方式产生 0.47...
【问题讨论】:
-
一些输入数据和预期结果会有所帮助
-
{1.085231224, 2.335034309, 0.346667278} 和 {3.185231224,3.705034309 , -0.883332722} 如果在 Excel 中使用 =SLOPE 函数计算,则斜率应为 0.3373。但我的代码以某种方式产生 0.47...
-
您对输入条件非常不清楚(
{1.085231224, 2.335034309, 0.346667278}和{3.185231224,3.705034309 , -0.883332722}到底是什么意思?);关于你的公式(months是什么意思?);而且您甚至没有提供验证计算的方法(可能很容易在 Excel 中输入的东西)。你能改善这一切吗?
标签: c# winforms excel list math