cross_validate_concentration {nprotreg} | R Documentation |
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)