Functions for creating and working with horizon (sequence) transition probability matrices.

See the following tutorials for some ideas:

hzTransitionProbabilities(
  x,
  name = GHL(x, required = TRUE),
  loopTerminalStates = FALSE
)

mostLikelyHzSequence(mc, t0, maxIterations = 10)

Arguments

x

a SoilProfileCollection object.

name

A horizon level attribute in x that names horizons.

loopTerminalStates

should terminal states loop back to themselves?

This is useful when the transition probability matrix will be used to initialize a markovchain object. See examples below.

mc

Passed to markovchain conditionalDistribution()

t0

Passed to markovchain conditionalDistribution()

maxIterations

Maximum number of iterations. Default: 10

Value

A square matrix of transition probabilities. See examples.

The function genhzTableToAdjMat() returns a square adjacency matrix. See examples.

The function mostLikelyHzSequence() returns the most likely sequence of horizons, given a markovchain object initialized from horizon transition probabilities and an initial state, t0. See examples.

Note

These functions are still experimental and subject to change.

See also

Author

D.E. Beaudette

Examples


data(sp4)
depths(sp4) <- id ~ top + bottom

# horizon transition probabilities: row -> col transitions
(tp <- hzTransitionProbabilities(sp4, 'name'))
#> Warning: ties in transition probability matrix
#>     A A1 A2 AB       ABt        Bt       Bt1 Bt2 Bt3
#> A   0  0  0  0 0.1111111 0.4444444 0.4444444   0   0
#> A1  0  0  1  0 0.0000000 0.0000000 0.0000000   0   0
#> A2  0  0  0  1 0.0000000 0.0000000 0.0000000   0   0
#> AB  0  0  0  0 0.0000000 0.0000000 1.0000000   0   0
#> ABt 0  0  0  0 0.0000000 0.0000000 1.0000000   0   0
#> Bt  0  0  0  0 0.0000000 0.0000000 0.0000000   0   0
#> Bt1 0  0  0  0 0.0000000 0.0000000 0.0000000   1   0
#> Bt2 0  0  0  0 0.0000000 0.0000000 0.0000000   0   1
#> Bt3 0  0  0  0 0.0000000 0.0000000 0.0000000   0   0
#> attr(,"ties")
#> [1] TRUE


if (FALSE) {
## plot TP matrix with functions from sharpshootR package
library(sharpshootR)
par(mar=c(0,0,0,0), mfcol=c(1,2))
plotSPC(sp4, name = 'name', name.style = 'center-center')
plotSoilRelationGraph(tp, graph.mode = 'directed', edge.arrow.size=0.5)

## demonstrate genhzTableToAdjMat usage
data(loafercreek, package='soilDB')

# convert contingency table -> adj matrix / TP matrix
tab <- table(loafercreek$hzname, loafercreek$genhz)
m <- genhzTableToAdjMat(tab)

# plot
par(mar=c(0,0,0,0), mfcol=c(1,1))
plotSoilRelationGraph(m, graph.mode = 'directed', edge.arrow.size=0.5)


## demonstrate markovchain integration
library(markovchain)
tp.loops <- hzTransitionProbabilities(sp4, 'name', loopTerminalStates = TRUE)

# init new markovchain from TP matrix
mc <- new("markovchain", states=dimnames(tp.loops)[[1]], transitionMatrix = tp.loops)

# simple plot
plot(mc, edge.arrow.size=0.5)

# check absorbing states
absorbingStates(mc)

# steady-state:
steadyStates(mc)
}