Thresholds are each vertexes exposure at the time of adoption. Substantively it is the proportion of adopters required for each ego to adopt. (see exposure).

threshold(
  obj,
  toa,
  t0 = min(toa, na.rm = TRUE),
  include_censored = FALSE,
  lags = 0L,
  ...
)

Arguments

obj

Either a \(n\times T\) matrix (eposure to the innovation obtained from exposure) or a diffnet object.

toa

Integer vector. Indicating the time of adoption of the innovation.

t0

Integer scalar. See toa_mat.

include_censored

Logical scalar. When TRUE (default), threshold

lags

Integer scalar. Number of lags to consider when computing thresholds. lags=1 defines threshold as exposure at \(T-1\), where T is time of adoption. levels are not reported for observations adopting in the first time period.

...

Further arguments to be passed to exposure.

Value

A vector of size \(n\) indicating the threshold for each node.

Details

By default exposure is not computed for vertices adopting at the first time period, include_censored=FALSE, as estimating threshold for left censored data may yield biased outcomes.

See also

Threshold can be visualized using plot_threshold

Other statistics: bass, classify_adopters(), cumulative_adopt_count(), dgr(), ego_variance(), exposure(), hazard_rate(), infection(), moran(), struct_equiv(), vertex_covariate_dist()

Author

George G. Vega Yon & Thomas W. Valente

Examples

# Generating a random graph with random Times of Adoption
set.seed(783)
toa <- sample.int(4, 5, TRUE)
graph <- rgraph_er(n=5, t=max(toa) - min(toa) + 1)

# Computing exposure using Structural Equivalnece
adopt <- toa_mat(toa)
se <- struct_equiv(graph)
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to max; returning -Inf
se <- lapply(se, function(x) methods::as((x$SE)^(-1), "dgCMatrix"))
expo <- exposure(graph, adopt$cumadopt, alt.graph=se)
#> Warning: The -alt.graph- will be treated as 0/1 graph (value=FALSE).

# Retrieving threshold
threshold(expo, toa)
#>   threshold
#> 1      1.00
#> 2      0.25
#> 3      0.75
#> 4      0.00
#> 5      0.75

# We can do the same by creating a diffnet object
diffnet <- as_diffnet(graph, toa)
threshold(diffnet, alt.graph=se)
#> Warning: The -alt.graph- will be treated as 0/1 graph (value=FALSE).
#>   threshold
#> 1      1.00
#> 2      0.25
#> 3      0.75
#> 4      0.00
#> 5      0.75