Skip to main content

gLocal

Performs the Gi or Gi* statistic on the x column of the dataframe.
def gLocal(
      dataframe: DataFrame,
      x: String,
      weights: String = "weights",
      permutations: Int = 0,
      star: Boolean = false,
      islandWeight: Double = 0.0): DataFrame =
dataframe
DataFrame
the dataframe to perform the G statistic on
x
String
The column name we want to perform hotspot analysis on
weights
String
The column name containing the neighbors array. The array should be of type Array<Struct<value: T, neighbor: U>>, where each element is a Struct with two fields:
  1. value: The weight for the neighbor (e.g., spatial weight).
  2. neighbor: A Struct containing the data of the neighboring row (schema must match the parent row, excluding the neighbors/weights column itself). You can use wherobots.weighing.add_distance_band_column to generate this column in the required format.
permutations
Int
Not used. Permutation tests are not supported yet. The number of permutations to use for the significance test.
star
Boolean
Specifies whether to calculate the Getis-Ord Gi* statistic.
  • true: Calculates the Gi* statistic, which includes the focal observation (the row itself) in the local sum. When star=true, the weights array must include the focal observation as one of its own neighbors.
  • false: (Default) Calculates the G-statistic, which excludes the focal observation.
islandWeight
Double
Not used. The weight for the simulated neighbor used for records without a neighbor in perm tests

Returns

A DataFrame with the original columns plus the following additional columns:
G
Double
The calculated local G or G* statistic.
E[G]
Double
The expected value of G/G* under spatial randomness.
V[G]
Double
The variance of G/G* under spatial randomness.
Z
Double
The Z-score (standard score) for the statistic.
P
Double
The p-value (significance) derived from the Z-score.

Usage Examples

import org.apache.sedona.stats.clustering.GetisOrd

// Example usage
val result = GetisOrd.gLocal(dataframe, epsilon, minPts)