Natively built for computing Moran's I on dgCMatrix objects, this routine allows computing the I on large sparse matrices (graphs). Part of its implementation was based on ape::Moran.I, which computes the I for dense matrices.
moran(x, w, normalize.w =TRUE, alternative ="two.sided")
Arguments
x: Numeric vector of size n.
w: Numeric matrix of size n∗n. Weights. It can be either a object of class matrix or dgCMatrix
from the Matrix package.
normalize.w: Logical scalar. When TRUE normalizes rowsums to one (or zero).
alternative: Character String. Specifies the alternative hypothesis that is tested against the null of no autocorrelation; must be of one "two.sided", "less", or "greater".
Returns
A list of class diffnet_moran with the following elements: - observed: Numeric scalar. Observed correlation index.
expected: Numeric scalar. Expected correlation index equal to −1/(N−1).
sd: Numeric scalar. Standard error under the null.
p.value: Numeric scalar. p-value of the specified alternative.
Details
In the case that the vector x is close to constant (degenerate random variable), the statistic becomes irrelevant, and furthermore, the standard error tends to be undefined (NaN).
Examples
if(require("ape")){# Generating a small random graph set.seed(123) graph <- rgraph_ba(t =4) w <- approx_geodesic(graph) x <- rnorm(5)# Computing Moran's I moran(x, w)# Comparing with the ape's package version ape::Moran.I(x, as.matrix(w))}