Ниже приведен пример использования операции GetMs для расчёта уравнения. В запросе передаются: экземпляр открытого контейнера моделирования, шаблон расчёта уравнения и параметры выполнения операции. В ответе приходит экземпляр модели, содержащей уравнение с результатами расчёта.
Для выполнения примера уравнение должно рассчитываться методом «Фильтр Ходрика-Прескотта».
{
"Envelope" :
{
"Body" :
{
"GetMs" :
{
"tMs" :
{
"id" : "S23!M!S!C1"
},
"tArg" :
{
"pattern" :
{
"obInst" : "false",
"all" : "false",
"item" :
{
"key" : "3317",
"model" :
{
"transform" :
{
"formulas" :
{
"method" : ""
}
}
}
}
},
"execParams" :
{
"k" : "0",
"scenarioKeys" : "",
"execMethod" : "true",
"execEvaluateSeries" : "true"
}
}
}
}
}
}
{
"Envelope" :
{
"Body" :
{
"GetMsResult" :
{
"id" :
{
"id" : "S23!M!S!C1"
},
"meta" :
{
"item" :
{
"k" : "3317",
"id" : "OBJ3317",
"n" : "MyInputVavable[t] = HPFilter(MyInputVavable[t], Лямбда = 100.000)",
"vis" : "1",
"type" : "Model",
"modelMd" :
{
"transform" :
{
"formulas" :
{
"its" :
{
"it" :
[
{
"k" : "0",
"kind" : "HodrickPrescottFilter",
"method" :
{
"hodrickPrescottFilter" :
{
"missingData" :
{
"specifiedVector" : "", "method" : "None", "methodParameter" : "5", "specifiedValue" : "0" }, "smoothingParameter" : "100.000000", "smoothingParameterMode" : "EditDirectly", "power" : "3.000000", "smSmoothingParameter" : "100.000000", "explained" :
{
"slice" :
{
"k" : "0",
"id" : "261",
"n" : "MyInputVavable",
"vis" : "1",
"variableKey" : "3319",
"stubKey" : "2805",
"selections" :
{
"its" :
{
"Item" :
{
"id" :
{
"id" : "2818"
},
"variant" : "261"
}
}
},
"aggregator" : "None",
"parametrizedDimensions" :
{
"its" :
{
"Item" :
{
"dimension" : "0",
"parameter" : "0"
}
}
},
"unitInfo" :
{
"unit" : "4294967295",
"measure" : "4294967295",
"baseUnit" : "4294967295",
"unitsDimensionKey" : "0"
},
"level" : "None"
},
"lag" : "",
"key" : "0",
"termToText" : "{MyInputVavable[t]}",
"termToInnerText" : "@_3319:0[]",
"termInfo" :
{
"k" : "4294967295",
"lag" : "0",
"inversion" :
{
"type" : "None",
"lag" : "PrecidingValue",
"previousLag" : "-1",
"seasonality" : "None",
"dependence" : "Linear",
"K" : "3"
}
},
"unitInfo" :
{
"unit" : "4294967295",
"measure" : "4294967295",
"baseUnit" : "4294967295",
"unitsDimensionKey" : "0"
}
}
},
"name" : "Y = HPFilter(X, Лямбда = 100.000)",
"evaluateSeries" :
{
"its" :
{
"Item" :
{
"scenarioKey" : "4294967295",
"fact" :
{
"d" :
[
"1.000000",
"-1.700000",
"7.200000",
"-1.000000",
"5.000000",
"0.200000",
"6.600000",
"-0.500000", "3.200000", "2.000000", "3.000000", "6.200000", "7.100000", "5.800000", "2.800000", "3.700000", "5.600000",
"3.200000",
"3.600000",
"8.000000",
"7.000000",
"NaN",
"NaN"
]
},
"modelling" :
{
"d" : [ "1.148945", "1.464407", "1.778379", "2.057729", "2.323538", "2.566313", "2.803322", "3.028174",
"3.272441", "3.532416", "3.803666", "4.066435", "4.292928", "4.476689", "4.639331", "4.815700", "5.022248", "5.264271",
"5.552843",
"5.878395",
"6.211829",
"NaN",
"NaN"
]
},
"residuals" :
{
"d" :
[ "-0.148945", "-3.164407", "5.421621", "-3.057729", "2.676462", "-2.366313", "3.796678", "-3.528174", "-0.072441",
"-1.532416", "-0.803666", "2.133565", "2.807072", "1.323311", "-1.839331", "-1.115700", "0.577752", "-2.064271", "-1.952843",
"2.121605",
"0.788171",
"NaN",
"NaN"
]
}
}
},
"dates" :
{
"it" : [ "1990A1", "1991A1", "1992A1", "1993A1", "1994A1", "1995A1", "1996A1", "1997A1",
"1998A1", "1999A1", "2000A1", "2001A1", "2002A1", "2003A1", "2004A1", "2005A1", "2006A1", "2007A1",
"2008A1", "2009A1", "2010A1", "2011A1", "2012A1", "2013A1", "2014A1", "2015A1", "2016A1", "2017A1",
"2018A1",
"2019A1",
"2020A1"
]
}
},
"inversionInfo" :
{
"type" : "None",
"lag" : "PrecidingValue",
"previousLag" : "-1", "seasonality" : "None", "dependence" : "Linear", "K" : "3" } }, "calendarLevel" : "Year", "outputSliceKey" : "0" } ]
} } }, "warnings" : "" } } } } } } }
Функция GetMsHpf рассчитывает указанное уравнение. Входные параметры: экземпляр контейнера моделирования; ключ рассчитываемого уравнения. В результате выполнения функция возвращает модель, содержащую рассчитанное уравнение. Результаты расчёта выводятся в окно консоли. Для вывода результатов используются вспомогательные процедуры: PrintArray, PrintSeries, описанные в разделе «Расчёт уравнения».
Для выполнения примера уравнение должно рассчитываться методом «Фильтр Ходрика-Прескотта».
public static MsItem GetMsHpf(MsId ms, ulong eqKey)
{
var getMsOp = new GetMs();
// Задаем параметры выполнения операции
getMsOp.tMs = ms;
getMsOp.tArg = new GetMsArg()
{ // Задаем шаблон извлечения данных
pattern = new MsMdPattern()
{
obInst = false,
all = false,
item = new MsItemPattern()
{ // Указываем ключ рассчитываемого уравнения
key = eqKey,
model = new MsModelPattern()
{
transform = new MsFormulaTransformPattern()
{
formulas = new TsFormulaPattern()
{
method = new TsMethodPattern() { }
}
}
}
}
}, // Задаем параметры расчёта уравнения
execParams = new MsMdExecParams()
{
k = 0,
execMethod = true,
execEvaluateSeries = true,
scenarioKeys = new long[] { }
}
};
// Создаем прокси-объект для выполнения операции
var somClient = new SomPortTypeClient();
GetMsResult getMsResult = somClient.GetMs(getMsOp);
MsItem model = getMsResult.meta.item;
// Выводим ошибки и предупреждения
MsModel eq = model.modelMd;
if (eq.warnings != null)
{
Console.WriteLine("-- Предупреждения --");
Console.WriteLine("".PadRight(3) + printArray(eq.warnings));
}
if (eq.error == null) //Проверяем, возникли ли ошибки при расчёте уравнения
{ // Уравнение рассчитано без ошибок
// Получаем результаты расчёта
TsFormula formula = eq.transform.formulas.its.GetValue(0) as TsFormula;
TsHodrickPrescottFilterMethod hpf = formula.method.hodrickPrescottFilter;
// Получаем значение параметра сглаживания и выводим в окно консоли
Console.WriteLine("-- Параметр сглаживания --");
Console.WriteLine(hpf.smSmoothingParameter);
// Получаем рассчитанные значения и выводим в окно консоли
MsEvaluateSeriesResult seriesRes = formula.method.evaluateSeries;
printSeries(seriesRes);
}
else // При расчёте уравнения возникли ошибки
{
Console.WriteLine("-- Ошибки --");
Console.WriteLine(eq.error);
}
// Возвращаем модель, содержащую уравнение
return model;
}
См. также:
GetMs: Операция | Фильтр Ходрика-Прескотта
SOAP