Cut data to a maximal given time
cut_data(
data,
Tmax,
prolongLastState = "all",
NAstate = "Not observed",
warning = FALSE
)data.frame containing id, id of the trajectory, time,
time at which a change occurs and state, associated state.
max time considered
list of states to prolong (can be "all"). In the case where the last state of a trajectory is
lesser than Tmax, we can assume that this trajectory will be in the same state at time Tmax only if it is an
absorbing state. Otherwise it will add NAstate and throw a warning.
Set `prolongLastState = c()` to indicate there is no absorbing state.
state value used when the last state is not prolonged.
if TRUE, the function raises warnings when it has prolonged a trajectory with NAstate
a data.frame with the same format as data where each individual has Tmax as last time entry.
Other format:
convertToCfd(),
matrixToCfd(),
remove_duplicated_states()
# Simulate the Jukes-Cantor model of nucleotide replacement
set.seed(42)
K <- 4
PJK <- matrix(1 / 3, nrow = K, ncol = K) - diag(rep(1 / 3, K))
lambda_PJK <- c(1, 1, 1, 1)
d_JK <- generate_Markov(n = 10, K = K, P = PJK, lambda = lambda_PJK, Tmax = 10)
tail(d_JK)
#> id time state
#> 103 9 7.534493 2
#> 104 9 9.419641 4
#> 105 10 0.000000 1
#> 106 10 3.661730 3
#> 107 10 7.634647 2
#> 108 10 8.873610 1
# cut at Tmax = 8
d_JK2 <- cut_data(d_JK, Tmax = 8)
tail(d_JK2)
#> id time state
#> 94 9 7.534493 2
#> 95 9 8.000000 2
#> 96 10 0.000000 1
#> 97 10 3.661730 3
#> 98 10 7.634647 2
#> 99 10 8.000000 2
# do not prolong any state
try(d_JK2 <- cut_data(d_JK, Tmax = 12, prolongLastState = c()))