This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
howtos:calibration:projecting_into_history [2009/12/01 13:57] shona.weldon |
howtos:calibration:projecting_into_history [2009/12/01 14:02] shona.weldon |
||
---|---|---|---|
Line 14: | Line 14: | ||
The main danger here is that your linear trend variable, ratioFamPerPerPH[cr,t19101977], goes negative | The main danger here is that your linear trend variable, ratioFamPerPerPH[cr,t19101977], goes negative | ||
- | |||
- | ===== log and exponential lintrend===== | ||
- | Another way is to use lintrend with logarithm and exponential | ||
- | |||
- | <code> | ||
- | local ratioFamPerPer[cr,t19782006] = familiesTot[cr,t19782006] / CTotPop[cr,t19782006] | ||
- | local ratioFamPerPerPH[cr,t19101977] = exp (max (lintrend (loge (ratioFamPerPer[cr,t19782006]); time=1910), 0)) | ||
- | familiesPH[cr,t19101977] = extract (CEEFpop[cr,t18511990]; time:1910..1977) * ratioFamPerPerPH[cr,t19101977] | ||
- | </code> | ||
===== Ratio with linint ===== | ===== Ratio with linint ===== | ||
- | A safer way is to create an extra variable which is the ratio of the first year of pre-history to the first year of history and then linear interpret between these 2 points for the historic period. | + | A safer way is to create an extra variable which is the ratio of the first year of pre-history (ratioFamPerPer1910to1978) to the first year of history and then linear interpret between these 2 points for the historic period. |
<code> | <code> | ||
+ | ! Build an object to hold the time from beginning of pre history to end of history and put in the part we know | ||
local ratioFamPerPer[cr,t19782006] = familiesTot[cr,t19782006] / CTotPop[cr,t19782006] | local ratioFamPerPer[cr,t19782006] = familiesTot[cr,t19782006] / CTotPop[cr,t19782006] | ||
local ratioFamPerPerPHx[cr,t19101977] = changeseq (copyshape (ratioFamPerPer[cr,t19782006]); dim=time, start=1910) | local ratioFamPerPerPHx[cr,t19101977] = changeseq (copyshape (ratioFamPerPer[cr,t19782006]); dim=time, start=1910) | ||
ratioFamPerPerPHx[cr,t19101977] = insert (ratioFamPerPer[cr,t19782006]; time->time:1978) | ratioFamPerPerPHx[cr,t19101977] = insert (ratioFamPerPer[cr,t19782006]; time->time:1978) | ||
+ | |||
+ | ! Multiply the ratioFamPerPer1910to1978 agains against the first year of history and insert that as the first year of pre history | ||
ratioFamPerPerPHx[cr,t19101977] = insert (extract (ratioFamPerPer[cr,t19782006]; time:1978, shrink=on) * \ | ratioFamPerPerPHx[cr,t19101977] = insert (extract (ratioFamPerPer[cr,t19782006]; time:1978, shrink=on) * \ | ||
ratioFamPerPer1910to1978[cr]; time:1910) | ratioFamPerPer1910to1978[cr]; time:1910) | ||
+ | ! Do Linear interpolation between these values | ||
local ratioFamPerPerPH[cr,t19101977] = extract (linint (ratioFamPerPerPHx[cr,t19101977]); time:+0..1977) | local ratioFamPerPerPH[cr,t19101977] = extract (linint (ratioFamPerPerPHx[cr,t19101977]); time:+0..1977) | ||
+ | ! Apply the ratio | ||
familiesPH[cr,t19101977] = extract (CEEFpop[cr,t18511990]; time:1910..1977) * ratioFamPerPerPH[cr,t19101977] | familiesPH[cr,t19101977] = extract (CEEFpop[cr,t18511990]; time:1910..1977) * ratioFamPerPerPH[cr,t19101977] | ||
</code> | </code> | ||
The main problem with this approach is that it is very flat over pre-history time | The main problem with this approach is that it is very flat over pre-history time | ||
+ | |||
+ | ===== log and exponential lintrend===== | ||
+ | Another way is to use lintrend with logarithm and exponential | ||
+ | |||
+ | <code> | ||
+ | local ratioFamPerPer[cr,t19782006] = familiesTot[cr,t19782006] / CTotPop[cr,t19782006] | ||
+ | local ratioFamPerPerPH[cr,t19101977] = exp (max (lintrend (loge (ratioFamPerPer[cr,t19782006]); time=1910), 0)) | ||
+ | familiesPH[cr,t19101977] = extract (CEEFpop[cr,t18511990]; time:1910..1977) * ratioFamPerPerPH[cr,t19101977] | ||
+ | </code> | ||
+ | |||