Skip to content

markovchain

1.2Package record

Easy Handling Discrete Time Markov Chains

3packages dependsuggested by 3
103.3Kdownloads / year
80.7%test coverage
13/13flavors OK

Overview

About

Description: Functions and S4 classes to create, manage and analyse discrete time Markov chains. Includes probabilistic analysis of chain structure (state classification, hitting times, stationary distributions, spectral and mixing diagnostics), statistical inference (maximum likelihood and Bayesian estimation, tests of the Markov property, homogeneity, stationarity and order, simulation), higher-order and multivariate chains, state aggregation, and import/export to JSON, YAML and CSV. Basic support for continuous time Markov chains is also provided; some of these functions depend on the suggested 'ctmcd' package. See Spedicato (2017) doi:10.32614/RJ-2017-036.

Changes in 1.2
  • Added randomMarkovChain() (previously an unexported helper with a different interface), dirichletChain() and identityChain(), the generators random, dirichlet_process and identity of PyDTMC. randomMarkovChain() takes the exact number of zero probabilities (zeros) and a mask of probabilities fixed in advance; dirichletChain() draws every row from a truncated Dirichlet process (stick-breaking construction), with an optional diagonal bias, and accepts any positive concentration instead of PyDTMC's whole numbers between 1 and n. Both take a seed that makes a draw reproducible without touching the random number stream of the session; the distribution of their draws was checked against PyDTMC's.
  • Added timeCorrelations() and timeRelaxations(), the stationary time correlations of the observables defined by one or two observed sequences, and the expected value of such an observable after t steps from an initial distribution (PyDTMC's time_correlations and time_relaxations). They agree with a direct numpy computation to 1e-14. PyDTMC 9.0.0 returns wrong values for chains with complex eigenvalues as soon as a lag exceeds the number of states, because it then uses an eigendecomposition with eigenvectors that are not biorthonormal; here the powers are applied by repeated multiplication and squaring. Unlike PyDTMC, timeRelaxations() does not require a unique stationary distribution.
  • toFile() and fromFile() support the XML format of PyDTMC, so chains can be exchanged with it in both directions (checked on 40 chains); the chain's name is stored as an attribute that PyDTMC ignores. Writing uses only base R; reading requires the new suggested package xml2.
  • summary() for markovchain objects gains the argument details. With the default FALSE the output is unchanged; with TRUE a block of further properties follows (size, rank, classes, irreducibility, period, regularity, absorbing, reversible, stochastically monotone, symmetric, entropy rate, SLEM, spectral gap, Kemeny's constant), also returned in the details element of the result. On 40 test chains they agree with PyDTMC's, except Kemeny's constant, which PyDTMC defines differently (from the fundamental matrix of an absorbing chain) and which was checked against a direct eigenvalue computation instead.
  • Added toDot() and toMermaid(), which export the transition graph as Graphviz DOT or Mermaid text, with escaped state names and optional digits, minProbability and layout direction.
  • hittingProbabilities() gains the arguments solver, tol and maxIter (completes #203, whose targets half shipped earlier). On each target the states whose probability is not already decided by graph reachability need a linear system \eqn{(I - Q) h = R}, which up to this version was always solved by a doubled Neumann series: every step squared a dense matrix, at \eqn{O(m^3)} per step and up to 200 steps. The new default, solver = "direct", is a single LU factorisation; solver = "bicgstab" is an unpreconditioned BiCGSTAB iteration on the sparse system, two sparse matrix-vector products per step, as asked in that report; solver = "doubling" keeps the old method, and is also the automatic fallback of "direct" on a numerically singular system. **On a gambler's ruin chain with 1200 states and one target, one call went from 22.4 to 0.10 seconds, and 3000 states became feasible at about one second.** The default is also more accurate, not just faster: on the defining equation of the hitting probabilities the residual of "direct" is at machine precision (2e-16) and does not grow with the size of the chain, against 9e-14 and growing for the doubled series, and all three solvers were checked against the closed-form gambler's ruin probabilities. tol and maxIter, which were hard-coded at 1e-13 and 200, are now arguments; note that an unpreconditioned BiCGSTAB can stall slightly above a very tight tol on an ill-conditioned chain, in which case the warning reports the residual actually reached. That warning now prints the residual in scientific notation, instead of showing every residual below 1e-6 as 0.000000. BiCGSTAB restarts from the current residual on a Lanczos breakdown or a stagnation, and switches to the direct solver with a warning if the breakdown persists.
  • Memory-safety audit of the C++ code (checked under AddressSanitizer, UndefinedBehaviorSanitizer and valgrind). Inputs that used to crash R, read past the end of a vector or loop forever now give an ordinary error: ctmcFit() with a data list that lacks the times or whose states and times differ in length; generatorToTransitionMatrix() with a non-square generator; the multinomial confidence intervals with counts not shaped like the transition matrix; markovchainFit(method = "map") with a hyperparam matrix without row or column names, or containing NA/NaN; a transition matrix containing NA/NaN (the stochasticity check never returned); an ictmc whose Q or range disagree with its states; and a markovchainList whose chains have inconsistent slots in rmarkovchain(parallel = TRUE). Valid inputs behave as before.
  • Correctness fixes found by the same audit: ctmcFit(byrow = FALSE) now scales the columns (not the rows) of the fitted matrix and returns a ctmc with byrow = FALSE, so the generator columns sum to zero; the stochasticity check no longer accepts a matrix with negative entries whose rows sum to 1 (a markovchain built from one now fails validation, as it should); the complex-number comparison used internally compared x^2 - y^2 instead of the squared modulus x^2 + y^2; and impreciseProbabilityatT() can be interrupted when a small error asks for many iterations.
  • The documentation of noofVisitsDist() now says what the function computes (#139): for each state, the expected fraction of the first N steps spent in it, (1/N) * sum_{k=1}^N P^k[i, ] (multiplied by N, the expected numbers of visits). Earlier versions described it as the joint pdf of the numbers of visits, which the package does not compute. The values returned are unchanged.
  • sanitize, in createSequenceMatrix() and markovchainFit(), now also accepts "uniform" and "absorbing" besides TRUE/FALSE (#213). The states that possibleStates adds but that are never observed as a departure state used to get, with sanitize = TRUE, a row of ones, i.e. a *uniform* distribution over every state: the chain was assumed to move from an unobserved state to anywhere with equal probability, which is an assumption about the data rather than a consequence of it, and the documentation ("put 1 in all rows having rowSum equal to zero") did not make that consequence visible. "absorbing" instead puts the whole mass on the diagonal, so those states are absorbing: the matrix is stochastic, as with TRUE, but no transition that was never observed is invented. "uniform" is an explicit synonym of TRUE, and TRUE/FALSE keep their exact previous meaning, so no existing call changes behaviour. In markovchainFit() the new mode works with every method, unlike the absorbingStates argument, which stays MLE-only as documented; where both apply they agree, because they share the same code path. The documentation of sanitize now describes what each value does to the row probabilities.
  • predict() and conditionalDistribution() for markovchain objects now stop with an informative message when the starting state is not one of the states of the chain (previously: an obscure 'names' attribute error), and predict() also checks newdata and n.ahead. The documentation of predict() now states how the prediction is made (most probable transition from the last element of newdata, ties broken at random) (#145).
  • Fixed several functions that ignored the byrow slot and read a column-stochastic matrix (byrow = FALSE) as if it were row-stochastic (completes the fix of #148, which had so far addressed the structural analysis only): markovchainSequence() and rmarkovchain() (both the C++ and the R implementation) simulated a different chain, and committorAB(), expectedRewards(), expectedRewardsBeforeHittingA(), firstPassage(), firstPassageMultiple(), noofVisitsDist(), is.stochasticallyMonotone() and autoLump() returned results for the transposed chain. lump() stopped with an error on column-stochastic chains because the stationary distributions were averaged along the wrong dimension. Results for chains with byrow = TRUE are unchanged; meanFirstPassageTime() and meanNumVisits() keep returning their output in the orientation of the chain, as documented.
Show all changes in 1.2Hide the rest of the changes in 1.2
  • Fixed fromFile() on XML files: probabilities written with 17 digits (as toFile() does) could come back one unit in the last place away from the value written on platforms where long double is no wider than double, such as arm64 macOS, because R's own number parser (as.numeric()) is not exact there. The probabilities are now converted by an exact decimal-to-double routine, so the round trip is exact on every platform (this also makes the reading of files written by PyDTMC independent of the platform). Nothing changes in the API.
  • Fixed ExpectedTime() on a continuous time Markov chain with two states: the matrix of the states other than the target has a single row and column, which was reduced to a number and made the function stop with an obscure error (invalid 'nrow' value).
  • Fixed thread safety in the RcppParallel paths of rmarkovchain(parallel = TRUE) on a markovchainList and of markovchainFit(method = "bootstrap", parallel = TRUE). Both workers called arma::sample(), which touches R's global RNG state (.Random.seed) and is not reentrant: concurrent calls from several threads introduced a data race that could silently bias the generated transitions. Each worker now uses a per-sequence std::mt19937_64 seeded from a single R::unif_rand() draw taken on the main thread, so set.seed() still controls reproducibility and the race is gone. As a side effect of the per-sequence seeding, the parallel path is now also bit-identical across runs for the same seed, regardless of how TBB splits the work. The sequence generation on a markovchainList also stops ignoring each chain's byrow slot: a column-stochastic chain used to be simulated with its matrix transposed, i.e. as a different chain -- the parallel analogue of the fix to the single-threaded path above. Internal micro-optimisations in the same two workers (cube held by reference, O(1) state lookup, pre-allocated row buffer, output stored contiguously) reduce the overhead of the parallel split; no public API changed.
  • markovchainFit() gains the argument num.cores, used only when method = "bootstrap" and parallel = TRUE. rmarkovchain(parallel = TRUE), markovchainFit(method = "bootstrap", parallel = TRUE) and the R-level helper .markovchainSequenceParallel() now all pick the thread count from the same resolver: an explicit num.cores wins, otherwise getOption("RcppParallel.numThreads"), getOption("Ncpus"), RCPP_PARALLEL_NUM_THREADS and OMP_NUM_THREADS are honoured in that order, and the fallback is min(2L, parallel::detectCores()) as CRAN policy requires. Previously rmarkovchain(parallel = TRUE) and the R socket cluster both defaulted to detectCores() - 1 while the parallel bootstrap used whatever thread count had been set earlier in the session; the three paths are now consistent.
  • Added redistribute(), propagating an initial distribution through steps transitions and returning the whole trajectory (a (steps + 1) x n matrix including the initial time, or only the last row with lastOnly = TRUE), as PyDTMC's mc_redistribute does. The initial distribution may be omitted (uniform), a single state name (point mass) or a numeric vector, named or not; column-stochastic chains are handled.
  • Added topologicalEntropy(), the logarithm of the Perron root of the chain's support (adjacency) matrix, in any base (default 2, consistent with entropyRate()), normalizedEntropyRate(), the entropy rate divided by the topological entropy (always in [0, 1]; 0 when either vanishes) and relaxationTime(), the reciprocal of spectralGap() (Inf for periodic chains). PyDTMC's mixing_rate is the first element of impliedTimescales() and is not duplicated.
  • autoplot.markovchain() gained a type argument: "graph" (the default, unchanged), "eigenvalues" (eigenvalues in the complex plane with the unit circle) and "flow" (evolution of the distribution, via redistribute(), with the new steps and initial arguments) and "comparison" (two or more chains on the same states, matched by name, side by side: transition-matrix heatmaps on a common scale, or with what = "stationary" their stationary distributions; new arguments other and what).
  • autoplot.markovchain() no longer triggers a ggplot2 warning about the unknown parameter linewidth when probabilities are shown on the edges: the border of the labels is now removed with linewidth (ggplot2 >= 3.5.0) or label.size (earlier versions). The graph no longer prints ggplot2's message "Scale for linewidth is already present" either: the linewidth scale is now added once instead of once per layer.
  • Added higherOrderLogLik() (closes #201), returning the log-likelihood, deviance, AIC and BIC of the model fitted by fitHigherOrder() so that models of different orders can be compared. It is the log-likelihood of the *fitted* mixture model, not necessarily a maximum: with the default method = "lsq", fitHigherOrder() chooses the weights by least squares on the stationary distribution, not by maximum likelihood (see method = "mle" below). A model of order k can only be evaluated from observation k + 1 on, so start lets several orders be evaluated on exactly the same observations, which is required for the criteria to be comparable. fitHigherOrder() itself and its return value are unchanged.
  • Added assessIndependence() (closes #109), the Anderson-Goodman (1957) chi-squared (method = "Pearson") or likelihood-ratio (method = "G") test of the null hypothesis that consecutive states are independent against a first-order Markov chain, i.e. a test of independence on the table of one-step transition counts. Only states actually observed as a departure or arrival state count towards the degrees of freedom; a degenerate table (e.g. a constant sequence) gives zero degrees of freedom and an NA p-value instead of an error. It complements verifyMarkovProperty() and assessOrder(), which test the first-order property against higher orders.
  • Fixed fitHigherOrder() returning the starting weights for orders 2 and above. Its objective function subtracted order times the stationary distribution instead of once, which made it practically constant in the weights, so the optimizer never left its starting point (equal weights 1/order); and even with the objective corrected its value, of the order of 1e-7 on real sequences, is below the default tolerance of Rsolnp::solnp(), which stopped immediately. The objective is now the squared distance sum((sum_i lambda_i Q_i X - X)^2) divided by its value at the starting point. **The weights returned for order >= 2 change** (and are now the minimizers of the documented objective, checked against a brute-force grid); the signature and the structure of the returned list are unchanged.
  • fitHigherOrder() gains the argument method = c("lsq", "mle"). The default "lsq" is the existing least squares fit, so calls without the argument are unaffected. "mle" estimates the weights by maximum likelihood, keeping the same empirical lag matrices and the same returned list (lambda, Q, X): for fixed lag matrices the log-likelihood is concave in the weights, so the maximum is global, and it is computed by the EM algorithm for mixture weights, which does not need Rsolnp. On the Alofi rainfall and preproglucacon sequences the maximum likelihood weights raise the log-likelihood of orders two and three by up to about 11 and 28 units over the least squares ones (checked against a brute-force search over the simplex in the tests). This is not the mixture transition distribution model of Raftery (1985), whose sin

The NEWS section is longer than shown here.

From NEWS.md in the release

Install

Health

CRAN checks
13OK
Slowest check: 11.1 min · r-oldrel-windows-x86_64
Status changes
  • OK13 OK2026-08-30
  • NOTE12 OK, 1 NOTE2026-07-11
  • OK12 OK2026-04-25
  • NOTE11 OK, 3 NOTE2026-04-22
  • ERROR10 OK, 3 NOTE, 1 ERROR2026-04-18
Show 1 earlier changeHide 1 earlier change
  • NOTE11 OK, 3 NOTE2026-03-10
Advisories

none known

Documentation

In release 1.2
READMEYes · 110 wordsVignettesYes · 3 · evaluation depends on the environmentNEWSYes · 67% structured · mentions 1.2Citation fileYes · cites a publication
Description cites an R Journal article
Help pages
107 (1 internal)includes a package overview page
Examples that run
99%91 run in a plain check (1 of them under a condition) · 1 never run
Exported functions with examples
88%
Documented parameters
100%
Return-value docs
93%
Help pages citing references
68%

Also includes 8 demo scripts (run with demo())

Downloads

103.3K
CRAN downloads in the past year
Rank #1,304 · ~283/day · ~8.6K/mo
Daily download trend is not available in this view yet.
7.7K30 days
23K90 days
103.3K1 year
Compare downloads with other packages →
Also on1.3K r2u1 autocran9.3K conda_forge163 c2d4u

Repository

117Stars
44Forks
0Open issues
1Open PRs
0Releases
1,110Commits
24Commit identities
markov-chainmarkov-modelr-packager-programmingrcppcrandtmcctmc
1,110 commits · Last activity 2026-10-10 · +1.7% stars, 30d
Responsiveness
How these are sampled
PRs merged (all time)
88%
Median days to close, 50 most recently updated closed issues
152
Median days to close, 50 most recently updated closed PRs
0

Stars over time

2025-09-10 · 1082026-10-14 · 117
PracticesBeta

12 development-tooling and community-health practices detected across 8 families in the upstream repository

Checks run against github.com/spedygiorgio/markovchain on 2026-10-21.

Continuous integration (3)
GitHub ActionsR CMD check workflowTravis CI (config file)

The R CMD check workflow runs on Linux, macOS and Windows

Docs source (3)
pkgdown

GitHub Pages site last deployed 2026-10-10 · The repository has a site deploy workflow

Coverage (1)
Coverage reporting
Reproducibility and dev environment (1)
data-raw/
Show all practicesHide 4 practices
CRAN release process (1)
cran-comments.md
Automation and maintenance (1)
Dependabot
Lint, format, editor (1)
RStudio project
Git structural (1)
.gitattributes
How this is detected·Detection ruleset v4 (2026-10-20)
AI coding toolsBeta

This repository shows signs of AI coding tools.

  • Codexfirst seen 2025-10-20
    Pull request it wrote: opened by a project member
  • Claude Codefirst seen on or before 2026-09-30
    Pull request it wrote: opened by a project member
    Commits: at least 14 crediting it in the message
Models named in its commits
  • Claude Sonnet 5.56 commits · Oct 2026
  • Claude Opus 4.71 commit · Oct 2026
  • Claude Opus 5.51 commit · Oct 2026
  • Claude Sonnet 51 commit · Sep 2026
Counts are commits, not lines of code. Commits by a tool's accounts count once across all of its accounts. Commits crediting it are the largest count among its credit lines, a minimum.How this is detected·Detection ruleset v4 (updated 2026-09-27)

Dependencies

Declared dependencies
24 external dependencies (excludes base and recommended)

Installing markovchain adds 13 packages (10 with compiled code, 12 MB of source tarballs). Heaviest: igraph 4.8 MB, Rcpp 1.8 MB, RcppArmadillo 1.0 MB.

Depends (3)
R >= 4.4.0Matrixmethods
Imports (9)
igraphexpmstats4parallelRcppRcppParallelutilsstatsgrDevices
Enhances (0)
none
Reverse dependencies
3direct
0indirect
Imports 3
Suggested by 3
Depends, Imports or LinkingTo, most downloaded first
Suggests, most downloaded first

Datasets

People & History

People (12)
Author, Maintainer since 0.0.1 (2013)
Author · added in 0.3
Author · added in 0.6.9.14
Author · added in 0.2
Author · added in 0.4.4
Contributor · added in 0.8.4.1
Contributor · added in 0.8.5
Contributor · added in 0.6.9.14
Contributor · added in 0.6.9.3
Contributor · added in 0.10.0
Contributor · added in 0.8.5
Contributor · added in 0.2
Listed in earlier versions (1)
Nacho Cordón Castillo
no longer listed · 0.6.9.3 to 0.6.9.12
Releases (61)

Pick two releases to compare their code metrics.

  • R
    R 4.6.0 released · 2026-04-24
  • R
    R 4.5.0 released · 2025-04-11
  • R
    R 4.4.0 released · 2024-04-24
  • R
    R 4.3.0 released · 2023-04-21
  • unarchivedReturned to CRAN
    2022-05-26
  • archivedRemoved from CRAN
    2022-05-25
    requires archived package 'matlab'
  • R
    R 4.2.0 released · 2022-04-22
  • R
    R 4.1.0 released · 2021-05-18
  • R
    R 4.0.0 released · 2020-04-24
  • R
    R 3.6.0 released · 2019-04-26
  • R
    R 3.5.0 released · 2018-04-23
  • R
    R 3.4.0 released · 2017-04-21
  • R
    R 3.3.0 released · 2016-05-03
  • R
    R 3.2.0 released · 2015-04-16
  • R
    R 3.1.0 released · 2014-04-10
  • 3.0.3Latest
    record
    2014-02-09 · current release · diff ↗
Show 61 earlier eventsHide 61 earlier events
  • 3.0.2
    record
    2013-09-07 · diff ↗
  • 1.2
    record
    2026-10-10 · diff ↗ ·
    added 18 exports
    assessIndependence, birthDeath, dirichletChain, fitMTD, fromDictionary, fromFile, gamblersRuin, higherOrderLogLik, higherOrderPredict, higherOrderSimulate, identityChain, populationGeneticsModel, randomMarkovChain, rouwenhorst, selectOrder, tauchen, toNthOrder, urnModel
  • 1.1.1
    record
    2026-09-18 · diff ↗ ·
    added 4 exports
    autoLump, fundamentalMatrix, is.lumpable, lump
  • 1.0.0
    record
    2026-02-02 · diff ↗ ·
    added 3 exports
    .markovchainFitRcpp, hommc, is.stochasticallyMonotone
  • 0.10.3
    record
    2026-02-02 · diff ↗
  • 0.10.0
    record
    2024-11-14 · diff ↗
  • 0.9.5
    record
    2023-09-24 · diff ↗
  • 0.9.4
    record
    2023-08-31 · diff ↗
  • 0.9.3
    record
    2023-05-18 · diff ↗
  • 0.9.1
    record
    2023-01-19 · diff ↗
  • 0.9.0
    record
    2022-07-01 · diff ↗
  • 0.8.9
    record
    2022-05-26 · diff ↗
  • 0.8.6
    record
    2021-05-17 · diff ↗
  • 0.8.5-4
    record
    2021-01-10 · diff ↗
  • 0.8.5-3
    record
    2020-12-06 · diff ↗
  • 0.8.5-2
    record
    2020-09-08 · diff ↗
  • 0.8.5
    record
    2020-05-21 · diff ↗
  • 0.8.4.1
    record
    2020-05-04 · diff ↗
  • 0.8.4
    record
    2020-03-12 · diff ↗
  • 0.8.3
    record
    2020-03-07 · diff ↗
  • 0.8.2
    record
    2020-01-10 · diff ↗
  • 0.8.1
    record
    2019-12-17 · diff ↗
  • 0.8.0
    record
    2019-09-14 · diff ↗
  • 0.7.0
    record
    2019-08-27 · diff ↗ ·
    removed 13 exports
    absorbingStates, canonicForm, communicatingClasses, conditionalDistribution, hommc, is.accessible, is.irreducible, predict, recurrentClasses, steadyStates, transientStates, transitionProbability, hittingProbabilities
    added 3 exports
    absorptionProbabilities, meanAbsorptionTime, meanRecurrenceTime
  • 0.6.9.16
    record
    2019-07-22 · diff ↗ ·
    added 1 export
    hittingProbabilities
  • 0.6.9.14
    record
    2019-01-21 · diff ↗ ·
    added 1 export
    meanFirstPassageTime
  • 0.6.9.12
    record
    2018-08-24 · diff ↗
  • 0.6.9.11
    record
    2018-06-29 · diff ↗
  • 0.6.9.10
    record
    2018-06-03 · diff ↗ ·
    removed 1 export
    expectedRewardsforA
    added 1 export
    expectedRewardsBeforeHittingA
  • 0.6.9.8-1
    record
    2017-08-16 · diff ↗ ·
    added 5 exports
    expectedRewards, expectedRewardsforA, is.CTMCirreducible, is.TimeReversible, predictHommc
  • 0.6.9.6
    record
    2017-07-10 · diff ↗ ·
    added 7 exports
    committorAB, ExpectedTime, firstPassageMultiple, freq2Generator, impreciseProbabilityatT, noofVisitsDist, probabilityatT
  • 0.6.9.3
    record
    2017-05-19 · diff ↗
  • 0.6.9
    record
    2017-04-06 · diff ↗
  • 0.6.8.1
    record
    2017-03-17 · diff ↗ ·
    removed 1 export
    pattern:^[[:alpha:]]+
    added 39 exports
    absorbingStates, assessOrder, assessStationarity, canonicForm, communicatingClasses, conditionalDistribution, createSequenceMatrix, ctmcFit, firstPassage, fitHigherOrder, fitHighOrderMultivarMC, generatorToTransitionMatrix, hommc, inferHyperparam, is.accessible, is.irreducible, markovchainFit, markovchainListFit, markovchainSequence, multinomialConfidenceIntervals, name, name<-, period, predict, predictiveDistribution, priorDistribution, rctmc, recurrentClasses, rmarkovchain, seq2freqProb and 9 more
  • 0.6.6
    record
    2017-01-23 · diff ↗
  • 0.6.5.1
    record
    2016-09-09 · diff ↗
  • 0.6.5
    record
    2016-08-30 · diff ↗
  • 0.6
    record
    2016-08-11 · diff ↗
  • 0.5
    record
    2016-07-07 · diff ↗
  • 0.4.9.9
    record
    2016-07-03 · diff ↗
  • 0.4.4
    record
    2016-05-12 · diff ↗
  • 0.4.3.1
    record
    2016-03-05 · diff ↗
  • 0.4.3
    record
    2015-11-26 · diff ↗
  • 0.4.2
    record
    2015-08-24 · diff ↗
  • 0.4
    record
    2015-08-04 · diff ↗
  • 0.3.1
    record
    2015-07-07 · diff ↗
  • 0.3.0.1
    record
    2015-06-19 · diff ↗
  • 0.3
    record
    2015-06-14 · diff ↗
  • 0.2.1
    record
    2015-05-12 · diff ↗
  • 0.2
    record
    2015-04-30 · diff ↗
  • 0.1.1
    record
    2015-02-21 · diff ↗
  • 0.1.0
    record
    2015-01-04 · diff ↗
  • 0.0.9.5
    record
    2014-06-21 · diff ↗
  • 0.0.9
    record
    2014-04-19 · diff ↗
  • 0.0.8
    record
    2014-02-10 · diff ↗
  • 0.0.7
    record
    2014-01-12 · diff ↗
  • 0.0.5
    record
    2013-12-31 · diff ↗
  • 0.0.3
    record
    2013-11-04 · diff ↗
  • 0.0.2
    record
    2013-09-09 · diff ↗
  • 0.0.1
    record
    2013-08-13
  • R
    R 3.0.0 released · 2013-04-03

Package metadata

First published
2013-08-13
Total releases
61 / 13 yrs
License
MIT + file LICENSE OSI · relicensed from GPL-2 in 0.9.3
Minimum R
≥ 4.4.0
Bundled data
6.6 KB / 8 files
Download size
1.0 MB
Appears in task views

Cite

Cite this package

Run in R for the authors' preferred citation:

citation("markovchain")

The package provides a citation file that builds its entry when R runs it. Run citation() to see it.

Cite the R Observatory

For a number measured here: a download total, a coverage figure, an archival date.

APA

Balamuta, J. J. (2026). R Observatory: Metrics for markovchain version 1.2 [Data set]. HJJB, LLC. Data release v2026-10-25. https://doi.org/10.5281/zenodo.21843040

From data release v2026-10-25, which the citation names so these numbers can be found later. More on citing and the projects behind them.

Report a problem with this page →

Privacy choices

These apply to this browser and are stored on this device only. Nothing about your choice is sent to us.

Read the privacy policy