View source: R/EvoWeaver-GOPreds.R
MoranI | R Documentation |
Calculates Moran's I to measure spatial autocorrelation for a set of signals dispersed in space.
MoranI(values, weights, alternative='two.sided')
values |
Numeric vector containing signals for each point in space. |
weights |
Distances between each point in space. This should be a numeric object of class |
alternative |
For hypothesis testing against the null of no spatial correlation, how should a p-value be calculated? Should be one of |
Moran's I is a measure of how much the spatial arrangement of a set of datapoints correlates with the value of each datapoint. The index takes a value in the range [-1,1]
, with values close to 1 indicating high correlation between location and value (points have increasingly similar values as they increase in proximity), values close to -1 indicating anticorrelation(points have increasingly different values as they increase in proximity), and values close to 0 indicating no correlation.
The value itself is calculated as:
I = \frac{N}{W}\frac{\sum_i^N \sum_j^N w_{ij}(x_i - \bar x)(x_j - \bar x)}{\sum_i^N (x_i - \bar x)^2}
Here, N
is the number of points, w_{ij}
is the distance between points i
and j
, W = \sum_{i,j} w_{ij}
(the sum of all the weights), x_i
is the value of point i
, and \bar x
is the sample mean of the values.
Moran's I has a closed form calculation for variance and expected value, which are calcalated within this function. The full form of the variance is fairly complex, but all the equations are available for reference here.
A p-value is estimated using the expected value and variance using a null hypothesis of no spatial autocorrelation, and the alternative hypothesis specified in the alternative
argument. Note that if fewer than four datapoints are supplied, the variance of Moran's I is infinite. The function will return a standard deviation of Inf
and a p-value of 1 in this case.
A list
object containing the following named values:
observed
: The value of Moran's I (numeric in the range [-1,1]
).
expected
: The expected value of Moran's I for the input data.
sd
: The standard deviation of Moran's I for the input data.
p.value
: The p-value for the input data, calculated with the alternative hypothesis as specified in alternative
.
Aidan Lakshman ahl27@pitt.edu
Moran, P. A. P., Notes on Continuous Stochastic Phenomena. Biometrika, 1950. 37(1): 17-23.
Gittleman, J. L. and M. Kot., Adaptation: Statistics and a Null Model for Estimating Phylogenetic Effects. Systematic Zoology, 1990. 39:227-241.
# Make a distance matrix for a set of 50 points
# These are just random numbers in the range [0.1,2]
NUM_POINTS <- 50
distmat <- as.dist(matrix(runif(NUM_POINTS**2, 0.1, 2),
ncol=NUM_POINTS))
# Generate some random values for each of the points
vals <- runif(NUM_POINTS, 0, 3)
# Calculate Moran's I
MoranI(vals, distmat, alternative='two.sided')
# effect size should be pretty small
# and p-value close to 0.5
# since this is basically random data
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.