Below is the example of using the SetMs operation to edit equation parameters. The request contains an instance of opened modeling container, parameters of operation execution, equation settings for theLinear Regression method, and the pattern for getting changed data. After execution the operation returns the model that contains the changed equation.
Executing the example requires that the equation contains two input and one output variables.
{ "SetMs" : { "tMs" : { "id" : "AANMHJILOENBFOAEOEFKAJEHHPFAIKEEHKCHDNNBKCKKKJOB!M!S!CLPLNPJILOENBFOAEIJIBDDKFMKDOMMNEOJPICACBBMFBKAHD" }, "tArg" : { "pattern" : { "obInst" : "true", "item" : { "key" : "89669", "problem" : { "metamodel" : { "calculationChain" : "Change" } } } }, "meta" : { "item" : { "k" : "89669", "type" : "Problem", "problemMd" : { "metamodel" : { "calculationChain" : { "its" : { "Item" : { "k" : "4", "type" : "Model", "model" : { "transform" : { "formulas" : { "its" : { "it" : [ { "k" : "0", "kind" : "LinearRegression", "method" : { "linearRegression" : { "constantMode" : "ManualEstimate", "constantValue" : "0.5", "autoSelection" : { "isActive" : "true", "criterion" : "R2", "min" : "2", "max" : "3" }, "confidenceLevel" : "0.85", "ARMA" : { "orderAR" : { "l" : "1" } }, "missingData" : "", "explanatories" : { "its" : { "Item" : { "k" : "0", "expression" : "@_2:0[] * 8", "operands" : { "its" : { "Item" : { "k" : "0", "slice" : { "k" : "0", "id" : "1", "n" : "MyInputVavable", "vis" : "true", "variableKey" : "2", "stubKey" : "89671", "selections" : { "its" : { "Item" : { "id" : { "id" : "89683" }, "variant" : "1" } } }, "aggregator" : "None", "parametrizedDimensions" : { "its" : { "Item" : { "dimension" : "0", "parameter" : "0" } } }, "unitInfo" : { "unit" : "4294967295", "measure" : "4294967295", "baseUnit" : "4294967295", "unitsDimensionKey" : "0" }, "level" : "Year" } } } }, "expressionText" : "", "aggregationAttrKey" : "0", "inversedExpressionText" : "", "missingData" : { "method" : "Casewise" }, "applyMissingData" : "true", "customOptions" : { "isPDLTerm" : "true", "lagLengthK" : "1", "polinomialDegreeP" : "1", "pdlConstraint" : "None" }, "inversion" : { "type" : "TS", "dependence" : "Linear" }, "included" : "true", "lag" : "1" } } } } } } ] } } } } } } } } } } }, "metaGet" : { "obInst" : "true", "scenarios" : "Get", "period" : "true", "item" : { "key" : "89669", "problem" : { "metamodel" : { "calculationChain" : "Get", "calcChainPattern" : { "modelPattern" : { "transform" : { "formulaCount" : "true", "formulas" : { "method" : "" }, "equationsFormula" : { "method" : "" }, "kind" : "true" } } }, "visualControllerPattern" : { "variableRubricatorKey" : "true", "useSourceName" : "false", "freeVariables" : "true", "levelFormat" : "Short" } }, "scenarios" : "Get", "details" : "true", "useSavedCoefficients" : "true" } } } } } }
{ "SetMsResult" : { "id" : { "id" : "AANMHJILOENBFOAEOEFKAJEHHPFAIKEEHKCHDNNBKCKKKJOB!M!S!CLPLNPJILOENBFOAEIJIBDDKFMKDOMMNEOJPICACBBMFBKAHD" }, "meta" : { "obInst" : { "obDesc" : { "@fullUrl" : "http:\/\/v-shp-development.dev.fs.fsight.world\/", "@isShortcut" : "0", "@isLink" : "0", "@ver" : "4", "@hf" : "0", "i" : "MODELSPACE", "n" : "Modeling container", "k" : "1581", "c" : "5121", "p" : "1580", "h" : "0", "hasPrv" : "0", "ic" : "0", "isPermanent" : "1", "isTemp" : "0" } }, "dirty" : "0", "period" : { "start" : "1970-01-01", "end" : "2020-12-31" }, "scenarios" : { "nodes" : { "it" : [ { "@isFolder" : "0", "k" : "1628", "id" : "OBJ1628", "n" : "Basic", "vis" : "1", "scenDesc" : { "@fullUrl" : "http:\/\/v-shp-development.dev.fs.fsight.world\/", "@isShortcut" : "0", "@isLink" : "0", "@ver" : "0", "@hf" : "0", "i" : "OBJ1628", "n" : "Basic", "k" : "1628", "c" : "5124", "p" : "1627", "h" : "0", "hasPrv" : "0", "ic" : "0" }, "internalKey" : "1629" }, { "@isFolder" : "0", "k" : "5371", "id" : "OBJ5371", "n" : "Basic (copy1)", "vis" : "1", "scenDesc" : { "@fullUrl" : "http:\/\/v-shp-development.dev.fs.fsight.world\/", "@isShortcut" : "0", "@isLink" : "0", "@ver" : "0", "@hf" : "0", "i" : "OBJ5371", "n" : "Basic (copy1)", "k" : "5371", "c" : "5124", "p" : "1627", "h" : "0", "hasPrv" : "0", "ic" : "0" }, "internalKey" : "5372" } ] } }, "item" : { "k" : "89669", "id" : "MODEL_NEW", "n" : "MODEL_NEW", "vis" : "1", "type" : "Problem", "problemMd" : { "metamodel" : { "k" : "89670", "calculationChain" : { "its" : { "Item" : [ { "k" : "1", "n" : "MyInputVavable", "vis" : "1", "type" : "Variable", "excluded" : "0", "graphMeta" : "{"Geometry":{"x":20,"y":10,"width":150,"height":50},"ChartOptions":{"chart":{"defaultSeriesType":"line","mixed":true,"backgroundColor":"rgba(0, 0, 0, 0.000000)"},"plotOptions":{"series":{"dataLabels":{"formatter":"%Autovalue","dataFormat":"#,##0.00"}}},"tooltip":{"formatter":"Value: %Autovalue\nDate: %PointName","enabled":true,"backgroundType":"none","style":{"fontFamily":"Arial","fontSize":"12px","color":"#000000"}},"yAxis":[{"labels":{"enabled":true,"dataFormat":"#,##0.00"},"title":{"text":""}}],"xAxis":{"tickInterval":2,"labels":{},"title":{}},"series":[{"entryKey":1,"scenarioKey":4294967295,"serieType":"fact","showInLegend":true,"type":"line","color":"rgba(129, 129, 129, 1)","borderColor":"rgba(129, 129, 129, 1)","borderWidth":0,"lineColor":"rgba(129, 129, 129, 1)","zIndex":1,"legendIndex":0,"visible":true,"background":{"color":"rgba(129, 129, 129, 1)","type":"color"},"marker":{"enabled":false,"symbol":"circle","fillColor":"#FFFFFF","lineWidth":1.5,"lineColor":null},"dataLabels":{"formatter":"%Autovalue"},"trendLine":{}}]}}", "chainVariable" : { "slice" : { "k" : "0", "id" : "MyInputVavable|A", "n" : "MyInputVavable|A", "vis" : "1", "variableKey" : "1", "stubKey" : "89671", "selections" : { "its" : { "Item" : { "id" : { "id" : "89683" }, "variant" : "1" } } }, "aggregator" : "None", "parametrizedDimensions" : { "its" : { "Item" : { "dimension" : "0", "parameter" : "0" } } }, "unitInfo" : { "unit" : "4294967295", "measure" : "4294967295", "baseUnit" : "4294967295", "unitsDimensionKey" : "0" }, "level" : "Year" }, "fullName" : "MyInputVavable|A", "originalName" : "MyInputVavable", "originalShortName" : "MyInputVavable", "useCustomName" : "0" } }, { "k" : "2", "n" : "MyOutputVavable", "vis" : "1", "type" : "Variable", "excluded" : "0", "graphMeta" : "{"Geometry":{"x":30,"y":140,"width":150,"height":50}}", "chainVariable" : { "slice" : { "k" : "0", "id" : "MyOutputVavable|A", "n" : "MyOutputVavable|A", "vis" : "1", "variableKey" : "2", "stubKey" : "89671", "selections" : { "its" : { "Item" : { "id" : { "id" : "89683" }, "variant" : "2" } } }, "aggregator" : "None", "parametrizedDimensions" : { "its" : { "Item" : { "dimension" : "0", "parameter" : "0" } } }, "unitInfo" : { "unit" : "4294967295", "measure" : "4294967295", "baseUnit" : "4294967295", "unitsDimensionKey" : "0" }, "level" : "Year" }, "fullName" : "MyOutputVavable|A", "originalName" : "MyOutputVavable", "originalShortName" : "MyOutputVavable", "useCustomName" : "0" } }, { "k" : "4", "id" : "OBJ4", "n" : "MyOutputVavable|A[t] = 10 - MyInputVavable[t] * 3.14, (From parent)-(From parent)", "vis" : "1", "type" : "Model", "excluded" : "0", "graphMeta" : "", "model" : { "transform" : { "formulaCount" : "1", "formulas" : { "its" : { "it" : [ { "k" : "0", "kind" : "LinearRegression", "method" : { "linearRegression" : { "constantMode" : "ManualEstimate", "constantValue" : "0.5", "confidenceLevel" : "0.85", "ARMA" : { "orderAR" : { "l" : "1" }, "orderMA" : "", "calcInitMode" : "Auto", "initAR" : "", "initMA" : "", "initIntercept" : "NaN", "estimationMethod" : "LevenbergMarquardt", "tolerance" : "0.0001", "maxIteration" : "500", "coefficientsAR" : { "estimate" : "", "standardError" : "", "tStatistic" : "", "probability" : "" }, "coefficientsMA" : { "estimate" : "", "standardError" : "", "tStatistic" : "", "probability" : "" }, "diff" : "0", "diffSeas" : "1", "orderARSeas" : "", "orderMASeas" : "", "initARSeas" : "", "initMASeas" : "", "periodSeas" : "0", "coefficientsARSeas" : { "estimate" : "", "standardError" : "", "tStatistic" : "", "probability" : "" }, "coefficientsMASeas" : { "estimate" : "", "standardError" : "", "tStatistic" : "", "probability" : "" }, "useARMAasInstrums" : "1", "useAnalyticDeriv" : "1", "useBackCast" : "1" }, "missingData" : { "specifiedVector" : "", "method" : "Casewise", "methodParameter" : "5", "specifiedValue" : "0", "specifiedTerm" : { "k" : "4294967295" } } }, "inversionInfo" : { "type" : "None", "lag" : "PrecidingValue", "previousLag" : "-1", "seasonality" : "None", "dependence" : "Linear", "K" : "3" }, "doUseR" : "0", "supportsR" : "1" }, "calendarLevel" : "Year", "outputSliceKey" : "0" } ] } }, "kind" : "Simple" }, "warnings" : "", "readOnly" : "0" } } ] } }, "visualController" : { "variableRubricatorKey" : "89671", "freeVariables" : { "its" : "" }, "userRPath" : "", "isRExist" : "0" }, "suppressEmptyFilter" : { "suppressEmpty" : "0", "suppressEmptyArea" : "SerieBounds" }, "readOnly" : "0", "variableTestUseR" : "0", "calculateIdentOnFact" : "0" }, "scenarios" : { "its" : "" }, "details" : { "period" : { "identificationStartDate" : "1990-01-01", "identificationEndDate" : "2018-04-24", "forecastStartDate" : "2018-04-25", "forecastEndDate" : "2020-01-01", "identificationStartDateParamID" : "", "identificationEndDateParamID" : "", "forecastStartDateParamID" : "", "forecastEndDateParamID" : "", "autoPeriod" : "0", "identificationStartOffset" : "0", "identificationEndOffset" : "0", "forecastEndOffset" : "0", "isIdentStartCorrect" : "1", "isIdentEndCorrect" : "1", "isForecastEndCorrect" : "1" }, "currentPoint" : "2018-04-25" }, "useSavedCoefficients" : "0", "useScenarios" : "0", "readOnly" : "0" } } } } }
The SetMsLinearRegr function changes the method of equation calculation. Input parameters:
ms. Opened modeling container instance.
modelKey. Key of the model that contains the equation.
eqKey. Equation key.
eq. Opened equation instance. To execute the example, the equation must include input and output variables.
After executing the function returns a model that contains the equation.
public static MsItem SetMsLinearRegr(MsId ms, ulong modelKey, ulong eqKey, MsModel eq) { // Get input variable MsFormulaTransformVariable inp = eq.transform.inputs.its.GetValue(0) as MsFormulaTransformVariable; // Set operation execution parameters var setMsOp = new SetMs(); setMsOp.tMs = ms; setMsOp.tArg = new SetMsArg() { // Set data change pattern pattern = new MsMdPattern() { item = new MsItemPattern() { // Specify model key key = modelKey, problem = new MsProblemPattern() { metamodel = new MsMetaModelPattern() { calculationChain = ListOperation.Change } } } }, // Set data that must be changed meta = new MsMd() { item = new MsItem() { // Specify model key k = modelKey, type = MsItemType.Problem, problemMd = new MsProblem() { metamodel = new MsMetaModel() { calculationChain = new MsCalculationChainEntries() { its = new MsCalculationChainEntry[] { new MsCalculationChainEntry() { k = eqKey, type = MsCalculationChainType.Model, model = new MsModel() { transform = new MsFormulaTransform() { formulas = new TsFormulas() { its = new TsFormula[] { new TsFormula() { kind = TsFormulaKind.LinearRegression, method = new TsMethod() { // Set method calculation parameters linearRegression = new TsLinearRegressionMethod() { constantMode = StatInterceptMode.ManualEstimate, constantValue = 0.5, confidenceLevel = 0.85, ARMA = new SlARMA(){orderAR = new long[] {1}}, missingData = new StatMissingData(){}, // Set explanatory factors explanatories = new MsCompositeFormulaTerms() { simpleTerm = null, termInfo = null, its = new MsCompositeFormulaTerm[] { // Set factor new MsCompositeFormulaTerm() { k = 0, operands = new MsFormulaTerms() { its = new MsFormulaTerm[] { new MsFormulaTerm() { k = 0, slice = inp.slices.its.GetValue(0) as MsFormulaTransformSlice } } }, expressionText = "", inversedExpressionText = "", expression ="@_" + inp.k + ":0[] * 8", aggregationAttrKey = 0, missingData = new StatMissingData(){method = StatMissingDataMethod.Casewise}, applyMissingData = true, unitInfo = null, included = true, lag = 1, inversion = new TsInversion() { type = TsInversionType.TS, dependence = StatDependenceType.Linear }, // Specify that factor is a lag variable customOptions = new MsTermOptions() { isPDLTerm = true, pdlConstraint = PDLConstraintKind.None, lagLengthK = 1, polinomialDegreeP = 1 } } } }, // Set factor autoselection parameters autoSelection = new LinearRegressionAutoSelection() { criterion = StatCriterionType.R2, isActive = true, min = 2, max = 3 } } } } } } } } } } } } } } }, // Set changed data extraction pattern metaGet = new MsMdPattern() { scenarios = ListOperation.Get, period = true, item = new MsItemPattern() { key = modelKey, problem = new MsProblemPattern() { details = true, scenarios = ListOperation.Get, useSavedCoefficients = true, metamodel = new MsMetaModelPattern() { calculationChain = ListOperation.Get, calcChainPattern = new MsCalculationChainPattern() { modelPattern = new MsModelPattern() { transform = new MsFormulaTransformPattern() { kind = true, formulaCount = true, formulas = new TsFormulaPattern() { method = new TsMethodPattern() { } }, equationsFormula = new TsFormulaPattern() { method = new TsMethodPattern() { } } } } }, visualControllerPattern = new MsMetaModelVisualControllerPattern() { variableRubricatorKey = true, levelFormat = MsLevelFormat.Short, useSourceName = false, freeVariables = true } } } } } }; // Create a proxy object for operation execution var somClient = new SomPortTypeClient(); // Set operation execution parameters var result = somClient.SetMs(setMsOp); return result.meta.item; }
See also:
Working with Modeling Container | The Linear Regression Method