Dispersion measured using the Fréchet variance, i.e the sum of the squared geodesic distances between all vectors and a specified vector.
Usage
geodesic_var(x, ...)
# S3 method for class 'Vec3'
geodesic_var(x, y = NULL, ...)
# S3 method for class 'Line'
geodesic_var(x, y = NULL, ...)
# S3 method for class 'Plane'
geodesic_var(x, y = NULL, ...)
# S3 method for class 'Ray'
geodesic_var(x, y = NULL, ...)
# S3 method for class 'Pair'
geodesic_var(x, y = NULL, group = NULL, ...)Arguments
- x
object of class
"Vec3","Line","Ray","Plane","Pair", or"Fault".- ...
parameters passed to
geodesic_meanvariance_ray()(ifxis a Ray),geodesic_meanvariance_line()(ifxis a Vec3, Line or Plane) orgeodesic_mean_pair()(ifxis a Pair or a Fault).- y
Only for variance. object of class
"Vec3","Line","Ray","Plane","Pair", or"Fault"about which the Fréchet variance should be calculated for. IfNULL(the default), Fréchet variance about the Fréchet mean.- group
character. Symmetry group of
x. One of"orthorhombic"(line-in-plane symmetry, e.g. foliation-lineations, cylindrical fold orientations, triaxial ellipsoid orientations, and earthquake focal mechanisms, and olivine),"triclinic"(ray-in-plane symmetry, e.g. faults with slip directions),"trigonal"(e.g. alpha-quartz),"hexagonal"(e.g. beta-quartz), or"trivial"(rotations). IfNULL, the group will be automatically picked based on the class ofx.
Value
the Fréchet variance as a numeric number. Because distances in SO(3) never exceed \(\pi\), the maximum possible variance is \(\frac{\pi^2}{2} \approx 4.93\).
Details
The variance of a dataset \({x_1, \ldots, x_n}\) about a vector \(y\) is defined as
$$ \Psi(x) = \frac{1}{2n} \sum_{i=1}^n d_G(y, x_i)^2$$
where \(d_G(x, y)\) is the geodesic distance between vectors \(x\) and \(y\) (see angle()).
References
Davis, J. R., & Titus, S. J. (2017). Modern methods of analysis for three-dimensional orientational data. Journal of Structural Geology, 96, 65–89. https://doi.org/10.1016/j.jsg.2017.01.002
See also
geodesic_mean() for the Fréchet mean, sph_mean() for the arithmetic mean, projected_mean() for projected mean
Examples
set.seed(20250411)
geodesic_var(example_planes, example_planes[1,])
#> [1] 0.559469
geodesic_var(example_planes)
#> [1] 0.2656372