Simulate random variables on a stream network
Source:R/ssn_simulate.R
, R/ssn_rbeta.R
, R/ssn_rbinom.R
, and 5 more
ssn_simulate.Rd
Simulate random variables on a stream
network with a specific mean and covariance structure. Designed to use
ssn_simulate()
, but individual simulation functions for each
resposne distribution also exist.
Usage
ssn_simulate(
family = "Gaussian",
ssn.object,
network = "obs",
tailup_params,
taildown_params,
euclid_params,
nugget_params,
additive,
mean = 0,
samples = 1,
dispersion = 1,
size = 1,
randcov_params,
partition_factor,
...
)
ssn_rbeta(
ssn.object,
network = "obs",
tailup_params,
taildown_params,
euclid_params,
nugget_params,
dispersion = 1,
mean = 0,
samples = 1,
additive,
randcov_params,
partition_factor,
...
)
ssn_rbinom(
ssn.object,
network = "obs",
tailup_params,
taildown_params,
euclid_params,
nugget_params,
mean = 0,
size = 1,
samples = 1,
additive,
randcov_params,
partition_factor,
...
)
ssn_rgamma(
ssn.object,
network = "obs",
tailup_params,
taildown_params,
euclid_params,
nugget_params,
dispersion = 1,
mean = 0,
samples = 1,
additive,
randcov_params,
partition_factor,
...
)
ssn_rinvgauss(
ssn.object,
network = "obs",
tailup_params,
taildown_params,
euclid_params,
nugget_params,
dispersion = 1,
mean = 0,
samples = 1,
additive,
randcov_params,
partition_factor,
...
)
ssn_rnbinom(
ssn.object,
network = "obs",
tailup_params,
taildown_params,
euclid_params,
nugget_params,
dispersion = 1,
mean = 0,
samples = 1,
additive,
randcov_params,
partition_factor,
...
)
ssn_rnorm(
ssn.object,
network = "obs",
tailup_params,
taildown_params,
euclid_params,
nugget_params,
mean = 0,
samples = 1,
additive,
randcov_params,
partition_factor,
...
)
ssn_rpois(
ssn.object,
network = "obs",
tailup_params,
taildown_params,
euclid_params,
nugget_params,
mean = 0,
samples = 1,
additive,
randcov_params,
partition_factor,
...
)
Arguments
- family
The response distribution family. The default is
"Gaussian"
.- ssn.object
A spatial stream network object with class
SSN
. Random variables are simulated for each row ofssn.object$obs
.- network
The spatial stream network to simulate on. Currently only allowed to be
"obs"
for thessn.object$obs
object.- tailup_params
An object from
tailup_params()
specifying the tailup covariance parameters.- taildown_params
An object from
taildown_params()
specifying the taildown covariance parameters.- euclid_params
An object from
euclid_params()
specifying the Euclidean covariance parameters.- nugget_params
An object from
nugget_params()
specifying the nugget covariance parameters.- additive
The name of the variable in
ssn.object
that is used to define spatial weights. Can be quoted or unquoted. For the tailup covariance functions, these additive weights are used for branching. Technical details that describe the role of the additive variable in the tailup covariance function are available in Ver Hoef and Peterson (2010).- mean
A numeric vector representing the mean.
mean
must have length 1 (in which case it is recycled) or length equal to the number of rows indata
. The default is0
.- samples
The number of independent samples to generate. The default is
1
.- dispersion
The dispersion value (if relevant).
- size
A numeric vector representing the sample size for each binomial trial. The default is
1
, which corresponds to a Bernoulli trial for each observation.- randcov_params
A
spmodel::randcov_params()
object.- partition_factor
A formula indicating the partition factor.
- ...
Other arguments. Not used (needed for generic consistency).
Value
If samples
is 1, a vector of random variables for each row of ssn.object$obs
is returned. If samples
is greater than one, a matrix of random variables
is returned, where the rows correspond to each row of ssn.object$obs
and the columns
correspond to independent samples.
Details
Random variables are simulated via the product of the covariance matrix's
square (Cholesky) root and independent standard normal random variables
on the link scale, which are then used to simulate a relevant variable on the response scale
according to family
.
Computing the square root is a significant
computational burden and likely unfeasible for sample sizes much past 10,000.
Because this square root only needs to be computed once, however, it is
nearly the sample computational cost to call ssn_rnorm()
for any value
of samples
.
If not using ssn_simulate()
, individual simulation functions for
each response distribution do exist:
ssn_rnorm()
: Simulate from a Gaussian distributionssn_rpois()
: Simulate from a Poisson distributionssn_rnbinom()
: Simulate from a negative binomial distributionssn_rbinom()
: Simulate from a binomial distributionssn_rbeta()
: Simulate from a beta distributionssn_rgamma()
: Simulate from a gamma distributionssn_rinvgauss()
: Simulate from an inverse Gaussian distribution
References
Ver Hoef, J.M. and Peterson, E.E. (2010) A moving average approach for spatial statistical models of stream networks (with discussion). Journal of the American Statistical Association 105, 6–18. DOI: 10.1198/jasa.2009.ap08248. Rejoinder pgs. 22–24.
Examples
# Copy the mf04p .ssn data to a local directory and read it into R
# When modeling with your .ssn object, you will load it using the relevant
# path to the .ssn data on your machine
copy_lsn_to_temp()
temp_path <- paste0(tempdir(), "/MiddleFork04.ssn")
mf04p <- ssn_import(temp_path, overwrite = TRUE)
tailup <- tailup_params("exponential", de = 0.1, range = 200)
taildown <- taildown_params("exponential", de = 0.4, range = 300)
euclid <- euclid_params("spherical", de = 0.2, range = 1000, rotate = 0, scale = 1)
nugget <- nugget_params("nugget", nugget = 0.1)
ssn_simulate("gaussian", mf04p, "obs", tailup, taildown, euclid, nugget, additive = "afvArea")
#> [1] 1.45785676 0.76604939 -0.12910867 -0.35397583 0.19671514 -0.07588754
#> [7] 0.57765723 -0.81538653 1.75224086 0.72687527 -0.65778712 -1.73063057
#> [13] -0.11226686 0.46230814 1.30434670 0.39980221 0.34100800 1.58922294
#> [19] -0.56814769 -1.01022346 -0.83452440 -0.41155550 -0.59774668 -0.31112518
#> [25] 0.09688149 -0.48593585 1.22120747 1.56687390 -0.15460358 0.89744186
#> [31] -0.43396443 -0.53227176 -0.12537756 0.97001333 -0.24502012 1.62890851
#> [37] -0.15335130 -0.78883608 -0.80805800 -1.18710291 -0.35885264 0.13201272
#> [43] 0.56219793 0.73955602 -0.88882700