net.addatt {stream.net}R Documentation

Add Attributes to Segments of Stream Network

Description

Add attributes to segments of a net.object, generated by either a functional relationship with optional noise added, or a distributional property.

Usage

  net.addatt (net, name=NULL, func=NULL, dist=NULL,
    ind="shreve", sd=0.02, arg1=NULL, arg2=NULL, 
    boundscaling=FALSE, outscaling=FALSE, prob=0.01, 
    min=0, max=1, vector=TRUE)

Arguments

net A net.object.
name name of the attribute to be added (if ! vector)).
func name of the functional form, see details.
dist name of the distribution function, see details.
ind the independent variable for functional values.
sd standard deviation for added noise to func output. Used as the proportion of the range of the produced values.
arg1 first argument to distribution functions, e.g., shape1, mean, etc. See details.
arg2 second argument to distribution functions.
boundscaling if TRUE, scale distribution values to either absolute bounds of distribution or to the prob and/or 1-prob quantile; implies outscaling is true.
outscaling if TRUE, scale return values to [min, max].
prob probability value for scaling distributions.
min minimum value for scaling output values.
max maximum value for scaling output values.
vector if TRUE, return a vector else a field in $segs.

Details

Functional relationships create a new attribute as a function of an existing attribute. Supported functions:
Linear
NegLinear
Exponential
NegExponential
Sigmoid
RevSigmoid
Logarithmic
RevLogarithmic
Sinusoidal
Quadratic

Distributions create a new attribute with designated distributional properties. The assignment of distributed values is not controlled for spatial autocorrelation. Supported distributions:
Uniform = runif (n, min=arg1, max=arg2)
Normal = rnorm (n, mean=arg1, sd=arg2)
Ramp = rbeta (n, shape1=arg1, shape2=arg2)
NegRamp = rbeta (n, shape1=arg1, shape2=arg2)
Exponential = rbeta (n, shape1=arg1, shape2=arg2)
NegExponential = rbeta (n, shape1=arg1, shape2=arg2)
Lognormal = rlnorm (n, meanlog=arg1, sdlog=arg2)
Weibull = rweibull (n, shape=arg1, scale=arg2)
Unimodal = rbeta (n, shape1=arg1, shape2=arg2)
Logistic = rlogis (n, location=arg1, scale=arg2)

where the default values of arg1 and arg2 are:
Uniform = c(0, 1)
Normal = c(0, 1)
Ramp = c(2, 1)
NegRamp = c(1, 2)
Exponential = c(100, 1)
NegExponential = c(1, 100)
Lognormal = c(0, 0.4)
Weibull = c(100, 100)
Unimodal = c(2, 2)
Logistic = c(0, 1)

and the Boundscaling values are:
Uniform = c(0, 1)
Normal = c(qnorm (prob, mean=arg1, sd=arg2), qnorm (1-prob, mean=arg1, sd=arg2))
Ramp = c(0, 1)
NegRamp = c(0, 1)
Exponential = c(0, 1)
NegExponential = c(0, 1)
Lognormal = c(0, qlnorm (1-prob, meanlog=arg1, sdlog=arg2))
Weibull = c(0, qweibull (1-prob, shape=arg1, scale=arg2))
Unimodal = c(0, 1)
Logistic = c(qlogis (prob, location=arg1, scale=arg2), qlogis (1-prob, location=arg1, scale=arg2))

Value

If vector is TRUE, then a vector of the attribute values in segment order, else a net.object with the attribute added to $segs.

Author(s)

Denis White, white.denis@epa.gov

See Also

net.object net.addsegs runif rnorm rlnorm rbeta rweibull rlogis

Examples

  # Q model random net
  net <- net.qmodel (10)

  # add segments
  net <- net.addsegs (net)

  # add attribute based on normal distribution
  net <- net.addatt (net, name="normal", dist="Normal",
    boundscaling=TRUE, vector=FALSE)
  classes <- net.group (net, segatt="normal", ngroups=7,
    method="equalInterval")
  net.map (net, group=classes$group, lwd=2)
  net.map.key (0.8, 0.1, labels=round(classes$cuts, 2), 
    sep=0, head="normal", horizontal=FALSE)

  # make attribute based on log of shreve order
  att <- net.addatt (net, name="slope", func="Logarithmic",
    ind="shreve", outscaling=TRUE, vector=TRUE)
  att <- (1 - att) * 10
  classes <- net.group (net, att, ngroups=7,
    method="equalInterval")
  net.map (net, group=classes$group, lwd=2)
  net.map.key (0.6, 0.1, labels=round(classes$cuts, 0), 
    sep=0, head="log.shreve", horizontal=TRUE)

[Package stream.net version 1.0.6 Index]