ISlSerie.InitValue

Синтаксис Fore

InitValue: Double;

Синтаксис Fore.NET

InitValue: double;

Описание

Свойство InitValue определяет начальное приближение для коэффициента при экзогенной переменной.

Комментарии

Значение по умолчанию «0,0025».

Пример Fore

Для выполнения примера добавьте ссылку на системную сборку «Stat».

Sub UserProc;
Var
    lr: ISmLinearRegress;
    W: Array[
12Of Double;
    X: array[
20Of Double;
    Explan: ISlSerie;
    res, i: Integer;
    d: Double;
    CoefficientsX: ICoefficients;
    ModelCoefficients: IModelCoefficients;
Begin
    lr := 
New SmLinearRegress.Create;
    
// значения объясняющей переменной
    w[0] := 2; w[4] := -1.9; w[8] := -0.7;
    w[
1] := 0.8; w[5] := Double.Nan; w[9] := Double.Nan;
    w[
2] := -0.3; w[6] := 3.2; w[10] := 4.3;
    w[
3] := -0.3; w[7] := 1.6; w[11] := 1.1;
    
// значения экзогенной переменной
    x[0] := 1; x[10] := 11;
    x[
1] := 2; x[11] := 12;
    x[
2] := 3; x[12] := 13;
    x[
3] := 4; x[13] := Double.Nan;
    x[
4] := 5; x[14] := 15;
    x[
5] := 6; x[15] := 16;
    x[
6] := Double.Nan; x[16] := 17;
    x[
7] := 8; x[17] := Double.Nan;
    x[
8] := 9; x[18] := 19;
    x[
9] := 10; x[19] := 20;
    
// задаем период идентификации
    lr.ModelPeriod.FirstPoint := 1;
    lr.ModelPeriod.LastPoint := 
12;
    lr.Forecast.LastPoint := 
19;
    lr.MissingData.Method := MissingDataMethod.LinTrend;
    
// задаем объясняемую переменную
    lr.Explained.Value := w;
    
// задаем экзогенную переменную и её параметры
    lr.Explanatories.Clear;
    Explan := lr.Explanatories.Add;
    Explan.Id := 
"Explanatories_X";
    Explan.Name := 
"X";
    Explan.Value := X;
    Explan.Include := 
True;
    Explan.InitValue := 
0.44;
    ModelCoefficients := lr.ModelCoefficients;
    
// задаем автоматическую оценку значения константы
    ModelCoefficients.Intercept.Mode := InterceptMode.AutoEstimate;
    
// рассчитываем модель и выводим результаты в окно консоли
    res := lr.Execute;
    
// коэффициенты экзогенной переменной
    CoefficientsX := ModelCoefficients.Coefficients;
    Debug.WriteLine(
"Оценки коэффициентов X:");
    d := CoefficientsX.Estimate[
0];
    Debug.WriteLine(
" - значение: " + d.ToString);
    d := CoefficientsX.StandardError[
0];
    Debug.WriteLine(
" - стандартная ошибка: " + d.ToString);
    d := CoefficientsX.TStatistic[
0];
    Debug.WriteLine(
" - t-статистика: " + d.ToString);
    d := CoefficientsX.Probability[
0];
    Debug.WriteLine(
" - вероятность: " + d.ToString);
    Debug.WriteLine(
"=== Исходный ряд ===");
    
For i := 0 To lr.Explained.OriginalValue.Length - 1 Do
        Debug.WriteLine(lr.Explained.OriginalValue[i]);
    
End For;
    Debug.WriteLine(
"=== Полученный ряд ===");
    
For i := 0 To lr.Explained.Value.Length - 1 Do
        Debug.WriteLine(lr.Explained.Value[i]);
    
End For;
End Sub UserProc;

В результате выполнения примера будет создана модель линейной регрессии, в которой начальное приближение для коэффициента при экзогенной переменной равно «0,44».

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Imports Prognoz.Platform.Interop.Stat;

Public Shared Sub Main(Params: StartParams);
Var
    lr: ISmLinearRegress;
    W: Array[12Of Double;
    X: array[20Of Double;
    Explan: ISlSerie;
    res, i: Integer;
    d: Double;
    CoefficientsX: ICoefficients;
    ModelCoefficients: IModelCoefficients;
    OriginalValue, Value: System.Array;
Begin
    lr := New SmLinearRegress.Create();
    // значения объясняющей переменной
    w[0] := 2; w[4] := -1.9; w[8] := -0.7;
    w[1] := 0.8; w[5] := Double.Nan; w[9] := Double.Nan;
    w[2] := -0.3; w[6] := 3.2; w[10] := 4.3;
    w[3] := -0.3; w[7] := 1.6; w[11] := 1.1;
    // значения экзогенной переменной
    x[0] := 1; x[10] := 11;
    x[1] := 2; x[11] := 12;
    x[2] := 3; x[12] := 13;
    x[3] := 4; x[13] := Double.Nan;
    x[4] := 5; x[14] := 15;
    x[5] := 6; x[15] := 16;
    x[6] := Double.Nan; x[16] := 17;
    x[7] := 8; x[17] := Double.Nan;
    x[8] := 9; x[18] := 19;
    x[9] := 10; x[19] := 20;
    // задаем период идентификации
    lr.ModelPeriod.FirstPoint := 1;
    lr.ModelPeriod.LastPoint := 12;
    lr.Forecast.LastPoint := 19;
    lr.MissingData.Method := MissingDataMethod.mdmLinTrend;
    // задаем объясняемую переменную
    lr.Explained.Value := w;
    // задаем экзогенную переменную и её параметры
    lr.Explanatories.Clear();
    Explan := lr.Explanatories.Add();
    Explan.Id := "Explanatories_X";
    Explan.Name := "X";
    Explan.Value := X;
    Explan.Include := True;
    Explan.InitValue := 0.44;
    ModelCoefficients := lr.ModelCoefficients;
    // задаем автоматическую оценку значения константы
    ModelCoefficients.Intercept.Mode := InterceptMode.imAutoEstimate;
    // рассчитываем модель и выводим результаты в окно консоли
    res := lr.Execute();
    // коэффициенты экзогенной  переменной
    CoefficientsX := ModelCoefficients.Coefficients;
    System.Diagnostics.Debug.WriteLine("Оценки коэффициентов X:");
    d := CoefficientsX.Estimate.GetValue(0As double;
    System.Diagnostics.Debug.WriteLine(" - значение: " + d.ToString());
    d := CoefficientsX.StandardError.GetValue(0As double;
    System.Diagnostics.Debug.WriteLine(" - стандартная ошибка: " + d.ToString());
    d := CoefficientsX.TStatistic.GetValue(0As double;
    System.Diagnostics.Debug.WriteLine(" - t-статистика: " + d.ToString());
    d := CoefficientsX.Probability.GetValue(0As double;
    System.Diagnostics.Debug.WriteLine(" - вероятность: " + d.ToString());
    OriginalValue := lr.Explained.OriginalValue;
    Value := lr.Explained.Value;
    System.Diagnostics.Debug.WriteLine("=== Исходный ряд ===");
    For i := 0 To OriginalValue.Length - 1 Do
        System.Diagnostics.Debug.WriteLine(OriginalValue[i]);
    End For;
    System.Diagnostics.Debug.WriteLine("=== Полученный ряд ===");
    For i := 0 To Value.Length - 1 Do
        System.Diagnostics.Debug.WriteLine(Value[i]);
    End For;
End Sub;

См. также:

ISlSerie