Analytica User FAQs/Expressions - How to
Analytica Expression FAQs
(In progress -- two things need to occur. Common questions need to be collected here and organized, and then answers need to be added. Feel free to contribute to either aspect)
- How do I access a single row of an array?
- How do I represent a square matrix?
- How do I re-index an array, exchanging one index, I, for another of the same length, J?
- How do I aggregate an array from a fine grain index (e.g., days) to a coarser index (e.g., months)?
- How do I generate independent distributions across an index, for example, so that Noise := Normal(0,1) is independent for each time point t?
- How do I define a chance variable so that its uncertainty is correlated with an existing chance variable?
- How do I create my own User-Defined function?
- How do I create a custom distribution function?
How do I model X (Depreciation)?
- Depreciation (offset in time)?
To model depreciation, two inputs are required: 1) a schedule of spend to be depreciated 2) a depreciation schedule
For this example, the index time is 10 year series with a constant startYear=2008 time:=sequence (startYear,startYear+9,1)
Example depreciation schedule is a 5yr MACRS depreciation schedule entered as a variable: Table(time)(.2,.32,.192,.1152,.1152,.0576,0,0,0,0)
SpendOverTime is a variable indexed by time with the capital spend amounts as desired: table(time)(0,0,111,0,0,0,0,0,0,0)
Create a user defined function: Function_Depreciation, Parameters: (SpendOverTime,DepreciationSchedule), Definition: index depr_years = copyindex(time); var deprStartyr:=time; sum(if time-depr_years+1<1 then 0 else slice(SpendOverTime,time,Depr_years-startYear+1)*slice(depreciationSchedule,time,time-depr_years+1),depr_years)
Then create a depreciation test variable to check the result Variable: DepreciationTest definition: function_Depreciation(spendOverTime,DepreciationSchedule)
What does Analytica use to represent missing values?
Analytica has no special MissingValue constant.
I would recommend using Null. However, because Analytica does not interpret this (or any other constant) as meaning a missing value, you will need to insert appropriate conditional logic to deal with the missing values in the appropriate fashion. For example:
Sum( MaybeMissing(x), I )
Product( MaybeMissing(x,1), I )
where Function MaybeMissing( x ; defX : optional )
Definition: if x=Null then if IsNotSpecified(defX) then 0 else defX else X