Position of a state with respect to a trajectory
Source:R/state_to_trajectory.R
state_to_trajectory.Rd
Define the position of a state with respect to a reference trajectory based on its distance from the trajectory and the length and direction of the trajectory.
Usage
state_to_trajectory(
d,
trajectories,
states,
target_states,
reference,
method,
coordStates = NULL
)
Arguments
- d
Either a symmetric matrix or an object of class
dist
containing the dissimilarities between each pair of states.- trajectories
Vector indicating the trajectory or site to which each state in
d
belongs.- states
Vector of integers indicating the order of the states in
d
for each trajectory (assign 1 if the state does not belong to any trajectory).- target_states
Vector of integers indicating the indices in
trajectories
andstates
of the ecological states for which their relative position will be calculated.- reference
Vector of the same class of
trajectories
or object of classRETRA
indicating the reference trajectory to calculate the relative position of thetarget_states
- method
Method to calculate the distance and relative position of the
target_states
and thereference
. One of"nearest_state"
,"projection"
or"mixed"
(see Details).- coordStates
Matrix containing the coordinates of each state (rows) and axis (columns) of a metric ordination space (see Details)
Value
The function state_to_trajectory()
returns a data frame of four columns
including the distance
and relative_position
between the target_state
and
the reference
.
Depending on the
method
,distance
is calculated as the dissimilarity between thetarget_states
and their respective nearest state in thereference
or the dissimilarity to their projections onto thereference
.The
relative_position
is a value that ranges between 0 (if the nearest state or projected point coincides with the firstreference
state) and 1 (if the nearest state or projected point coincides with the lastreference
state).
Details
state_to_trajectory()
can calculate the distance and relative position of
one or more target_states
relative to a reference
trajectory by three
different methods:
"nearest_state"
returns the dissimilarity of thetarget_states
to the nearest state of thereference
trajectory (distance
) and calculates the relative position of the nearest state within thereference
."projection"
returns the dissimilarity of thetarget_states
to their projection onto thereference
trajectory and calculates the relative position of the projected state within thereference
. This method requiresd
to be metric (i.e. to satisfy the triangle inequality). Ifd
is not metric,state_to_trajectory()
calculates the Euclidean distance within a transformed space generated through multidimensional scaling (Borg and Groenen, 2005). To use the state coordinates in a different metric space, use thecoordStates
argument. When thetarget_states
cannot be projected onto any of the segments forming thereference
trajectory,state_to_trajectory()
returnsNA
for bothdistance
andrelative_position
."mixed"
calculates the dissimilarity between thetarget_states
and thereference
trajectory, as well as their relative position by computing its projection onto any of the segments of the reference (analogous tomethod = "projection"
). For thetarget_states
that cannot be projected,state_to_trajectory()
uses the nearest state in thereference
to computedistance
andrelative_position
(analogous tomethod = "nearest_state"
).
Examples
# State dissimilarities
d <- vegan::vegdist(EDR_data$EDR3$abundance[, paste0("sp", 1:12)], method = "bray")
trajectories <- EDR_data$EDR3$abundance$traj
states <- EDR_data$EDR3$abundance$state
# Calculate the representative trajectories of an EDR to be used as reference
RT <- retra_edr(d,
trajectories = trajectories,
states = states,
minSegs = 10)
# Define the target states
target_states <- as.integer(c(1, 16, 55))
# Calculate the position of the target states with respect to the representative
# trajectories of an EDR
state_to_trajectory(d, trajectories = trajectories,
states = states,
target_states = target_states,
reference = RT,
method = "nearest_state")
#> target_state reference distance relative_position
#> 1 1 T1 0.04522613 0.0000000
#> 2 1 T2 0.75879397 0.3418326
#> 3 16 T1 0.07537688 0.7195150
#> 4 16 T2 0.07537688 0.3418326
#> 5 55 T1 0.04477612 0.2328098
#> 6 55 T2 0.58000000 0.3418326