Title: | Nonparametric Rotations for Sphere-Sphere Regression |
Version: | 1.1.1 |
Description: | Fits sphere-sphere regression models by estimating locally weighted rotations. Simulation of sphere-sphere data according to non-rigid rotation models. Provides methods for bias reduction applying iterative procedures within a Newton-Raphson learning scheme. Cross-validation is exploited to select smoothing parameters. See Marco Di Marzio, Agnese Panzera & Charles C. Taylor (2018) <doi:10.1080/01621459.2017.1421542>. |
Depends: | R (≥ 3.3.0) |
License: | MIT + file LICENSE |
Encoding: | UTF-8 |
RoxygenNote: | 7.2.3 |
Suggests: | testthat |
Imports: | foreach, methods, stats |
NeedsCompilation: | no |
Packaged: | 2023-09-28 08:19:05 UTC; giova |
Author: | Charles C. Taylor [aut], Giovanni Lafratta [aut, cre], Stefania Fensore [aut] |
Maintainer: | Giovanni Lafratta <giovanni.lafratta@unich.it> |
Repository: | CRAN |
Date/Publication: | 2023-09-28 08:40:02 UTC |
nprotreg: Nonparametric Rotations for Sphere-Sphere Regression.
Description
The nprotreg package provides several categories of functions.
Regression functions
Regression functions provide support for simulating and fitting 3-dimensional spherical regression models.
Conversion functions
Conversion functions transform coordinates of points on a 3-dimensional sphere with unit radius and center at the origin.
Converts Cartesian to Spherical Coordinates.
Description
The Cartesian coordinates of points on a 3-dimensional sphere with unit radius and center at the origin are converted to the equivalent longitude and latitude coordinates, measured in radians.
Usage
convert_cartesian_to_spherical(cartesian_coords)
Arguments
cartesian_coords |
A matrix whose rows contain the Cartesian coordinates of the specified points. |
Value
A matrix of rows containing the longitude and latitude of specific points on a 3-dimensional sphere.
See Also
http://mathworld.wolfram.com/SphericalCoordinates.html.
Other Conversion functions:
convert_spherical_to_cartesian()
Examples
library(nprotreg)
# Define the Cartesian coordinates of the North and South Poles.
north_pole <- cbind(0, 0, 1)
south_pole <- cbind(0, 0, -1)
cartesian_coords <- rbind(north_pole, south_pole)
# Get the corresponding Spherical coordinates.
spherical_coords <- convert_cartesian_to_spherical(cartesian_coords)
Converts Spherical to Cartesian Coordinates.
Description
The longitude and latitude coordinates of points on a 3-dimensional sphere with unit radius and center at the origin are converted to the equivalent Cartesian coordinates.
Usage
convert_spherical_to_cartesian(spherical_coords)
Arguments
spherical_coords |
A matrix of rows containing the longitude and latitude, measured in radians, of specific points on a 3-dimensional sphere. |
Value
A matrix whose rows contain the Cartesian coordinates of the specified points.
See Also
http://mathworld.wolfram.com/SphericalCoordinates.html.
Other Conversion functions:
convert_cartesian_to_spherical()
Examples
library(nprotreg)
# Define the Spherical coordinates of the North and South Poles.
north_pole <- cbind(0, pi / 2)
south_pole <- cbind(0, - pi / 2)
spherical_coords <- rbind(north_pole, south_pole)
# Get the corresponding Cartesian coordinates.
cartesian_coords <- convert_spherical_to_cartesian(spherical_coords)
Cross-validates The Concentration Parameter In A 3D Spherical Regression.
Description
Returns a cross-validated value for the concentration parameter in a 3D regression, relating specific explanatory points to response ones, given a weighting scheme for the observed data set. This function supports the method for sphere-sphere regression proposed by Di Marzio et al. (2018).
Usage
cross_validate_concentration(
concentration_upper_bound = 10,
explanatory_points,
response_points,
weights_generator = weight_explanatory_points,
number_of_expansion_terms = 1,
number_of_iterations = 1,
allow_reflections = FALSE
)
Arguments
concentration_upper_bound |
A scalar numeric value representing
the upper end-point of the interval to be searched for the required minimizer.
Defaults to |
explanatory_points |
An m-by-3 matrix whose rows contain the Cartesian coordinates of the explanatory points used to calculate the regression estimators. |
response_points |
An m-by-3 matrix whose rows contain the Cartesian coordinates of the response points corresponding to the explanatory points. |
weights_generator |
A function that, given a matrix of n
evaluation points, returns an m-by-n matrix whose
j-th column contains
the weights assigned to the explanatory points while analyzing the
j-th evaluation point. Defaults to |
number_of_expansion_terms |
The number of terms to be included
in the expansion of the matrix exponential applied while
approximating a local rotation matrix. Must be |
number_of_iterations |
The number of
rotation fitting steps to be executed.
At each step, the points estimated during the previous step
are exploited as the current explanatory points. Defaults to |
allow_reflections |
A logical scalar value. If set to |
Details
Function weights_generator
must be prototyped as having the
following three arguments:
evaluation_points
a matrix whose n rows are the Cartesian coordinates of given evaluation points.
explanatory_points
a matrix whose m rows are the Cartesian coordinates of given explanatory points.
concentration
A non negative scalar whose reciprocal value is proportional to the bandwidth applied while estimating a spherical regression model.
It is also expected that weights_generator
will return
a non NULL
numerical m-by-n matrix whose j-th column contains
the weights assigned to the explanatory points while analyzing the
j-th evaluation point.
Value
A list having two components,
concentration
, a scalar, numeric value representing the cross-validated
concentration for the specified 3D regression, and
objective
, the value of the cross-validating objective function at argument concentration
.
References
Marco Di Marzio, Agnese Panzera & Charles C. Taylor (2018) Nonparametric rotations for sphere-sphere regression, Journal of the American Statistical Association, <doi:10.1080/01621459.2017.1421542>.
See Also
Other Regression functions:
fit_regression()
,
get_equally_spaced_points()
,
get_skew_symmetric_matrix()
,
simulate_regression()
,
simulate_rigid_regression()
,
weight_explanatory_points()
Examples
library(nprotreg)
# Define a matrix of explanatory points.
number_of_explanatory_points <- 50
explanatory_points <- get_equally_spaced_points(
number_of_explanatory_points)
# Define a matrix of response points by simulation.
local_rotation_composer <- function(point) {
independent_components <- (1 / 2) *
c(exp(2.0 * point[3]), - exp(2.0 * point[2]), exp(2.0 * point[1]))
}
local_error_sampler <- function(point) {
rnorm(3)
}
response_points <- simulate_regression(explanatory_points,
local_rotation_composer,
local_error_sampler)
# Define an upper bound for concentration.
concentration_upper_bound <- 1
# Use default weights generator.
weights_generator <- weight_explanatory_points
# Cross-validate concentration parameter.
cv_info <- cross_validate_concentration(
concentration_upper_bound,
explanatory_points,
response_points,
weights_generator,
number_of_expansion_terms = 1,
number_of_iterations = 2,
allow_reflections = FALSE
)
# Get the cross-validated concentration value.
cat("cross-validated concentration value: \n")
print(cv_info$concentration)
Computes the Exponential of a 3D Skew Symmetric Matrix.
Description
The exponential of a skew-symmetric matrix is computed by means of the Rodrigues' formula.
Usage
expm(skew_symmetric_matrix)
Arguments
skew_symmetric_matrix |
A 3-by-3 skew-symmetric matrix. |
Value
A 3-by-3 rotation matrix representing the exponential of the specified skew-symmetric matrix.
Fits a 3D Spherical Regression.
Description
Returns 3D spherical points obtained by locally rotating the specified evaluation points, given an approximated model for local rotations and a weighting scheme for the observed data set. This function implements the method for sphere-sphere regression proposed by Di Marzio et al. (2018).
Usage
fit_regression(
evaluation_points,
explanatory_points,
response_points,
concentration,
weights_generator = weight_explanatory_points,
number_of_expansion_terms = 1,
number_of_iterations = 1,
allow_reflections = FALSE
)
Arguments
evaluation_points |
An n-by-3 matrix whose rows contain the Cartesian coordinates of the points at which the regression will be estimated. |
explanatory_points |
An m-by-3 matrix whose rows contain the Cartesian coordinates of the explanatory points used to calculate the regression estimators. |
response_points |
An m-by-3 matrix whose rows contain the Cartesian coordinates of the response points corresponding to the explanatory points. |
concentration |
A non negative scalar whose reciprocal value is proportional to the bandwidth applied while estimating a spherical regression model. |
weights_generator |
A function that, given a matrix of n
evaluation points, returns an m-by-n matrix whose
j-th column contains
the weights assigned to the explanatory points while analyzing the
j-th evaluation point. Defaults to |
number_of_expansion_terms |
The number of terms to be included
in the expansion of the matrix exponential applied while
approximating a local rotation matrix. Must be |
number_of_iterations |
The number of
rotation fitting steps to be executed.
At each step, the points estimated during the previous step
are exploited as the current explanatory points. Defaults to |
allow_reflections |
A logical scalar value. If set to |
Details
Function weights_generator
must be prototyped as having the
following three arguments:
evaluation_points
a matrix whose n rows are the Cartesian coordinates of given evaluation points.
explanatory_points
a matrix whose m rows are the Cartesian coordinates of given explanatory points.
concentration
A non negative scalar whose reciprocal value is proportional to the bandwidth applied while estimating a spherical regression model.
It is also expected that weights_generator
will return
a non NULL
numerical m-by-n matrix whose j-th column contains
the weights assigned to the explanatory points while analyzing the
j-th evaluation point.
Function fit_regression
supports parallel execution.
To setup parallelization, you can exploit the
doParallel package.
Otherwise, fit_regression
will be executed sequentially and, when called the
first time, you will receive the following
## Warning: executing %dopar% sequentially: no parallel backend registered
This is completely safe and by design.
Value
A number_of_iterations
-length vector of lists, with the s
-th
list having two components,
fitted_response_points
, an n-by-3 matrix whose rows contain
the Cartesian coordinates of the fitted points at iteration s
, and
explanatory_points
, an m-by-3 matrix whose rows contain
the Cartesian coordinates of the points exploited as explanatory at
iteration s
.
References
Marco Di Marzio, Agnese Panzera & Charles C. Taylor (2018) Nonparametric rotations for sphere-sphere regression, Journal of the American Statistical Association, <doi:10.1080/01621459.2017.1421542>.
See Also
Other Regression functions:
cross_validate_concentration()
,
get_equally_spaced_points()
,
get_skew_symmetric_matrix()
,
simulate_regression()
,
simulate_rigid_regression()
,
weight_explanatory_points()
Examples
library(nprotreg)
# Create 100 equally spaced design points on the sphere.
number_of_explanatory_points <- 100
explanatory_points <- get_equally_spaced_points(
number_of_explanatory_points
)
# Define the regression model, where the rotation for a given "point"
# is obtained from the exponential of a skew-symmetric matrix with the
# following components.
local_rotation_composer <- function(point) {
independent_components <- (1 / 8) *
c(exp(2.0 * point[3]), - exp(2.0 * point[2]), exp(2.0 * point[1]))
}
# Define an error term given by a small rotation, similarly defined
# from a skew-symmetric matrix with random entries.
local_error_sampler <- function(point) {
rnorm(3, sd = .01)
}
# Generate the matrix of responses, using the regression model
# and the error model.
response_points <- simulate_regression(
explanatory_points,
local_rotation_composer,
local_error_sampler
)
# Create some "test data" for which the response will be predicted.
evaluation_points <- rbind(
cbind(.5, 0, .8660254),
cbind(-.5, 0, .8660254),
cbind(1, 0, 0),
cbind(0, 1, 0),
cbind(-1, 0, 0),
cbind(0, -1, 0),
cbind(.5, 0, -.8660254),
cbind(-.5, 0, -.8660254)
)
# Define a weight function for nonparametric fit.
weights_generator <- weight_explanatory_points
# Set the concentration parameter.
concentration <- 5
# Or obtain this by cross-validation: see
# the `cross_validate_concentration` function.
# Fit regression.
fitted_model <- fit_regression(
evaluation_points,
explanatory_points,
response_points,
concentration,
weights_generator,
number_of_expansion_terms = 1,
number_of_iterations = 2
)
# Extract the point corresponding to the
# second evaluation point fitted at
# the first iteration.
cat("Point fitted at iteration 1 corresponding to the second evaluation point: \n")
cat(fitted_model[[1]]$fitted_response_points[2, ], "\n")
## Not run:
# Create some plots to view the results.
# 3D plot.
library(rgl)
plot3d(
explanatory_points,
type = "n",
xlab = "x",
ylab = "y",
zlab = "z",
box = TRUE,
axes = TRUE
)
spheres3d(0, 0, 0, radius = 1, lit = FALSE, color = "white")
spheres3d(0, 0, 0, radius = 1.01, lit = FALSE, color = "black", front = "culled")
text3d(c(0, 0, 1), text = "N", adj = 0)
ll <- 10
vv1 <- (ll - (0:(ll))) / ll
vv2 <- 1 - vv1
plot3d(explanatory_points, add = TRUE, col = 2)
for (i in 1:dim(explanatory_points)[1]) {
m <- outer(vv1, explanatory_points[i,], "*") +
outer(vv2, response_points[i,], "*")
m <- m / sqrt(apply(m ^ 2, 1, sum))
lines3d(m, col = 3)
}
plot3d(evaluation_points, add = TRUE, col = 4)
for (i in 1:dim(evaluation_points)[1]) {
m <- outer(vv1, evaluation_points[i,], "*") +
outer(vv2, fitted_model[[1]]$fitted_response_points[i,], "*")
m <- m / sqrt(apply(m ^ 2, 1, sum))
lines3d(m, col = 1)
}
# 2D plot.
explanatory_spherical_coords <- convert_cartesian_to_spherical(explanatory_points)
response_spherical_coords <- convert_cartesian_to_spherical(response_points)
plot(
x = explanatory_spherical_coords[, 1],
y = explanatory_spherical_coords[, 2],
pch = 20,
cex = .7,
col = 2,
xlab = "longitude",
ylab = "latitude"
)
for (i in 1:dim(explanatory_spherical_coords)[1]) {
column <- 1
if ((explanatory_spherical_coords[i, 1] - response_spherical_coords[i, 1]) ^ 2 +
(explanatory_spherical_coords[i, 2] - response_spherical_coords[i, 2]) ^ 2 > 4)
column <- "grey"
lines(
c(explanatory_spherical_coords[i, 1], response_spherical_coords[i, 1]),
c(explanatory_spherical_coords[i, 2], response_spherical_coords[i, 2]),
col = column
)
}
evaluation_spherical_coords <- convert_cartesian_to_spherical(
evaluation_points
)
fitted_response_spherical_coords <- convert_cartesian_to_spherical(
fitted_model[[1]]$fitted_response_points
)
points(
x = evaluation_spherical_coords[, 1],
y = evaluation_spherical_coords[, 2],
pch = 20,
cex = .7,
col = 4
)
for (i in 1:dim(evaluation_spherical_coords)[1]) {
column <- 3
if ((evaluation_spherical_coords[i, 1] - fitted_response_spherical_coords[i, 1]) ^ 2 +
(evaluation_spherical_coords[i, 2] - fitted_response_spherical_coords[i, 2]) ^ 2 > 4)
column <- "grey"
lines(
c(evaluation_spherical_coords[i, 1], fitted_response_spherical_coords[i, 1]),
c(evaluation_spherical_coords[i, 2], fitted_response_spherical_coords[i, 2]),
col = column
)
}
## End(Not run)
Generates Equally Spaced Points On A 3D Sphere.
Description
Generates points approximately equally spaced on a 3D sphere.
Usage
get_equally_spaced_points(number_of_points)
Arguments
number_of_points |
A scalar, positive integer representing the number of points to get. |
Value
A number_of_points
-by-3 matrix whose rows
contain the Cartesian coordinates
of the equally spaced points.
See Also
Other Regression functions:
cross_validate_concentration()
,
fit_regression()
,
get_skew_symmetric_matrix()
,
simulate_regression()
,
simulate_rigid_regression()
,
weight_explanatory_points()
Examples
library(nprotreg)
# Define the number of points to get.
number_of_points <- 5
# Get the Cartesian coordinates of the equally spaced points.
equally_spaced_points <- get_equally_spaced_points(number_of_points)
Gets a 3-by-3 Skew Symmetric Matrix.
Description
Returns the 3-by-3 skew symmetric matrix having the specified independent components.
Usage
get_skew_symmetric_matrix(independent_components)
Arguments
independent_components |
A vector containing the independent components of the matrix to get. |
Details
Given a vector of components, say [x,y,z]
, this function
will return matrix
0 | -z | y |
||
z | 0 | -x |
||
-y | x | 0 |
Value
The 3-by-3 skew symmetric matrix corresponding to the specified independent components.
See Also
https://en.wikipedia.org/wiki/Skew-symmetric_matrix.
Other Regression functions:
cross_validate_concentration()
,
fit_regression()
,
get_equally_spaced_points()
,
simulate_regression()
,
simulate_rigid_regression()
,
weight_explanatory_points()
Examples
library(nprotreg)
# Define a vector of independent components.
independent_components <- cbind(1, 2, 3)
# Get the corresponding 3-by-3 skew symmetric matrix.
m <- get_skew_symmetric_matrix(independent_components)
Computes the Logarithm of a 3D Rotation Matrix.
Description
Computes the Logarithm of a 3D Rotation Matrix.
Usage
logm(rotation_matrix)
Arguments
rotation_matrix |
A 3-by-3 rotation matrix. |
Value
A 3-by-3 skew-symmetric matrix representing the logarithm of the specified rotation matrix.
Simulates a 3D Spherical Regression.
Description
Returns the response points corresponding to the specified explanatory points, given a model for local rotations and an error term sampler.
Usage
simulate_regression(
explanatory_points,
local_rotation_composer,
local_error_sampler
)
Arguments
explanatory_points |
An m-by-3 matrix whose rows contain the Cartesian coordinates of the points at which the regression will be simulated. |
local_rotation_composer |
A function that returns a 3-length numeric vector representing the independent components of a skew symmetric matrix local to an explanatory point, given its Cartesian coordinates. |
local_error_sampler |
A function that returns a 3-length numeric vector representing a sampled error term local to an explanatory point, given its Cartesian coordinates. |
Details
Let E
be
the m-by-3 matrix of explanatory points.
This function will return
an m-by-3 matrix whose i
-th row is obtained by
transposition of the following expression:
exp(\Phi(\epsilon(x))) exp(\Phi(s(x))) x
where x
is the transpose of the i
-th row of
E
. Terms \epsilon(x)
and s(x)
are obtained by
evaluating at x
functions local_error_sampler
and
local_rotation_composer
, respectively, while
matrix \Phi(c)
, for a 3-length numeric vector c
, is
the skew symmetric matrix having its independent components
represented by the entries of c
(for a thorough discussion,
see function
get_skew_symmetric_matrix
).
Functions local_error_sampler
and local_rotation_composer
must be prototyped as having one argument, point
,
representing the Cartesian coordinates of a point on a 3D sphere,
and returning a non NULL
numerical object having length
equal to 3
.
Value
An m-by-3 matrix whose rows contain the Cartesian coordinates of the response points corresponding to the explanatory points.
See Also
Other Regression functions:
cross_validate_concentration()
,
fit_regression()
,
get_equally_spaced_points()
,
get_skew_symmetric_matrix()
,
simulate_rigid_regression()
,
weight_explanatory_points()
Examples
library(nprotreg)
# Define a matrix of explanatory points.
explanatory_points <- rbind(
cbind(.5, 0, .8660254),
cbind(-.5, 0, .8660254),
cbind(1, 0, 0),
cbind(0, 1, 0),
cbind(-1, 0, 0),
cbind(0, -1, 0),
cbind(.5, 0, -.8660254),
cbind(-.5, 0, -.8660254)
)
# Define a local rotation composer.
local_rotation_composer <- function(point) {
independent_components <- (1 / 2) *
c(exp(2.0 * point[3]), - exp(2.0 * point[2]), exp(2.0 * point[1]))
}
# Define a local error sampler.
local_error_sampler <- function(point) {
rnorm(3)
}
# Get the corresponding 8-by-3 matrix of response points.
# Rows corresponds to explanatory points,
# columns to Cartesian coordinates.
response_points <- simulate_regression(explanatory_points,
local_rotation_composer,
local_error_sampler)
# Get the response point corresponding to the second
# explanatory point.
cat("Response point corresponding to the second explanatory point: \n")
cat(response_points[2, ], "\n")
Simulates a Rigid 3D Spherical Regression.
Description
Returns the response points corresponding to the specified explanatory points, given a rigid rotation model and an error term sampler.
Usage
simulate_rigid_regression(
explanatory_points,
rotation_matrix,
local_error_sampler
)
Arguments
explanatory_points |
An m-by-3 matrix whose rows contain the Cartesian coordinates of the points at which the regression will be simulated. |
rotation_matrix |
A 3-by-3 rotation matrix. |
local_error_sampler |
A function that returns a 3-length numeric vector representing a sampled error term local to an explanatory point, given its Cartesian coordinates. |
Details
Let E
be
the m-by-3 matrix of explanatory points.
This function will return
an m-by-3 matrix whose i
-th row is obtained by
transposition of the following expression:
exp(\Phi(\epsilon(x))) R x
where x
is the transpose of the i
-th row of
E
and R
is rotation_matrix
.
Term \epsilon(x)
is obtained by
evaluating at x
function local_error_sampler
, while
matrix \Phi(c)
, for a 3-length numeric vector c
, is
the skew symmetric matrix having its independent components
represented by the entries of c
(for a thorough discussion,
see function
get_skew_symmetric_matrix
).
Function local_error_sampler
must be prototyped as having one argument, point
,
representing the Cartesian coordinates of a point on a 3D sphere,
and returning a non NULL
numerical object having length
equal to 3
.
Value
An m-by-3 matrix whose rows contain the Cartesian coordinates of the response points corresponding to the explanatory points.
See Also
Other Regression functions:
cross_validate_concentration()
,
fit_regression()
,
get_equally_spaced_points()
,
get_skew_symmetric_matrix()
,
simulate_regression()
,
weight_explanatory_points()
Examples
library(nprotreg)
# Define a matrix of explanatory points.
explanatory_points <- rbind(
cbind(.5, 0, .8660254),
cbind(-.5, 0, .8660254),
cbind(1, 0, 0),
cbind(0, 1, 0),
cbind(-1, 0, 0),
cbind(0, -1, 0),
cbind(.5, 0, -.8660254),
cbind(-.5, 0, -.8660254)
)
# Define a rotation matrix.
rotation_matrix <- rbind(
cbind(-0.69492055764131177575, 0.71352099052778772403, 0.08929285886191218324),
cbind(-0.19200697279199935297, -0.30378504433947051133, 0.93319235382364695841),
cbind(0.69297816774177023458, 0.63134969938371787723, 0.34810747783026463331)
)
# Define a local error sampler.
local_error_sampler <- function(point) {
rnorm(3)
}
# Get the corresponding 8-by-3 matrix of response points.
# Rows corresponds to explanatory points,
# columns to Cartesian coordinates.
response_points <- simulate_rigid_regression(explanatory_points,
rotation_matrix,
local_error_sampler)
# Get the response point corresponding to the second
# explanatory point.
cat("Response point corresponding to the second explanatory point: \n")
cat(response_points[2, ], "\n")
Weights the Specified Explanatory Points in a 3D Spherical Regression.
Description
Returns the weights assigned to the specified explanatory points for each evaluation point under study, given a concentration parameter.
Usage
weight_explanatory_points(evaluation_points, explanatory_points, concentration)
Arguments
evaluation_points |
An n-by-3 matrix whose rows contain the Cartesian coordinates of the points on which the regression will be estimated. |
explanatory_points |
An m-by-3 matrix whose rows contain the Cartesian coordinates of the explanatory points used to calculate the regression estimators. |
concentration |
A non negative scalar whose reciprocal value is proportional to the bandwidth applied while estimating a spherical regression model. |
Details
Let X
be the m-by-3 matrix of explanatory points, and E
the n-by-3 matrix of evaluation points, and \kappa
the
concentration parameter. This function will return
an m-by-n matrix whose (i,j)
entry is defined as
follows:
exp(\kappa (s(i,j) - 1))
where s(i,j)
is the scalar product of the i
-th row of
X
and the j
-th row of E
.
Value
An m-by-n matrix whose j-th column contains the weights assigned to the explanatory points while analyzing the j-th evaluation point.
See Also
Other Regression functions:
cross_validate_concentration()
,
fit_regression()
,
get_equally_spaced_points()
,
get_skew_symmetric_matrix()
,
simulate_regression()
,
simulate_rigid_regression()
Examples
library(nprotreg)
# Define a matrix of evaluation points.
north_pole <- cbind(0, 0, 1)
south_pole <- cbind(0, 0, -1)
evaluation_points <- rbind(north_pole, south_pole)
# Define a matrix of explanatory points
explanatory_points <- rbind(
cbind(.5, 0, .8660254),
cbind(-.5, 0, .8660254),
cbind(1, 0, 0),
cbind(0, 1, 0),
cbind(-1, 0, 0),
cbind(0, -1, 0),
cbind(.5, 0, -.8660254),
cbind(-.5, 0, -.8660254)
)
# Define a value for the concentration parameter.
concentration <- 1.0
# Get the corresponding 8-by-2 matrix of weights.
# Columns corresponds to evaluation points,
# rows to explanatory ones.
weights <- weight_explanatory_points(evaluation_points,
explanatory_points,
concentration)
# Get the weights assigned to the explanatory points
# while analyzing the second evaluation point.
cat("Weights assigned while analyzing the second evaluation point: \n")
cat(weights[, 2], "\n")