Calculates crude initial values for transition intensities by assuming that the data represent the exact transition times of the Markov process.
estimate_Markov(data)
data.frame containing id
, id of the trajectory, time
, time at which a change occurs and
state
, associated state.
list of two elements: Q
, the estimated transition matrix, and lambda
,
the estimated time spent in each state
# Simulate the Jukes-Cantor model of nucleotide replacement
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 = 100, K = K, P = PJK, lambda = lambda_PJK, Tmax = 10)
# estimation
mark <- estimate_Markov(d_JK)
mark$P
#> 1 2 3 4
#> 1 0.0000000 0.3707483 0.2687075 0.3605442
#> 2 0.2931034 0.0000000 0.3577586 0.3491379
#> 3 0.3137255 0.3235294 0.0000000 0.3627451
#> 4 0.3803419 0.3461538 0.2735043 0.0000000
mark$lambda
#> 1 2 3 4
#> 1.056262 1.035155 1.061696 1.141148