User Tools

Site Tools


howtos:feedback:tracking_method_-_deviation_ratio_multiplier

This is an old revision of the document!


Deviation Ratio Multiplier

Define the target, define the model's result from the last iteration and move the leaver by that deviation ratio and try again.

Here's a simple example which is not fully templated but is a good start

<file> creview USDomFDperPerson[com,ts][]

view USGDPConDollar[esect,ts][]

integer $trackStartYr = 2010 integer $trackEndYr = 2035 integer $lastScnYr getobjinfo (USGDPConDollar[esect,ts][2], $lastScnYr; info=sequenceEnd, dim=time)

keep varTarget[tsTrack]

say (“Iteration: ”, $fbViewIteration) if ($fbViewIteration == 1)

string $importEIAData
buildstring ($importEIAData, $home, "/primaryData/energyConsumption/EIARefCase")

say ("Importing EIA GDP to track on")
local EIAUSGDPConDollarTotalx[ts] =  changeseq (copyshape (sum (USGDPConDollar[esect,ts][2]; \
	dim=econSector)); \
	dim=time, start=2008, end=$trackEndYr)

EIAUSGDPConDollarTotalx[ts] = import (; dataFormat="odometer", delimiter=",", firstLine=5, lastLine=5, ignoreExtraCols=on, \
	rowTitles=on, file=$importEIAData/AEO2011-Industrial_Sector_Macroeconomic_Indicators-AEO2011_Reference_Case.csv)
	
local EIAUSGDPConDollarTotal[ts] = EIAUSGDPConDollarTotalx[ts] * 1e9

varTarget[tsTrack] = extract (EIAUSGDPConDollarTotal[ts]; time:$trackStartYr..$trackEndYr)

endif

local varLI[tsTrack] = extract (sum (USGDPConDollar[esect,ts][2]; dim=econSector); time:$trackStartYr..$trackEndYr) local devRatio[tsTrack] = varTarget[tsTrack] - varLI[tsTrack] / varTarget[tsTrack] !table (devRatio[tsTrack], varTarget[tsTrack], varLI[tsTrack]; overlay=on) local creVarLI[com,ts] if ($fbViewIteration == 1)

creVarLI[com,ts] = USDomFDperPerson[com,ts][2]

else

creVarLI[com,ts] = USDomFDperPerson[com,ts][3]

endif

local numNotConv[] = sum (boolgt (devRatio[tsTrack], $fbViewTolerance); dim=all) integer $numNotConv getobjinfo(numNotConv[], $numNotConv; info=dataElement) if ($numNotConv == 0) or ($fbViewIteration == $fbViewMaxIters)

mumble ("   numNotConv = ", $numNotConv, " at iteration ",$fbViewIteration, " stopping due to ")
if ($numNotConv == 0)
	say ("convergence")
else
	say ("maximum iterations")
endif		

! Set the outputs
USDomFDperPerson[com,ts][3] = creVarLI[com,ts]

quit(0)

else

say ("   numNotConv = ", $numNotConv, " at iteration ",$fbViewIteration, " continuing")

endif

local multiplier[ts] = extend (min (max (devRatio[tsTrack], -0.5), 0.5) + 1.0; dim=time, end=$lastScnYr) USDomFDperPerson[com,ts][3] = creVarLI[com,ts] * multiplier[ts]

quit(1) </file?

howtos/feedback/tracking_method_-_deviation_ratio_multiplier.1304362914.txt.gz · Last modified: 2011/05/02 19:01 by shona.weldon