Computes descriptive statistics for a sample of 3-D orientations (lines or planes) using spherical statistics. The function calculates the mean resultant vector, concentration parameter, and confidence cone for the mean direction, performs an eigenvalue / eigenvector decomposition of the orientation matrix, estimates distribution parameters for Watson bipolar, Watson girdle, and Bingham distributions, and returns several diagnostic plots (stereonet, eigenvalue ratio plot, and PGR ternary diagram).
Arguments
- trd
Numeric vector of trend values in degrees, or an unquoted column name when
datais supplied. For lines: trend of the lineation. For planes: dip direction or strike depending ontype.- plg
Numeric vector of plunge values in degrees, or an unquoted column name when
datais supplied. For lines: plunge of the lineation. For planes: dip angle.- data
A data frame (or tibble) containing the columns referenced by
trdandplg. DefaultNULL(use vectors directly).- conf.level
Numeric. Confidence level for mean-direction and eigenvector confidence cones/ellipses. Default
0.95.- type
Character. How to interpret the input orientations:
"line"(default) Trend and plunge of a lineation.
"dir"Dip direction and dip angle of a plane (converted internally to the pole).
"strike"Strike (right-hand rule) and dip angle of a plane (converted internally to the pole).
- plot
Character. Which stereonet to include in the output:
"all"(default) Data points, mean vector with confidence cone (gold), and all three eigenvectors with their confidence cones (red, green, blue).
"eig"Data points and eigenvectors with confidence cones only.
"mean"Data points and mean vector with confidence cone only.
Value
A named list with the following components:
eigen_values1 × 3 matrix of normalised eigenvalues \(S_1 \ge S_2 \ge S_3\) of the orientation matrix.
eigen_vectors3 × 3 data frame of eigenvectors (direction cosines), columns V1–V3.
orientation_matrix3 × 3 orientation (scatter) matrix.
trend_plunge2 × 3 matrix with trend (row 1) and plunge (row 2) of each eigenvector in degrees.
dir_dip2 × 3 matrix with dip direction (row 1) and dip (row 2) of each eigenvector in degrees.
vector_statsTibble with mean direction statistics:
trd,plg,strike,dir,dip, resultant lengthR, mean resultant lengthRbar, concentration parameterkappa, confidence cone half-widthcone(degrees), and sample sizeN.axis_stats_watsonTibble with confidence cone half-widths for each eigenvector (
V1_cone,V2_cone,V3_cone) and estimated concentration parameters for the Watson bipolar (kappa_bipolar) and Watson girdle (kappa_girdle) distributions.axis_stats_anisoData frame (3 × 3) with Bingham κ values and Watson confidence ellipse semi-axes (degrees) for each eigenvector.
PointGirdleRandomTibble of fabric indices:
P(point/cluster),G(girdle),R(random),B(= 1 − R), eigenvalue ratios \(S_1/S_2\), \(S_1/S_3\), \(S_2/S_3\), log-ratiosr1andr2, Woodcock's shapeKand strengthCparameters, intensity indexI, and distance indexD.eigenplotA ggplot object: log-ratio eigenvalue plot (\(\ln(S_2/S_3)\) vs \(\ln(S_1/S_2)\)) with K-lines and C-isolines.
pgrplotA ggtern object: Point–Girdle–Random ternary diagram.
stereoplotA ggplot equal-area stereonet according to the
plotargument.
References
Fisher, N. I., Lewis, T., & Embleton, B. J. J. (1987). Statistical analysis of spherical data. Cambridge University Press.
Mardia, K. V., & Jupp, P. E. (2000). Directional Statistics. John Wiley & Sons.
Woodcock, N. H. (1977). Specification of fabric shapes using an eigenvalue method. Geological Society of America Bulletin, 88(9), 1231–1236. https://doi.org/10.1130/0016-7606(1977)88%253C1231:SOFSUA%253E2.0.CO;2
Vollmer, F. W. (1990). An application of eigenvalue methods to structural domain analysis. Geological Society of America Bulletin, 102(6), 786–791. https://doi.org/10.1130/0016-7606(1990)102%253C0786:AAOEMT%253E2.3.CO;2
Lisle, R. J. (1985). The use of the orientation tensor for the description and statistical testing of fabrics. Journal of Structural Geology, 7(1), 115–117. https://doi.org/10.1016/0191-8141(85)90119-1
See also
Other directional statistics:
dir_aov_spher_ax(),
dir_aov_spher_vec(),
dir_stats_circ(),
rose_diag_circ(),
rose_diag_spher()
Examples
# Lines supplied as plain vectors
set.seed(123)
trds <- runif(50, 40, 80)
plgs <- runif(50, 10, 50)
res <- dir_stats_spher(trds, plgs)
res$vector_stats
#> # A tibble: 1 × 13
#> trd plg strike dir dip R Rbar kappa cone N x y z
#> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <int> <dbl> <dbl> <dbl>
#> 1 60.7 29.6 151. 241. 60.4 48.3 0.966 29.1 3.80 50 0.425 0.759 0.494
res$stereoplot
# Planes given as dip direction / dip, eigenvectors only on stereonet
dir_stats_spher(trds, plgs, type = "dir", plot = "eig")
#> $eigen_values
#> V1 V2 V3
#> lambda 47.7667 1.7460 0.4873
#> S 0.9553 0.0349 0.0097
#>
#> $eigen_vectors
#> V1 V2 V3
#> x -0.2301643 0.4246250 -0.8756243305
#> y -0.4190570 0.7688369 0.4829917857
#> z 0.8783027 0.4781040 0.0009832548
#>
#> $orientation_matrix
#> [,1] [,2] [,3]
#> [1,] 3.218914 4.971111 -9.302181
#> [2,] 4.971111 9.534007 -16.938923
#> [3,] -9.302181 -16.938923 37.247079
#>
#> $trend_plunge
#> V1 V2 V3
#> trd 241.22 61.09 151.12
#> plg 61.44 28.56 0.06
#>
#> $dir_dip
#> V1 V2 V3
#> dir 61.22 241.09 331.12
#> dip 28.56 61.44 89.94
#>
#> $vector_stats
#> # A tibble: 1 × 13
#> trd plg strike dir dip R Rbar kappa cone N x y
#> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <int> <dbl> <dbl>
#> 1 241. 61.4 331. 61.2 28.6 48.9 0.977 43.1 3.10 50 -0.231 -0.419
#> # ℹ 1 more variable: z <dbl>
#>
#> $axis_stats_watson
#> # A tibble: 1 × 5
#> V1_cone V2_cone V3_cone kappa_bipolar kappa_girdle
#> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 3.11 2.76 71.7 22.9 -51.3
#>
#> $axis_stats_aniso
#> V1 V2 V3
#> bingham kappa 0.000 -16.255 -51.302
#> watson max ellipse 3.883 14.936 14.951
#> watson min ellipse 2.010 3.778 1.679
#>
#> $PointGirdleRandom
#> # A tibble: 1 × 13
#> P G R B I D K C s1.s2 s1.s3 s2.s3 r1
#> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 0.920 0.0503 0.0292 0.971 4.35 0.933 2.59 4.59 27.4 98.0 3.58 1.28
#> # ℹ 1 more variable: r2 <dbl>
#>
#> $eigenplot
#>
#> $pgrplot
#>
#> $stereoplot
#>
# From a data frame
csv_path <- system.file("spherical_data_ax_bp.csv", package = "GMisc")
df <- utils::read.csv(csv_path)
res2 <- dir_stats_spher(dip_direction, dip, data = df,
conf.level = 0.90, type = "dir")
res2$axis_stats_watson
#> # A tibble: 1 × 5
#> V1_cone V2_cone V3_cone kappa_bipolar kappa_girdle
#> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 2.93 2.30 0 12.6 -14.1
res2$eigenplot