C# アプリを使用していくつかのデータを分析しようとしており、トレンド ラインを計算する必要があります。複数のタイプのトレンド ラインがあることは承知していますが、現時点では指数関数的成長を計算しようとしています。将来の価値を予測するために使用します。私が取り組んできた方程式は
x(t) = x(0) * ((1+r)^t)
そして、これはグラフを複製するために私が書いたコードです:
public void ExponentialBestFit(List<DateTime> xvalues, List<double> yvalues)
{
//Find the first value of y (The start value) and the first value of x (The start date)
xzero = Convert.ToDouble(xvalues[0].ToOADate());
yzero = yvalues[0];
if (yzero == 0)
yzero += 0.1;
//For every value of x (exluding the 1st value) find the r value
//
// | y | Where t = the time sinse the start time (time period)
//Equation for r = t root|-------| - 1 Where y = the current y value
// | y[0] | Where y[0] = the first y value #IMPROVMENT - Average 1st y value in range
//
double r = 0;
//c is a count of how many r values are added; it is not equal to the count of all the values
int c = 0;
for (int i = 1; i < xvalues.Count; i++)
{
r += Math.Pow(yvalues[i]/yzero, 1/(Convert.ToDouble(xvalues[i].ToOADate()) - xzero)) - 1;
c++;
}
r = r / c;
}
私が渡しているデータは一定期間にわたっていますが、時間の増加の増分は同じではありません。Excelでグラフを作成すると、別の式が使用されます
x(t) = x(0)*(e^kt)
ただし、k値がどこから生成されているのかわかりません。私が渡している 2 つのリストは Date と Value で、各リストの各行は他のリストの同じ行に対応しています。問題は、方程式と変数を作成するためのより良い方法はありますか、また、取得している変数は自分のデータに対して最も正確であるかということです。