Fits an extremal minimum spanning tree, where the edge weights are:
negative maximized log-likelihoods of the bivariate Huesler-Reiss distributions, if
method = "ML". See Engelke and Hitz (2020) for details.empirical extremal variogram, if
method = "vario". See Engelke and Volgushev (2022) for details.empirical extremal correlation, if
method = "chi". See Engelke and Volgushev (2022) for details.
Usage
emst(data, p = NULL, method = c("vario", "ML", "chi"), cens = FALSE)Arguments
- data
Numeric \(n \times d\) matrix, where
nis the number of observations anddis the dimension.- p
Numeric between 0 and 1 or
NULL. IfNULL(default), it is assumed that thedataare already on multivariate Pareto scale. Else,pis used as the probability in the functiondata2mpareto()to standardize thedata.- method
One of
"vario", "ML", "chi". Default ismethod = "vario".- cens
Logical. This argument is considered only if
method = "ML". IfTRUE, then censored likelihood contributions are used for components below the threshold. By default,cens = FALSE.
Value
List consisting of:
graphAn
igraph::graphobject. The fitted minimum spanning tree.GammaNumeric \(d \times d\) estimated variogram matrix \(\Gamma\) corresponding to the fitted minimum spanning tree.
References
Engelke S, Hitz AS (2020).
“Graphical models for extremes (with discussion).”
J. R. Stat. Soc. Ser. B Stat. Methodol., 82, 871--932.
Engelke S, Volgushev S (2022).
“Structure learning for extremal tree models.”
J. R. Stat. Soc. Ser. B Stat. Methodol..
doi:10.1111/rssb.12556
, Forthcoming, https://rss.onlinelibrary.wiley.com/doi/pdf/10.1111/rssb.12556.
See also
Other structure estimation methods:
data2mpareto(),
eglatent(),
eglearn(),
fit_graph_to_Theta()
Examples
## Fitting a 4-dimensional HR minimum spanning tree
my_graph <- igraph::graph_from_adjacency_matrix(
rbind(
c(0, 1, 0, 0),
c(1, 0, 1, 1),
c(0, 1, 0, 0),
c(0, 1, 0, 0)
),
mode = "undirected"
)
n <- 100
Gamma_vec <- c(.5, 1.4, .8)
complete_Gamma(Gamma = Gamma_vec, graph = my_graph) ## full Gamma matrix
#> [,1] [,2] [,3] [,4]
#> [1,] 0.0 0.5 1.9 1.3
#> [2,] 0.5 0.0 1.4 0.8
#> [3,] 1.9 1.4 0.0 2.2
#> [4,] 1.3 0.8 2.2 0.0
set.seed(123)
my_data <- rmpareto_tree(n, "HR", tree = my_graph, par = Gamma_vec)
my_fit <- emst(my_data, p = NULL, method = "ML", cens = FALSE)