Calculates crude initial values for transition intensities by assuming that the data represent the exact transition times of the Markov process.

estimate_Markov(data)

Arguments

data

data.frame containing id, id of the trajectory, time, time at which a change occurs and state, associated state.

Value

list of two elements: Q, the estimated transition matrix, and lambda, the estimated time spent in each state

See also

Author

Cristian Preda

Examples

# 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