ISmPooledModel.CrossSectionSDinit

Синтаксис Fore

CrossSectionSDinit: Double;

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

CrossSectionSDinit: double;

Описание

Свойство CrossSectionSDinit определяет перекрёстное стандартное отклонение.

Комментарии

Свойство CrossSectionSDinit используется для расчета с сохраненными коэффициентами.

Для получения стандартного отклонения групповых ошибок используйте свойство ISmPooledModel.CrossSectionSD.

Пример Fore

Для выполнения примера добавьте ссылки на системные сборки Stat, MathFin.

Sub UserProc;
Var
    PooledModel: ISmPooledModel;
    yY: Array[62Of Double;
    x1x: Array[72Of Double;
    Coefficients: ICoefficients;
    Intercept: IIntercept;
    i, j, Status: Integer;
    arr, Effects, StError, Est, TStat, Prob: Array Of Double;
    IntStError, IntEst, IntTStat, IntProb: Double;
    str: String;
Begin
    PooledModel := New SmPooledModel.Create;
    // Объясняемые значения
    yY[00] := 20;    yY[01] := 17;
    yY[10] := 10;    yY[11] := 7;
    yY[20] := -50;   YY[21] := 21;
    yY[30] := 20;    yY[31] := 17;
    yY[40] := 25;    yY[41] := 7;
    yY[50] := -50;   YY[51] := 0.1;
    PooledModel.Explained.Value := YY;
    // Объясняющие значения
    x1x[00] := 4;    x1x[01] := -1.5;
    x1x[10] := 0.5;  x1x[11] := 5;
    x1x[20] := -2;   x1x[21] := 2.5;
    x1x[30] := 130;  x1x[31] := 131;
    x1x[40] := 120;  x1x[41] := 141;
    x1x[50] := 150;  x1x[51] := 151;
    x1x[60] := 160;  x1x[61] := 161;
    PooledModel.Explanatories.Add.Value := x1x;
    PooledModel.Explanatories.Item(0).InitValue:=0.5;
    // Параметры коэффициентов модели
    PooledModel.ModelCoefficients.Intercept.InitValue:=100;
    // Период идентификации
    PooledModel.ModelPeriod.FirstPoint := 1;
    PooledModel.ModelPeriod.LastPoint := 5;
    // Последняя точка прогноза
    PooledModel.Forecast.LastPoint := 7;
    // Тип модели
    PooledModel.CrossSection := PooledModelCrossSectionType.RandomEffect;
    // Метод для расчета случайных эффектов
    PooledModel.RandomEffectsMethod := PooledModelRandomEffectsMethodType.SwamyArora;
    //Задаем, что модель использует сохраненные коэффициенты
    PooledModel.ARMA.MaxIteration:=0;
    PooledModel.ARMA.CalcInitMode:=ARMAInitType.Manual;
    // Перекрёстное стандартное отклонение
    PooledModel.CrossSectionSDinit := 0.030485421521669304;
    // Начальные значения эффектов для расчета без оценивания
    arr:=New Double[PooledModel.Explained.Value.GetUpperBound(2)+1];
    For i:=0 To arr.Length-1 Do
        arr[i]:=(i-1)*math.Power(-1,i+2);
    End For;
    PooledModel.EffectsInits := arr;
    // Спецификации случайных эффектов, для расчета без оценивания
    PooledModel.IdiosyncraticSDinit := 0.31046596048669278;
    // Запускаем расчет
    Status := PooledModel.Execute;
    Debug.WriteLine(PooledModel.Errors);
    If Status = 0 Then
        Debug.WriteLine("Оценки константы:");
        Intercept := PooledModel.ModelCoefficients.Intercept;
            IntEst := Intercept.Estimate;
            IntStError := Intercept.StandardError;
            IntTStat := Intercept.TStatistic;
            IntProb := Intercept.Probability;
            Debug.WriteLine(" " + IntEst.ToString + " " 
                + IntStError.ToString + " " + IntTStat.ToString + " " + IntProb.ToString);
        Debug.WriteLine("Оценки коэффициентов модели:");
        Coefficients := PooledModel.ModelCoefficients.Coefficients;
        j := Coefficients.Estimate.Length;
        For i := 0 To j - 1 Do
            Est := Coefficients.Estimate;
            StError := Coefficients.StandardError;
            TStat := Coefficients.TStatistic;
            Prob := Coefficients.Probability;
            Debug.WriteLine(" " + (i + 1).ToString + ": " + Est[i].ToString + " " 
                + StError[i].ToString + " " + TStat[i].ToString + " " + Prob[i].ToString);
        End For;
        Debug.WriteLine("Рассчитанные эффекты: ");
        Effects := PooledModel.Effects;
        For i := 0 To PooledModel.Effects.Length-1 Do
            Debug.WriteLine(" " + (i+1).ToString + ": " + Effects[i].ToString);
        End For;
        Debug.WriteLine("Ковариационная матрица");
        For i := 0 To PooledModel.CovarianceMatrix.GetUpperBound(1Do
            str := "";
            For j := 0 To PooledModel.CovarianceMatrix.GetUpperBound(2Do
                str := str + "  " + (PooledModel.CovarianceMatrix[i, j] As Double).ToString;
            End For;
            Debug.WriteLine(str);
        End For;
    End If;
End Sub UserProc;

После выполнения примера будет рассчитана модель регрессии на панельных данных со случайными эффектами, результаты расчета выведены в окно консоли.

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.Stat;
Imports Prognoz.Platform.Interop.MathFin;

Public Shared Sub Main(Params: StartParams);
Var
    PooledModel: ISmPooledModel;
    yY: Array[26Of Double;
    x1x: Array[27Of Double;
    math: MathClass = New MathClass();
    Coefficients: ICoefficients;
    Intercept: IIntercept;
    i, j, Status: Integer;
    arr, Effects, StError, Est, TStat, Prob, Matrix: System.Array;
    IntStError, IntEst, IntTStat, IntProb: Double;
    str: String;
Begin
    PooledModel := New SmPooledModel.Create();
    // Объясняемые значения
    yY[00] := 20;    yY[10] := 17;
    yY[01] := 10;    yY[11] := 7;
    yY[02] := -50;   YY[12] := 21;
    yY[03] := 20;    yY[13] := 17;
    yY[04] := 25;    yY[14] := 7;
    yY[05] := -50;   YY[15] := 0.1;
    PooledModel.Explained.Value := YY;
    // Объясняющие значения
    x1x[00] := 4;    x1x[10] := -1.5;
    x1x[01] := 0.5;  x1x[11] := 5;
    x1x[02] := -2;   x1x[12] := 2.5;
    x1x[03] := 130;  x1x[13] := 131;
    x1x[04] := 120;  x1x[14] := 141;
    x1x[05] := 150;  x1x[15] := 151;
    x1x[06] := 160;  x1x[16] := 161;
    PooledModel.Explanatories.Add().Value := x1x;
    PooledModel.Explanatories.Item[0].InitValue:=0.5;
    // Параметры коэффициентов модели
    PooledModel.ModelCoefficients.Intercept.InitValue:=100;
    // Период идентификации
    PooledModel.ModelPeriod.FirstPoint := 1;
    PooledModel.ModelPeriod.LastPoint := 5;
    // Последняя точка прогноза
    PooledModel.Forecast.LastPoint := 7;
    // Тип модели
    PooledModel.CrossSection := PooledModelCrossSectionType.pmcstRandomEffect;
    // Метод для расчета случайных эффектов
    PooledModel.RandomEffectsMethod := PooledModelRandomEffectsMethodType.pmremSwamyArora;
    //Задаем, что модель использует сохраненные коэффициенты
    PooledModel.ARMA.MaxIteration:=0;
    PooledModel.ARMA.CalcInitMode:=ARMAInitType.armaitManual;
    // Перекрёстное стандартное отклонение
    PooledModel.CrossSectionSDinit := 0.030485421521669304;
    // Начальные значения эффектов для расчета без оценивания
    arr:=New Double[PooledModel.Explained.Value.GetUpperBound(1)+1];
    For i:=0 To arr.Length-1 Do
        arr[i]:=(i-1)*math.Power(-1,i+2);
    End For;
    PooledModel.EffectsInits := arr;
    // Спецификации случайных эффектов, для расчета без оценивания
    PooledModel.IdiosyncraticSDinit := 0.31046596048669278;
    // Запускаем расчет
    Status := PooledModel.Execute();
    System.Diagnostics.Debug.WriteLine(PooledModel.Errors);
    If Status = 0 Then
        System.Diagnostics.Debug.WriteLine("Оценки константы:");
        Intercept := PooledModel.ModelCoefficients.Intercept;
            IntEst := Intercept.Estimate;
            IntStError := Intercept.StandardError;
            IntTStat := Intercept.TStatistic;
            IntProb := Intercept.Probability;
            System.Diagnostics.Debug.WriteLine(" " + IntEst.ToString() + " " 
                + IntStError.ToString() + " " + IntTStat.ToString() + " " + IntProb.ToString());
        System.Diagnostics.Debug.WriteLine("Оценки коэффициентов модели:");
        Coefficients := PooledModel.ModelCoefficients.Coefficients;
        j := Coefficients.Estimate.Length;
        For i := 0 To j - 1 Do
            Est := Coefficients.Estimate;
            StError := Coefficients.StandardError;
            TStat := Coefficients.TStatistic;
            Prob := Coefficients.Probability;
            System.Diagnostics.Debug.WriteLine(" " + (i + 1).ToString() + ": " + Est[i].ToString() + " " 
                + StError[i].ToString() + " " + TStat[i].ToString() + " " + Prob[i].ToString());
        End For;
        System.Diagnostics.Debug.WriteLine("Рассчитанные эффекты: ");
        Effects := PooledModel.Effects;
        For i := 0 To PooledModel.Effects.Length-1 Do
            System.Diagnostics.Debug.WriteLine(" " + (i+1).ToString() + ": " + Effects[i].ToString());
        End For;
        System.Diagnostics.Debug.WriteLine("Ковариационная матрица");
        Matrix := PooledModel.CovarianceMatrix;
        For i := 0 To PooledModel.CovarianceMatrix.GetUpperBound(1Do
            str := "";
            For j := 0 To PooledModel.CovarianceMatrix.GetUpperBound(0Do
                str := str + "  " + (Matrix[j, i] As Double).ToString();
            End For;
            System.Diagnostics.Debug.WriteLine(str);
        End For;
    End If;
End Sub;

См. также:

ISmPooledModel