Invert transfer function models to estimate input series.

armax.inverse.sim(
  DATA,
  a_1 = 0,
  a_2 = 0,
  a_3 = 0,
  b_0 = 1,
  b_1 = 0,
  b_2 = 0,
  b_3 = 0,
  pars = NULL,
  delay = 0,
  init = 0,
  rain.factor = 1.1,
  rises.only = FALSE,
  use.Qm = TRUE,
  use.fft.method = FALSE,
  constrain.fft = TRUE,
  mass.balance = use.fft.method,
  scale.window = NA
)

Arguments

DATA

time-series-like object with columns Q (streamflow) and optionally P (precipitation).

a_1

Placeholder

a_2

Placeholder

a_3

Placeholder

b_0

Placeholder

b_1

Placeholder

b_2

Placeholder

b_3

Placeholder

pars

Placeholder

delay

delay (lag time / dead time) in number of time steps.

init

Placeholder

rain.factor

Placeholder

rises.only

Placeholder

use.Qm

Placeholder

use.fft.method

Placeholder

constrain.fft

Placeholder

mass.balance

Placeholder

scale.window

Placeholder

References

...

Author

Felix Andrews felix@nfrac.org

Examples


## baseflow filtering using two-store unit hydrograph
data(Murrindindi)
x <- Murrindindi[1:1000, ]

## case 1 (preferred): streamflow + rainfall data constrained
## such that effective rainfall is less than observed rainfall
foo <- hydromad(x,
  sma = "armax.inverse", routing = "armax",
  rfit = list("inverse", order = c(2, 1))
)
#> Warning: did not converge after 12 iterations
foo
#> 
#> Hydromad model with "armax.inverse" SMA and "armax" routing:
#> Start = 1975-06-08, End = 1978-03-03
#> 
#> SMA Parameters:
#>     a_1      a_2      b_0      b_1    delay  
#>  1.4740  -0.4822   0.1413  -0.1331   0.0000  
#> Routing Parameters:
#>     a_1      a_2      b_0      b_1    delay  
#>  1.4740  -0.4822   0.1413  -0.1331   0.0000  
#> TF Structure: S + Q (two stores in parallel)
#>     Poles:0.49, 0.984 
#> 
#> Routing fit info:  list(TRUE, 2) 
xsq <- predict(foo, return_components = TRUE)
xyplot(cbind(observed = x$Q, slow_component = xsq$Xs), superpose = TRUE)


## case 2: using streamflow data only, constrained
## to have effective rainfall only when flow is rising
foo <- hydromad(x$Q,
  sma = "armax.inverse", routing = "armax",
  rfit = list("inverse", order = c(2, 1), rises.only = TRUE)
)
#> Warning: did not converge after 12 iterations
xsq <- predict(foo, return_components = TRUE)
xyplot(cbind(observed = x$Q, slow_component = xsq$Xs), superpose = TRUE)


## case 3: using streamflow data only, unconstrained
foo <- hydromad(x$Q,
  sma = "armax.inverse", routing = "armax",
  rfit = list("inverse", order = c(2, 1))
)
#> Warning: did not converge after 12 iterations
#> Warning: reached maximum number of iterations
xsq <- predict(foo, return_components = TRUE)
xyplot(cbind(observed = x$Q, slow_component = xsq$Xs), superpose = TRUE)