Skip to contents

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


  data = NULL,
  censor = NULL,
  censor.states = NULL



A formula giving the vectors containing the observed states and the corresponding observation times. For example,

state ~ time

Observed states should be in the set 1, ...{}, n, where n is the number of states. Note hidden Markov models are not supported by this function.


Vector of subject identification numbers for the data specified by formula. If missing, then all observations are assumed to be on the same subject. These must be sorted so that all observations on the same subject are adjacent.


Matrix of indicators for the allowed transitions. An initial value will be estimated for each value of qmatrix that is greater than zero. Transitions are taken as disallowed for each entry of qmatrix that is 0.


An optional data frame in which the variables represented by subject and state can be found.


A state, or vector of states, which indicates censoring. See msm.


Specifies the underlying states which censored observations can represent. See msm.


The estimated transition intensity matrix. This can be used as the qmatrix argument to msm.


Suppose we want a crude estimate of the transition intensity \(q_{rs}\) from state \(r\) to state \(s\). If we observe \(n_{rs}\) transitions from state \(r\) to state \(s\), and a total of \(n_r\) transitions from state \(r\), then \(q_{rs} / \)\( q_{rr}\) can be estimated by \(n_{rs} / n_r\). Then, given a total of \(T_r\) years spent in state \(r\), the mean sojourn time \(1 / q_{rr}\) can be estimated as \(T_r / n_r\). Thus, \(n_{rs} / T_r\) is a crude estimate of \(q_{rs}\).

If the data do represent the exact transition times of the Markov process, then these are the exact maximum likelihood estimates.

Observed transitions which are incompatible with the given qmatrix are ignored. Censored states are ignored.

See also


C. H. Jackson


#> Warning: data set 'cav' not found
twoway4.q <- rbind(c(-0.5, 0.25, 0, 0.25), c(0.166, -0.498, 0.166, 0.166),
c(0, 0.25, -0.5, 0.25), c(0, 0, 0, 0))
statetable.msm(state, PTNUM, data=cav)
#>     to
#> from    1    2    3    4
#>    1 1367  204   44  148
#>    2   46  134   54   48
#>    3    4   13  107   55
crudeinits.msm(state ~ years, PTNUM, data=cav, qmatrix=twoway4.q)
#>            [,1]        [,2]       [,3]       [,4]
#> [1,] -0.1173149  0.06798932  0.0000000 0.04932559
#> [2,]  0.1168179 -0.37584883  0.1371340 0.12189692
#> [3,]  0.0000000  0.04908401 -0.2567471 0.20766310
#> [4,]  0.0000000  0.00000000  0.0000000 0.00000000