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.
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,
...
)
The response distribution family. The default is "Gaussian"
.
A spatial stream network object with class SSN
. Random
variables are simulated for each row of ssn.object$obs
.
The spatial stream network to simulate on. Currently only
allowed to be "obs"
for the ssn.object$obs
object.
An object from tailup_params()
specifying
the tailup covariance parameters.
An object from taildown_params()
specifying
the taildown covariance parameters.
An object from euclid_params()
specifying
the Euclidean covariance parameters.
An object from nugget_params()
specifying
the nugget covariance parameters.
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).
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 in data
. The default is 0
.
The number of independent samples to generate. The default
is 1
.
The dispersion value (if relevant).
A numeric vector representing the sample size for each binomial trial.
The default is 1
, which corresponds to a Bernoulli trial for each observation.
A spmodel::randcov_params()
object.
A formula indicating the partition factor.
Other arguments. Not used (needed for generic consistency).
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.
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 distribution
ssn_rpois()
: Simulate from a Poisson distribution
ssn_rnbinom()
: Simulate from a negative binomial distribution
ssn_rbinom()
: Simulate from a binomial distribution
ssn_rbeta()
: Simulate from a beta distribution
ssn_rgamma()
: Simulate from a gamma distribution
ssn_rinvgauss()
: Simulate from an inverse Gaussian distribution
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.
# 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