R2: Double;
R2: double;
Свойство R2 возвращает коэффициент детерминации.
Данный коэффициент определяет долю вариации зависимой переменной, обусловленную изменением экзогенных переменных.
Для выполнения пример добавьте ссылку на системную сборку «Stat».
Sub UserProc;
Var
LinearR: SmLinearRegress;
can, fr: Array[9] Of Double;
res, i: Integer;
Con: IIntercept;
ss: ISummaryStatistics;
Begin
LinearR := New SmLinearRegress.Create;
For i := 0 To 8 Do
can[i] := 1230 + i * 302;
fr[i] := 579.5 + i * 9.4;
End For;
// Задаем параметры модели
LinearR.Explained.Value := can;
LinearR.Explanatories.Add.Value := fr;
Con := LinearR.ModelCoefficients.Intercept;
con.Mode := InterceptMode.ManualEstimate;
con.Estimate := 35.7;
// Выполняем расчёт
res := LinearR.Execute;
ss := LinearR.SummaryStatistics;
Debug.Write("Коэффициент детерминации: ");
Debug.WriteLine(ss.R2);
Debug.Write("Коэффициент детерминации (нецентрированный): ");
Debug.WriteLine(ss.R2_2);
Debug.Write("Информационный критерий Шварца: ");
Debug.WriteLine(ss.SC);
Debug.Write("Стандартное отклонение зависимой переменной: ");
Debug.WriteLine(ss.SD);
Debug.Write("Стандартная ошибка: ");
Debug.WriteLine(ss.SE);
Debug.Write("Стандартное отклонение остатков: ");
Debug.WriteLine(ss.SEE);
Debug.Write("Сумма квадратов остатков отклонений исходных данных от модельных: ");
Debug.WriteLine(ss.SSR);
Debug.Write("Дисперсия остатков: ");
Debug.WriteLine(ss.VE);
End Sub UserProc;
После выполнения примера в окно консоли будут выведены статистические характеристики:
Значение коэффициента детерминации;
Значение коэффициента детерминации (нецентрированный);
Информационный критерий Шварца;
Стандартное отклонение зависимой переменной;
Стандартная ошибка;
Стандартное отклонение остатков;
Сумма квадратов остатков отклонений исходных данных от модельных;
Дисперсия остатков.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Stat;
…
Public Shared Sub Main(Params: StartParams);
Var
LinearR: SmLinearRegress;
can, fr: Array[9] Of Double;
res, i: Integer;
Con: IIntercept;
ss: ISummaryStatistics;
Begin
LinearR := New SmLinearRegress.Create();
For i := 0 To 8 Do
can[i] := 1230 + i * 302;
fr[i] := 579.5 + i * 9.4;
End For;
// Задаем параметры модели
LinearR.Explained.Value := can;
LinearR.Explanatories.Add().Value := fr;
Con := LinearR.ModelCoefficients.Intercept;
con.Mode := InterceptMode.imManualEstimate;
con.Estimate := 35.7;
// Выполняем расчёт
res := LinearR.Execute();
ss := LinearR.SummaryStatistics;
System.Diagnostics.Debug.Write("Коэффициент детерминации: ");
System.Diagnostics.Debug.WriteLine(ss.R2);
System.Diagnostics.Debug.Write("Коэффициент детерминации (нецентрированный): ");
System.Diagnostics.Debug.WriteLine(ss.R2_2);
System.Diagnostics.Debug.Write("Информационный критерий Шварца: ");
System.Diagnostics.Debug.WriteLine(ss.SC);
System.Diagnostics.Debug.Write("Стандартное отклонение зависимой переменной: ");
System.Diagnostics.Debug.WriteLine(ss.SD);
System.Diagnostics.Debug.Write("Стандартная ошибка: ");
System.Diagnostics.Debug.WriteLine(ss.SE);
System.Diagnostics.Debug.Write("Стандартное отклонение остатков: ");
System.Diagnostics.Debug.WriteLine(ss.SEE);
System.Diagnostics.Debug.Write("Сумма квадратов остатков отклонений исходных данных от модельных: ");
System.Diagnostics.Debug.WriteLine(ss.SSR);
System.Diagnostics.Debug.Write("Дисперсия ошибок: ");
System.Diagnostics.Debug.WriteLine(ss.VE);
End Sub;
См. также: