Your question is interesting; for Moran's I in its raw form does not require a distance matrix. What it requires is a contiguity matrix (which observations are neighbors?) and weights matrix (giving a quantification to said neighborhood).
The inverse distance weights calculated using dist()
is a special case of this - legit, but definitely not a required case of weights, and a distance matrix of a longish object can get out of hand quickly.
What I suggest is:
- calculating the weights matrices and Moran's I within framework of
{spdep}
instead of{ape}
- spdep has a special object for weight matrices, and stores them in a sparse form as a list. This can get handy when working with largish datasets - calculating the neighbors using either KNN (each point has exactly N neighbors) or distance based neighbors (all points within X distance units from a point are its neighbors); both of these can be used with house price data and should handle 1,500 observations with a relative ease
I have written a blog piece about creating the contiguity / weights matrices a while back; you may find it interesting as it includes code: Spatial Neighborhoods ยท Jindra Lacko