ITsStatistics.Execute

Синтаксис Fore

Execute: ITsStatisticsTree;

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

Execute(): Prognoz.Platform.Interop.Transform.ITsStatisticsTree;

Описание

Метод Execute выполняет построение дерева статистических характеристик.

Комментарии

Значения, для которых рассчитываются статистические характеристики, определяет свойство ITsStatistics.Values.

Пример Fore

Для выполнения примера предполагается наличие формы, содержащей следующие компоненты:

Добавьте ссылки на системные сборки: Collection, Cubes, Ms, Stat, Transform.

Sub UserProc;
Var
    Stat: ITsStatistics;
    CalcSerie: ILanerCalculateSerie;
    Transform: IMsFormulaTransform;
    Formula: IMsFormula;
    SummaryStat: ISummaryStatistics;
    TabSheet: ITabSheet;
    TabSelection: ITabSelection;
    Range: ITabRange;
    i, j: integer;
    Arr: IArrayList;
    Tree: ITsStatisticsTree;
    StatNode, ParentNode: ITreeListNode;
    HashT: IHashtable;
    Grid:IEaxGrid;
Begin
    // Очищаем компонент для вывода дерева статистик
    TreeList1.Nodes.Clear;
    TreeList1.ShowColumnHeaders := True;
    If LanerBox1.SelectedSeriesCount = 0 Then
        Return;
    End If;
    // Создаем класс для построения дерева статистик
    Stat := New TsStatistics.Create;
    // Передаем статистические характеристики для построения дерева
    CalcSerie := LanerBox1.SelectedSeries(0As ILanerCalculateSerie;
    If CalcSerie.Transform <> Null Then
        Transform := CalcSerie.Transform.Transform As IMsFormulaTransform;
        If (Transform <> NullAnd (Transform.FormulaCount <> 0Then
            Formula := Transform.FormulaItem(0);
            SummaryStat := Formula.Method.Summary(Transform.CreateCoord(Null));
            Stat.SummaryStatistics := SummaryStat;
        End If;
    End If;
    // Получаем диапазон ячеек, выделенных в LanerBox
    Grid := UiErAnalyzer1.ErAnalyzer.Grid;
    TabSheet := Grid.TabSheet;
    TabSelection := TabSheet.View.Selection;
    If TabSelection.Range.IsCell Then
        Range := Grid.SpecificRange(EaxRangeType.Internal);
    Else
        Range := TabSelection.Range;
    End If;
    // Получаем значения в выделенном диапазоне
    Arr := New ArrayList.Create;
    For i := Range.Left To Range.Right Do
        For j := Range.Top To Range.Bottom Do
            Arr.Add(TabSheet.CellValue(j, i));
        End For;
    End For;
    // Передаем значения для построения дерева
    Stat.Values := Arr.ToArray;
    // Исключаем часть статистик из построения дерева
    Stat.IncludeStatistics(TsStatisticsType.Skew) := False;
    Stat.IncludeStatistics(TsStatisticsType.Kurt) := False;
    // Включаем в построение дерева только рассчитанные статистики
    Stat.CalculatedOnly := True;
    // Отстраиваем дерево
    Tree := Stat.Execute;
    If Tree = Null Then
        Return;
    End If;
    HashT := New Hashtable.Create;
    For i := 0 To Tree.Count - 1 Do
        ParentNode := Null;
        If Tree.ParentNode(i) <> -1 Then
            ParentNode := HashT(Tree.ParentNode(i));
        End If;
        StatNode := TreeList1.Nodes.AddChild(ParentNode, Tree.Name(i));
        If Tree.Type(i) = TsStatisticsTreeNodeType.Statistics Then
            StatNode.ColumnText(1) := Tree.Value(i);
            StatNode.ColumnText(2) := Tree.ShortName(i);
            Debug.WriteLine(Tree.StatNode(Tree.Data(i) As TsStatisticsType));
        End If;
        HashT(i) := StatNode;
    End For;
    HashT.Clear;
    TreeList1.Nodes.TreeControl.InnerRoot.Expand(True);
End Sub UserProc;

В результате выполнения примера в «TreeList1» будет выведено дерево статистических характеристик, рассчитанных для диапазона данных, выделенного в «LanerBox1». Индексы рассчитанных характеристик будут выведены в окно консоли.

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Express;
Imports Prognoz.Platform.Interop.ForeCollections;
Imports Prognoz.Platform.Interop.Forms;
Imports Prognoz.Platform.Interop.Laner;
Imports Prognoz.Platform.Interop.Ms;
Imports Prognoz.Platform.Interop.Stat;
Imports Prognoz.Platform.Interop.Tab;
Imports Prognoz.Platform.Interop.Transform;

Public Sub UserProc();
Var
    Stat: ITsStatistics;
    CalcSerie: ILanerCalculateSerie;
    Transform: IMsFormulaTransform;
    Formula: IMsFormula;
    SummaryStat: ISummaryStatistics;
    TabSheet: ITabSheet;
    TabSelection: ITabSelection;
    Range: ITabRange;
    i, j: integer;
    Arr: IArrayList;
    Tree: ITsStatisticsTree;
    StatNode, ParentNode: ITreeListNode;
    HashT: IHashtable;
    Grid: IEaxGrid;
Begin
    // Очищаем компонент для вывода дерева статистик
    treeListNet1.CtrlBox.Nodes.Clear();
    treeListNet1.CtrlBox.ShowColumnHeaders := True;
    If lanerBoxNet1.SelectedSeriesCount = 0 Then
        Return;
    End If;
    // Создаем класс для построения дерева статистик
    Stat := New TsStatistics.Create();
    // Передаем статистические характеристики для построения дерева
    CalcSerie := lanerBoxNet1.SelectedSeries[0As ILanerCalculateSerie;
    If CalcSerie.Transform <> Null Then
        Transform := CalcSerie.Transform.Transform As IMsFormulaTransform;
        If (Transform <> NullAnd (Transform.FormulaCount <> 0Then
            Formula := Transform.FormulaItem[0];
            SummaryStat := Formula.Method.Summary[Transform.CreateCoord(Null)];
            Stat.SummaryStatistics := SummaryStat;
        End If;
    End If;
    // Получаем диапазон ячеек, выделенных в uiErAnalyzerNet1
    Grid := uiErAnalyzerNet1.ErAnalyzer.ErAnalyzer.Grid;
    TabSheet := Grid.TabSheet;
    TabSelection := TabSheet.View.Selection;
    If TabSelection.Range.IsCell Then
        Range := Grid.SpecificRange[EaxRangeType.ertInternal];
    Else
        Range := TabSelection.Range;
    End If;
    // Получаем значения в выделенном диапазоне
    Arr := New ArrayList.Create();
    For i := Range.Left To Range.Right Do
        For j := Range.Top To Range.Bottom Do
            Arr.Add(TabSheet.CellValue[j, i]);
        End For;
    End For;
    // Передаем значения для построения дерева
    Stat.Values := Arr.ToArray();
    // Исключаем часть статистик из построения дерева
    Stat.IncludeStatistics[TsStatisticsType.tstSkew] := False;
    Stat.IncludeStatistics[TsStatisticsType.tstKurt] := False;
    // Включаем в построение дерева только рассчитанные статистики
    Stat.CalculatedOnly := True;
    // Отстраиваем дерево
    Tree := Stat.Execute();
    If Tree = Null Then
        Return;
    End If;
    HashT := New Hashtable.Create();
    For i := 0 To Tree.Count - 1 Do
        ParentNode := Null;
        If Tree.ParentNode[i] <> -1 Then
            ParentNode := HashT[Tree.ParentNode[i]] As ITreeListNode;
        End If;
        StatNode := treeListNet1.CtrlBox.Nodes.AddChild(ParentNode, Tree.Name[i]);
        If Tree.Type[i] = TsStatisticsTreeNodeType.tstntStatistics Then
            StatNode.ColumnText[1] := Tree.Value[i].ToString();
            StatNode.ColumnText[2] := Tree.ShortName[i].ToString();
            System.Diagnostics.Debug.WriteLine(Tree.StatNode[Tree.Data[i] As TsStatisticsType]);
        End If;
        HashT[i] := StatNode;
    End For;
    HashT.Clear();
    treeListNet1.CtrlBox.Nodes.TreeControl.InnerRoot.Expand(True);
End Sub UserProc;

См. также:

ITsStatistics