Capítulo 2


Cadeias de Markov em Tempo Discreto



“Science is built up with facts, as a house is with stones. But a collection of facts is no more a science than a heap of stones is a house.”



– Jules Henri Poincare in La Science et l’Hypothese, 1908



2.1. Introdução


Considere o processo estocástico em tempo discreto \(\{X_n\}_{n \ \in \ T}\), com conjunto de índices \(T = \{0, 1, 2, \ldots\}\) e espaço de estados \(\mathcal{E}\), assumido enumerável (finito ou infinito). Para cada \(n \in T\), a variável aleatória \(X_n\) representa o estado do processo no instante \(n\), de modo que a expressão \(X_n = i\) indica que o processo se encontra no estado \(i \in \mathcal{E}\) nesse instante. A descrição do comportamento do processo até o tempo \(n\) é dada pela distribuição conjunta \(P\left[X_0 = i_0, X_1 = i_1, \ldots, X_n = i_n\right]\), a qual pode ser decomposta, pela regra da cadeia de probabilidade, como: \[\begin{align}\\ P\left[X_0 = i_0, \ldots, X_n = i_n\right] = P\left[X_0 = i_0\right] \prod_{k=1}^{n} P\left[X_k = i_k \mid X_0 = i_0, \ldots, X_{k-1} = i_{k-1}\right]\\\\ \end{align}\] Sob a suposição de uma estrutura de dependência mais restrita — a saber, que o estado futuro do processo, \(X_{n+1}\), depende apenas do estado atual, \(X_n\) —, tem-se a seguinte simplificação: \[\begin{align}\\ P\left[X_{n+1} = i_{n+1} \mid X_0 = i_0, X_{1} = i_{1}, \ldots, X_{n} = i_n\right] = P\left[X_{n+1} = i_{n+1} \mid X_n = i_n\right]\\\\ \end{align}\] para todo \(n \geqslant 0\) e quaisquer estados \(i_0, \ldots, i_n, i_{n+1} \in \mathcal{E}\). Essa propriedade é denominada propriedade de Markov, e expressa que o comportamento futuro do processo depende exclusivamente de seu estado atual — isto é, ocorre uma transição em um passo, do instante \(n\) para o instante \(n+1\) — sendo independente da trajetória completa até o instante presente.


Definição 2.1 (Cadeia de Markov). Seja \(\{X_n\}_{n \ \in \ T}\) um processo estocástico em tempo discreto, com \(T = \{0, 1, 2, \ldots\}\) e espaço de estados \(\mathcal{E}\) enumerável (finito ou infinito). Diz-se que \(\{X_n\}\) é uma cadeia de Markov se, para todo \(n \in T\) e quaisquer estados \(i_0, i_1, \ldots, i_{n-1}, i_n, i_{n+1} \in \mathcal{E}\), a propriedade, conhecida como propriedade de Markov, é satisfeita: \[\begin{align}\\ P\left[X_{n+1} = i_{n+1} \mid X_0 = i_0, X_{1} = i_{1}, \ldots, X_{n} = i_n\right] = P\left[X_{n+1} = i_{n+1} \mid X_n = i_n\right]\\\\ \end{align}\] A probabilidade condicional à direita da equação é denominada probabilidade de transição, e caracteriza a probabilidade de o processo mover-se do estado \(i_n\) para o estado \(i_{n+1}\). Em particular, essa propriedade implica que a distribuição condicional do estado futuro \(X_{n+1}\), dado o histórico completo até o instante \(n\), depende unicamente do estado atual \(X_n\), ou seja, o processo possui memória de ordem um.


Exemplo 2.1 (Cadeia de Markov Sobre os Vértices de um Cubo). Considere uma partícula que se move aleatoriamente entre os vértices de um cubo. O espaço de estados é dado por \(\mathcal{E} = \{1, 2, \ldots, 8\}\), representando os oito vértices numerados do cubo. A posição da partícula no instante \(n \in T = \{0, 1, 2, \ldots\}\) é descrita pela variável aleatória \(S_n\), de modo que o processo \(\{S_n\}_{n \ \in \ T}\) representa sua trajetória ao longo do tempo. A dinâmica de transição do processo é regida pela seguinte regra: \[\begin{align}\\ P(S_{n+1} = j \mid S_n = i) = \begin{cases} \dfrac{1}{3}, & \text{se } i \text{ e } j \text{ são vértices adjacentes (ligados por uma aresta)}, \\\\ 0, & \text{caso contrário}. \end{cases}\\\\ \end{align}\] Como a distribuição condicional do próximo estado \(S_{n+1}\) depende exclusivamente do estado atual \(S_n\), e não da trajetória passada completa, o processo satisfaz a propriedade de Markov. Trata-se, portanto, de uma cadeia de Markov a tempo discreto, com espaço de estados finito. O Código 2.1 a seguir apresenta uma simulação, em linguagem R, de uma realização do movimento aleatório de uma partícula entre os vértices de um cubo, conforme descrito anteriormente. O processo é modelado como uma cadeia de Markov em tempo discreto com espaço de estados finito \(\mathcal{E} = \{1, \ldots, 8\}\), onde a partícula, em cada instante, transita uniformemente para um dos três vértices adjacentes ao estado atual. A simulação considera \(n = 20\). A Figura 2.1 exibe a trajetória da posição da partícula ao longo do tempo.


Código 2.1. Simulação do movimento aleatório de uma partícula entre os vértices de um cubo com \(n = 20\).

## -----------------------------------------------------------
## Simulação de Cadeia de Markov sobre os Vértices de um Cubo
## -----------------------------------------------------------

# --- 0. Pacotes Necessários ---

library(igraph)
library(ggraph)
library(tidygraph)
library(dplyr)

# --- 1. Configurações Iniciais ---

set.seed(123)               # Semente (Reprodutibilidade da Simulação)
n            <- 20          # Índice n
vertices     <- 1:8         # Conjunto de Estados
arestas      <- rbind(c(1,2), c(1,3), c(1,5), 
                      c(2,4), c(2,6), c(3,4), 
                      c(3,7), c(4,8), c(5,6), 
                      c(5,7), c(6,8), c(7,8))

# --- 2. Construção do Grafo e Matriz de Transição ---

arestas_dir  <- rbind(arestas, arestas[, c(2,1)])
g            <- graph_from_edgelist(arestas_dir, directed = TRUE)
V(g)$name    <- as.character(vertices)

P            <- matrix(0, nrow = 8, ncol = 8)

for (i in 1:8)
{
  vizinhos       <- neighbors(g, i)
  P[i, vizinhos] <- 1 / length(vizinhos)
}

# --- 3. Simulação da Cadeia de Markov ---

estado       <- numeric(n + 1)
estado[1]    <- sample(1:8, 1)  # Estado Inicial Aleatório

for (t in 1:n) 
{
  estado[t + 1] <- sample(1:8, 1, prob = P[estado[t], ])
}

# --- 4. Conversão para tidygraph com Marcação de Visitas ---

vertices_df     <- data.frame(name = as.character(1:8)) %>%
                      mutate(categoria = case_when(name == as.character(estado[1]) ~ "Inicial",
                                                   name %in% as.character(estado) 
                                                   & name != as.character(estado[1]) ~ "Visitado",
                                                   TRUE ~ "Não visitado"))

g_df            <- as_tbl_graph(g) %>%
                      activate(nodes) %>%
                        left_join(vertices_df, by = "name")


# --- 6. Criar dataframe com as Arestas da Trajetória ---

trajeto_arestas <- data.frame(from = as.character(estado[-length(estado)]),
                              to = as.character(estado[-1]))

# --- 7. Marcar as Arestas do Grafo com Atributo Trajeto TRUE/FALSE ---

g_df            <- g_df %>%
                     activate(edges) %>%
                       mutate(trajeto = FALSE)

arestas_df      <- as_tibble(g_df, active = "edges") %>%
                     mutate(id = row_number())

arestas_df$trajeto <- apply(arestas_df, 
                            1, 
                            function(row){any(trajeto_arestas$from == row["from"] 
                                              & trajeto_arestas$to == row["to"])})

g_df            <- g_df %>%
                     activate(edges) %>%
                       mutate(trajeto = arestas_df$trajeto)

# --- 8. Visualização Gráfica ---

ggraph(g_df, layout = "auto") +
  geom_edge_link(aes(edge_color = factor(trajeto, levels = c(TRUE, FALSE), labels = c("Sim", "Não"))),
                 arrow = arrow(length = unit(3, "mm"), type = "closed"),
                 end_cap = circle(3, 'mm'),
                 start_cap = circle(3, 'mm'),
                 edge_width = 0.7,
                 show.legend = TRUE) +   # Forçar a Legenda da Aresta
  geom_node_point(aes(color = categoria), size = 6) +
  geom_node_text(aes(label = name), vjust = -1.2) +
  scale_edge_color_manual(name = "Trajeto da Partícula",
                          values = c("Sim" = "black", "Não" = "gray80"),
                          guide = guide_legend(order = 1)) +
  scale_color_manual(name = "Estados do Processo",
                     values = c("Inicial" = "green",
                                "Visitado" = "blue",
                                "Não visitado" = "red"),
                     guide = guide_legend(order = 2)) +
  labs(title = "") +
  theme_graph()


Figura 2.1.. Trajetória simulada do movimento aleatório de uma partícula entre os vértices de um cubo com \(n = 20\).

\[\small \begin{align} \tag*{$\blacksquare$}\\\\ \end{align}\]

Exemplo 2.2 (Cadeias de Markov Binárias com Transição Estocástica). Seja \(\{X_n\}_{n \in \mathbb{N}_0}\) um processo estocástico em tempo discreto com espaço de estados \(\mathcal{E} = \{0, 1\}\). Considere uma sequência de variáveis aleatórias independentes e identicamente distribuídas \(\{U_n\}_{n \in \mathbb{N}}\), onde \(U_n \sim \text{Uniforme}(0,1)\). Define-se a função de transição estocástica \(F : \mathcal{E} \times [0,1] \to \mathcal{E}\) de duas formas distintas:


  • Primeira construção: \[\begin{align}\\ F(x, u) = \mathbb{I}\{u > h(x)\}\\\\ \end{align}\] onde \(h : \mathcal{E} \to [0,1]\) é uma função tal que \(h(0)\) e \(h(1)\) são constantes fixas no intervalo \([0,1]\), e \(\mathbb{I}\) denota a função indicadora. Assim, a cadeia \(\{X_n\}\) é gerada por: \[\begin{align}\\ X_n = F(X_{n-1}, U_n) = \mathbb{I}\{U_n > h(X_{n-1})\}, \qquad n \geqslant 1\\\\ \end{align}\]


  • Segunda construção: \[\begin{align}\\ F(x,u) = \begin{cases} 1 - x, & \text{se } \quad u > g(x) \\ x, & \text{se } \quad u \leqslant g(x) \end{cases}\\\\ \end{align}\] onde \(g : \mathcal{E} \to [0,1]\) é uma função tal que \(g(0)\) e \(g(1)\) são constantes fixas no intervalo \([0,1]\). Assim, a cadeia \(\{X_n\}\) satisfaz: \[\begin{align}\\ X_n = F(X_{n-1}, U_n) = \begin{cases} 1 - X_{n-1}, & \text{se } \quad U_n > g(X_{n-1}) \\ X_{n-1}, & \text{se } \quad U_n \leqslant g(X_{n-1}) \end{cases} \qquad n \geqslant 1\\\\ \end{align}\]


Para estas construções, observa-se que, se \(h(0) = h(1)\), então a cadeia \(\{X_n\}\) da primeira construção é tal que: \[\begin{align}\\ P[X_n = y \mid X_{n-1} = 0] = P[X_n = y \mid X_{n-1} = 1]\\\\ \end{align}\] isto é, a cadeia de Markov \(\{X_n\}\) correspondente à função \(h\) é, na verdade, uma sequência de variáveis aleatórias independentes e identicamente distribuídas. Por outro lado, se as funções \(h\) e \(g\) satisfazem: \[\begin{align}\\ h(0) &= g(0)\\\\ 1 - h(1) &= g(1)\\\\ \end{align}\] então as probabilidades de transição respeitam a relação: \[\begin{align}\\ P_h[X_n = y \mid X_{n-1} = x] = P_g[X_n = y \mid X_{n-1} = x], \qquad \forall x,y \in \mathcal{E}\\\\ \end{align}\]

Essa última igualdade nos diz que se as cadeias geradas por ambas as construções forem inicializadas no mesmo estado, então as duas cadeias terão a mesma lei conjunta, isto é, são equivalentes do ponto de vista probabilístico. O Código 2.2 implementa, em linguagem R, uma simulação de duas trajetórias da cadeia binária \(\{X_n\}\), com \(n = 30\). A primeira trajetória é gerada com a função de transição estocástica \(F_h(x, u)\) baseda na função \(h\) (primeira construção), enquanto a segunda utiliza a função \(F_g(x, u)\) baseada na função \(g\) (segunda construção). As simulações consideram os valores \(h(0) = 0{.}3\), \(h(1) = 0{.}7\), \(g(0) = 0{.}3\) e \(g(1) = 0{.}3\), utilizando a mesma sequência de variáveis uniformes \(U_n \sim \text{Uniforme}(0,1)\) para ambas as cadeias. A Figura 2.2 exibe a trajetória dos estados ao longo do tempo, permitindo comparar visualmente as dinâmicas induzidas pelas diferentes funções de transição.


Código 2.2. Simulação de duas cadeias de Markov binárias com funções de transição estocástica, \(F_h(x,u)\) e \(F_g(x,u)\), e condições das funções \(h\) e \(g\) definidas por \(h(0) = g(0) = 0{.}3\), \(h(1) = 0{.}7\), e \(g(1) = 0{.}3\).

## ------------------------------------------------------------------
## Simulação de Cadeias de Markov Binárias com Transição Estocástica
## ------------------------------------------------------------------

# --- 0. Pacotes Necessários ---

library(ggplot2)
library(reshape2)

# --- 1. Configurações Iniciais ---

set.seed(123)                # Semente (Reprodutibilidade da Simulação)
n            <- 30           # Índice n

# Parâmetros das Funções de Transição

h0           <- 0.3
h1           <- 0.7

g0           <- h0
g1           <- 1 - h1

# --- 2. Geração da Cadeia com Função h(x) ---

X_h          <- numeric(n)
X_h[1]       <- 0

for (i in 2:n)
{
  u          <- runif(1)
  prob_h     <- ifelse(X_h[i - 1] == 0, h0, h1)
  X_h[i]     <- as.numeric(u > prob_h)
}

# --- 3. Geração da Cadeia com Função g(x) ---

X_g          <- numeric(n)
X_g[1]       <- 0

for (i in 2:n)
{
  u          <- runif(1)
  prob_g     <- ifelse(X_g[i - 1] == 0, g0, g1)
  X_g[i]     <- ifelse(u > prob_g, 1 - X_g[i - 1], X_g[i - 1])
}

# --- 4. Preparação dos Dados para Visualização ---

df_cadeias   <- data.frame(tempo = rep(1:n, 2),
                           estado = c(X_h, X_g),
                           cadeia = factor(rep(c("Função h", "Função g"), 
                                               each = n)))

# --- 5. Visualização Gráfica das Cadeias ---

ggplot(df_cadeias, aes(x = tempo, y = estado)) +
  geom_step(aes(group = cadeia), direction = "hv", color = "black") +
  geom_point(aes(color = cadeia), size = 1.5) +
  facet_wrap(~ cadeia, ncol = 2) +
  scale_y_continuous(breaks = c(0, 1), labels = c("0", "1")) +
  scale_color_manual(values = c("Função h" = "#1f77b4", 
                                "Função g" = "#ff7f0e")) +
  labs(title = "",
       x = "Tempo (n)",
       y = "Estado") +
  theme_minimal(base_size = 10) +
  theme(axis.title.x = element_text(margin = margin(t = 10)),
        axis.title.y = element_text(margin = margin(r = 10)),
        legend.position = "none")


Figura 2.2.. Trajetórias simuladas de duas cadeias de Markov binárias com funções de transição estocástica \(F_h(x,u)\) (painel direito) e \(F_g(x,u)\) (painel esquerdo).

\[\small \begin{align} \tag*{$\blacksquare$}\\\\ \end{align}\]

Exemplo 2.3 (Passeio Aleatório). Considere o processo estocástico \(\{X_n\}_{n \ \in \ \mathbb{N}}\) em tempo discreto, com espaço de estados enumerável infinito, \(\mathcal{E} = \{\ldots, -2, -1, 0, 1, 2, \ldots \}\). Suponha que \(\{X_n\}\) satisfaça a propriedade de Markov, e que, para todo \(i, j \in \mathcal{E}\), as probabilidades de transição sejam independente do tempo \(n\) e dadas por: \[\begin{align}\\ P\left[X_{n+1} = j \mid X_n = i\right] = \begin{cases} p, & j = i + 1 \\ 1 - p, & j = i - 1 \\ 0, & \text{caso contrário} \end{cases}\\\\ \end{align}\] com \(p \in [0,1]\) fixo. A cadeia de Markov resultante é chamada de passeio aleatório simples. No caso particular em que \(p = 1/2\), diz-se que o passeio é simétrico. Nesse cenário, tem-se: \[\begin{align}\\ P\left[X_{n+1} = i + 1 \mid X_n = i\right] = P\left[X_{n+1} = i - 1 \mid X_n = i\right] = \frac{1}{2} \qquad \forall i \in \mathcal{E}, \forall n \in \mathbb{N}\\\\ \end{align}\] de modo que, a cada instante, o processo transita para o estado imediatamente à direita ou à esquerda com probabilidades iguais. Trata-se, portanto, de uma cadeia de Markov cuja dinâmica é governada por incrementos aleatórios equiprováveis de \(+1\) e \(-1\) a cada unidade de tempo. O Código 2.3 apresenta, em linguagem R, a simulação de uma trajetória do passeio aleatório simétrico com \(n = 100\), iniciando no estado zero. A cada instante, o próximo estado é obtido somando ao valor atual um incremento sorteado de forma independente entre \(-1\) e \(+1\), com probabilidade \(1/2\) para cada direção. A Figura 2.3 ilustra graficamente a trajetória simulada, destacando a variação do estado ao longo do tempo.


Código 2.3. Simulação de uma trajetória do passeio aleatório simples com incrementos equiprováveis \(\pm 1\) e \(n = 100\).

## ---------------------------------------
## Simulação de Passeio Aleatório Simples
## ---------------------------------------

# --- 0. Pacotes Necessários ---

library(ggplot2)

# --- 1. Configurações Iniciais ---

set.seed(123)             # Semente (Para Reprodutibilidade)
n           <- 100        # Índice n

# --- 2. Geração dos Incrementos ---

incrementos <- sample(c(-1, 1), 
                      size = n, 
                      replace = TRUE, 
                      prob = c(0.5, 0.5))

# --- 3. Cálculo da Trajetória do Passeio Aleatório ---

trajetoria  <- c(0, cumsum(incrementos))  # Estado inicial em zero

# --- 4. Visualização Gráfica ---

df_passeio  <- data.frame(tempo = 0:n, 
                          valor = trajetoria)

ggplot(df_passeio, aes(x = tempo, y = valor)) +
  geom_line(color = "#003366") +
  geom_point(color = "#264653", size = 1.5) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "gray40") +
  labs(title = "",
       x = "Tempo (n)",
       y = expression(X[n])) +
  theme_minimal() +
  theme(axis.title.x = element_text(margin = margin(t = 10)),
        axis.title.y = element_text(margin = margin(r = 10)))


Figura 2.3.. Trajetória simulada do passeio aleatório simples com incrementos equiprováveis \(\pm 1\) e \(n = 100\).

\[\small \begin{align} \tag*{$\blacksquare$}\\\\ \end{align}\]

2.2. Cadeias de Markov Homogêneas


A partir da Definição 2.1, pode-se aprofundar a distinção entre dois importantes tipos de cadeias de Markov com base no comportamento temporal das probabilidades de transição. Quando todas as probabilidades de transição são independentes do tempo \(n\) (isto é, mantêm-se constantes para todo \(n \geqslant 0\)), diz-se que a cadeia é homogênea no tempo. Por outro lado, se ao menos uma das probabilidades de transição depende explicitamente do instante de tempo \(n\) (isto é, varia com \(n\) para \(i,j \in \mathcal{E}\)), então a cadeia é dita heterogênea no tempo (ou não-homogênea). Essa ideia nos leva a seguinte definição.


Definição 2.2 (Cadeia de Markov Homogênea). Seja \(\{X_n\}{n \geqslant 0}\) uma cadeia de Markov definida sobre um espaço de estados \(\mathcal{E}\). Diz-se que essa cadeia é homogênea no tempo se a probabilidade de transição de um estado \(i\) para um estado \(j\) não depende do instante \(n\) em que a transição ocorre. Isto é, \[\begin{align}\\ P[X_{n+1} = j \mid X_n = i] = p_{ij}, \\\\ \end{align}\] para todo \(n \geqslant 0\) e quaisquer \(i, j \in \mathcal{E}\). Em outras palavras, a estrutura probabilística do processo é invariante ao longo do tempo: a probabilidade de transição de \(i\) para \(j\) é a mesma em qualquer etapa da evolução da cadeia e depende exclusivamente dos estados envolvidos na transição, não do tempo em que ela ocorre.


Exemplo 2.4 (Cliente em um Serviço de Atendimento). Considere um cliente que interage com um serviço de atendimento ao consumidor (por exemplo, suporte técnico online ou por telefone). Após cada contato, o cliente pode manifestar um de dois estados de percepção: Satisfeito (estado 1) ou Insatisfeito (estado 0). Suponha que a percepção do cliente em um contato subsequente dependa exclusivamente de sua experiência anterior, e não do tempo em que a interação ocorre. Essa suposição caracteriza o processo como uma cadeia de Markov homogênea no tempo, conforme a Definição 2.2. Seja \(\{X_n\}_{n \geqslant 0}\) o processo estocástico que representa a sequência de estados de satisfação do cliente ao longo dos contatos com o serviço. Neste caso, admite-se as seguintes probabilidades de transição: \[\begin{align}\\ P[X_{n+1} = 1 \mid X_n = 1] &= 0{.}8, \quad \text{(cliente permanece satisfeito)} \\\\ P[X_{n+1} = 0 \mid X_n = 1] &= 0{.}2, \quad \text{(cliente passa a estar insatisfeito)} \\\\ P[X_{n+1} = 1 \mid X_n = 0] &= 0{.}5, \quad \text{(cliente recupera satisfação)} \\\\ P[X_{n+1} = 0 \mid X_n = 0] &= 0{.}5. \quad \text{(cliente continua insatisfeito)}\\\\ \end{align}\] Esse modelo permite analisar, sob uma perspectiva probabilística, a evolução da percepção do cliente ao longo do tempo. Ele pode ser utilizado, por exemplo, para inferir o grau de fidelização do cliente, avaliar a estabilidade da experiência de atendimento, ou estimar a probabilidade de o sistema manter o cliente satisfeito após várias interações sucessivas. O Código 2.4 apresenta uma implementação em linguagem R para simulação de uma trajetória da cadeia de Markov descrita, considerando \(n = 100\). A Figura 2.4 exibe graficamente a sequência simulada de estados, ilustrando a alternância entre satisfação e insatisfação ao longo do tempo.


Código 2.4. Simulação de uma trajetória da cadeia de Markov referente ao modelo de satisfação do cliente, com \(n = 100\) e probabilidades de transição homogêneas entre os estados satisfeito (\(1\)) e insatisfeito (\(0\)).

## ------------------------------------------------------
## Simulação da Cadeia de Markov: Fidelização do Cliente
## ------------------------------------------------------

# --- 0. Pacotes Necessários ---

library(ggplot2)

# --- 1. Configurações Iniciais ---

set.seed(42)                 # Semente (Para Reprodutibilidade)
n_contatos      <- 100       # Número Total de Contatos do Cliente

# --- 2. Espaço de Estados ---

estados         <- c(0, 1)   # 0: Insatisfeito, 1: Satisfeito

# --- 3. Inicialização da Cadeia de Markov ---

satisfacao      <- numeric(n_contatos)
satisfacao[1]   <- 1      # Estado Inicial: cliente Satisfeito no Primeiro Contato

# --- 4. Simulação da Cadeia ---

for (i in 2:n_contatos)
{
  if (satisfacao[i - 1] == 1) {
    
    # Cliente Satisfeito no Contato Anterior
    
    prob        <- c(0.2, 0.8)   # Probabilidade de Ir Para 0 (insatisfeito), 1 (satisfeito)
    
  } else {
    
    # Cliente Insatisfeito no Contato Anterior
    
    prob        <- c(0.5, 0.5)   # Probabilidade de Ir Para 0 (insatisfeito), 1 (satisfeito)
    
  }
  
  satisfacao[i] <- sample(estados, size = 1, prob = prob)
  
}

# --- 5. Preparação dos Dados Para Visualização ---

df_satisfacao   <- data.frame(contato = 1:n_contatos,
                              estado  = satisfacao)

# --- 6. Visualização Gráfica ---

ggplot(df_satisfacao, aes(x = contato, y = estado)) +
  geom_step(direction = "hv", color = "black") +
  geom_point(aes(color = factor(estado)), size = 2) +
  scale_y_continuous(breaks = estados,
                     labels = c("Insatisfeito", "Satisfeito")) +
  scale_color_manual(values = c("0" = "#E63946", "1" = "#2A9D8F"),
                     labels = c("Insatisfeito", "Satisfeito")) +
  labs(title = "",
       x = "Número do Contato",
       y = "Estado de Satisfação",
       color = "Estado") +
  theme_minimal() +
  theme(axis.title.x = element_text(margin = margin(t = 10)),
        axis.title.y = element_text(margin = margin(r = 10)))


Figura 2.4.. Trajetória simulada da cadeia de Markov referente ao modelo de satisfação do cliente, com \(n = 100\) e probabilidades de transição homogêneas entre os estados satisfeito (\(1\)) e insatisfeito (\(0\)).

\[\small \begin{align} \tag*{$\blacksquare$}\\\\ \end{align}\]

Exemplo 2.5 (Mobilidade entre Bairros). Considere um indivíduo que, a cada dia, pode estar em um dos três bairros de uma cidade: Residencial (R), Comercial (C) ou Industrial (I). Suponha que o bairro em que ele se encontra em determinado dia dependa apenas do bairro em que esteve no dia anterior, e que essa dinâmica de transição se mantenha constante ao longo do tempo. Seja, portanto, o espaço de estados dado por \(\mathcal{E} = \{\text{R}, \text{C}, \text{I}\}\), e denote-se por \(X_n\) o bairro em que o indivíduo se encontra no dia \(n\). Neste caso, a sequência \(\{X_n\}_{n \ \geqslant \ 0}\) constitui uma cadeia de Markov. Suponha que esta cadeia seja governada pelas seguintes probabilidades de transição: \[\begin{align}\\ P[X_{n+1} = j \mid X_n = i] = p_{ij}\\\\ \end{align}\] com as seguintes probabilidades de transição: \[\begin{align}\\ P[X_{n+1} = \text{R} \mid X_n = \text{R}] &= 0{.}5, \quad &P[X_{n+1} = \text{C} \mid X_n = \text{R}] &= 0{.}4, \quad &P[X_{n+1} = \text{I} \mid X_n = \text{R}] &= 0{.}1, \\\\ P[X_{n+1} = \text{R} \mid X_n = \text{C}] &= 0{.}3, \quad &P[X_{n+1} = \text{C} \mid X_n = \text{C}] &= 0{.}4, \quad &P[X_{n+1} = \text{I} \mid X_n = \text{C}] &= 0{.}3, \\\\ P[X_{n+1} = \text{R} \mid X_n = \text{I}] &= 0{.}2, \quad &P[X_{n+1} = \text{C} \mid X_n = \text{I}] &= 0{.}3, \quad &P[X_{n+1} = \text{I} \mid X_n = \text{I}] &= 0{.}5.\\\\ \end{align}\] Como as probabilidades de transição são constantes ao longo do tempo, isto é, as transições entre os bairros não dependem do instante \(n\), a cadeia é homogênea no tempo. Este modelo, em particular, descreve um processo de migração diária entre diferentes regiões urbanas, podendo representar deslocamentos motivados por trabalho, estudo ou lazer. Sua utilidade se estende à modelagem de fluxos populacionais e previsão de carga sobre a infraestrutura de transporte urbano. O Código 2.5 apresenta uma implementação em linguagem R para simulação de uma trajetória da cadeia de Markov descrita, considerando \(n = 100\). A Figura 2.5 exibe graficamente a sequência simulada de estados, ilustrando os deslocamentos entre os bairros ao longo do tempo.


Código 2.5. Simulação de uma trajetória da cadeia de Markov referente ao modelo de mobilidade entre bairros, com \(n = 100\) e probabilidades de transição homogêneas entre os estados residencial, comercial e industrial.

## -------------------------------------------
## Simulação de Migração Diária entre Bairros 
## -------------------------------------------

# --- 0. Pacotes Necessários ---

library(ggplot2)
library(dplyr)

# --- 1. Configurações Iniciais ---

set.seed(2025)                      # Semente para Reprodutibilidade
n_dias        <- 100                # Número de Dias
estados       <- c("R", "C", "I")   # Espaço de Estados

# --- 2. Probabilidades de Transição ---

transicoes    <- list("R" = c(0.5, 0.4, 0.1),
                      "C" = c(0.3, 0.4, 0.3),
                      "I" = c(0.2, 0.3, 0.5))

# --- 3. Simulação da Trajetória da Cadeia de Markov ---

trajetoria    <- character(n_dias)
trajetoria[1] <- "R"  # Estado Inicial

for (t in 2:n_dias)
{
  estado_anterior <- trajetoria[t - 1]
  trajetoria[t]   <- sample(estados, 
                            size = 1, 
                            prob = transicoes[[estado_anterior]])
}

# --- 4. Preparação dos Dados para Visualização ---

mapa_estados  <- c("R" = 1, "C" = 2, "I" = 3)

df_trajetoria <- data.frame(dia = 1:n_dias,
                            bairro = factor(trajetoria, levels = estados, 
                                            labels = c("Residencial", "Comercial", "Industrial")),
                            bairro_num = mapa_estados[trajetoria])

# --- 5. Visualização Gráfica ---

ggplot(df_trajetoria, aes(x = dia, y = bairro_num)) +
  geom_step(color = "black", direction = "hv") +
  geom_point(aes(color = bairro), size = 2.5) +
  scale_color_manual(values = c("Residencial" = "forestgreen", 
                                "Comercial"   = "blue", 
                                "Industrial"  = "gray40")) +
  scale_y_continuous(breaks = 1:3, 
                     labels = c("Residencial", "Comercial", "Industrial")) +
  labs(title  = "",
       x      = "Dia",
       y      = "Bairro",
       color  = "Bairro") +
  theme_minimal() +
  theme(axis.title.x = element_text(margin = margin(t = 10)),
        axis.title.y = element_text(margin = margin(r = 10)),
        legend.position  = "none")


Figura 2.5.. Trajetória simulada da cadeia de Markov referente ao modelo de mobilidade entre bairros, com \(n = 100\) e probabilidades de transição homogêneas entre os estados residencial, comercial e industrial.

\[\small \begin{align} \tag*{$\blacksquare$}\\\\ \end{align}\]

Exemplo 2.6 (Evolução Diária do Clima com Cadeia de Markov Heterogênea). Considere um modelo para o clima diário em uma determinada região, no qual o estado climático em cada dia pode ser um dos três seguintes: Ensolarado (E), Nublado (N) e Chuvoso (C). Diferentemente de uma cadeia homogênea, as probabilidades de transição entre os estados variam conforme a estação do ano, refletindo dinâmicas climáticas distintas para primavera, verão e outono. Seja o espaço de estados \(\mathcal{E} = \{ \text{E}, \text{N}, \text{C} \}\) e \(X_n\) o estado do clima no dia \(n\). A cadeia de Markov heterogênea que descreve a evolução do clima satisfaz: \[\begin{align}\\ p_{ij}^{\{n\}} = P[X_{n+1} = j \mid X_n = i]\\\\ \end{align}\] onde as probabilidades de transição \(p_{ij}^{\{n\}}\) dependem do tempo \(n\), refletindo as diferentes estações:


  • Para \(1 \leqslant n \leqslant 30\) (Primavera), \[\begin{align}\\ p_{EE}^{\{n\}} &= 0{.}7, \quad &p_{EN}^{\{n\}} &= 0{.}2, \quad &p_{EC}^{\{n\}} &= 0{.}1 \\\\ p_{NE}^{\{n\}} &= 0{.}3, \quad &p_{NN}^{\{n\}} &= 0{.}4, \quad &p_{NC}^{\{n\}} &= 0{.}3 \\\\ p_{CE}^{\{n\}} &= 0{.}2, \quad &p_{CN}^{\{n\}} &= 0{.}3, \quad &p_{CC}^{\{n\}} &= 0{.}5 \\\\ \end{align}\]

  • Para \(31 \leqslant n \leqslant 60\) (Verão), \[\begin{align}\\ p_{EE}^{\{n\}} &= 0{.}6, \quad &p_{EN}^{\{n\}} &= 0{.}3, \quad &p_{EC}^{\{n\}} &= 0{.}1 \\\\ p_{NE}^{\{n\}} &= 0{.}2, \quad &p_{NN}^{\{n\}} &= 0{.}5, \quad &p_{NC}^{\{n\}} &= 0{.}3 \\\\ p_{CE}^{\{n\}} &= 0{.}1, \quad &p_{CN}^{\{n\}} &= 0{.}3, \quad &p_{CC}^{\{n\}} &= 0{.}6 \\\\ \end{align}\]

  • Para \(61 \leqslant n \leqslant 90\) (Outono), \[\begin{align}\\ p_{EE}^{\{n\}} &= 0{.}5, \quad &p_{EN}^{\{n\}} &= 0{.}3, \quad &p_{EC}^{\{n\}} &= 0{.}2 \\\\ p_{NE}^{\{n\}} &= 0{.}3, \quad &p_{NN}^{\{n\}} &= 0{.}3, \quad &p_{NC}^{\{n\}} &= 0{.}4 \\\\ p_{CE}^{\{n\}} &= 0{.}2, \quad &p_{CN}^{\{n\}} &= 0{.}4, \quad &p_{CC}^{\{n\}} &= 0{.}4 \\\\ \end{align}\]


Neste contexto, a cadeia é heterogênea no tempo, pois as probabilidades de transição dependem explicitamente do índice temporal \(n\), refletindo as mudanças sazonais do clima. Este modelo pode ser utilizado para prever a sequência provável de estados climáticos ao longo de diferentes estações, auxiliando em planejamento agrícola, controle de recursos hídricos e análise de padrões climáticos regionais. O Código 2.6 apresenta uma implementação em linguagem R para simulação da trajetória da cadeia heterogênea descrita, considerando 90 dias de observação. A Figura 2.6 ilustra graficamente a sequência simulada dos estados climáticos, evidenciando as variações e transições ao longo das estações.


Código 2.6. Simulação de uma cadeia de Markov heterogênea para modelagem do clima diário em diferentes estações do ano, com 90 dias de evolução.

## -------------------------------------------------------------
## Simulação da Evolução Diária do Clima em Diferentes Estações
## -------------------------------------------------------------

# --- 0. Pacotes Necessários ---

library(ggplot2)
library(dplyr)

# --- 1. Configurações Iniciais ---

set.seed(2025)               # Semente (Reprodutibilidade)
n_dias        <- 90          # Número Total de Dias
estados       <- c("E", "N", "C")  # Ensolarado, Nublado, Chuvoso

# --- 2. Definição das Probabilidades de Transição ---

# Probabilidades Para Primavera (Dias 1 a 30)

p_primavera   <- list("E" = c(0.7, 0.2, 0.1),
                      "N" = c(0.3, 0.4, 0.3),
                      "C" = c(0.2, 0.3, 0.5))

# Probabilidades Para Verão (Dias 31 a 60)

p_verao       <- list("E" = c(0.6, 0.3, 0.1),
                      "N" = c(0.2, 0.5, 0.3),
                      "C" = c(0.1, 0.3, 0.6))

# Probabilidades Para Outono (Dias 61 a 90)

p_outono      <- list("E" = c(0.5, 0.3, 0.2),
                      "N" = c(0.3, 0.3, 0.4),
                      "C" = c(0.2, 0.4, 0.4))

# --- 3. Função Para Obter as Probabilidades Conforme o Dia ---

get_prob      <- function(dia, estado_atual) 
{
  if (dia <= 30) {
    return(p_primavera[[estado_atual]])
  } else if (dia <= 60) {
    return(p_verao[[estado_atual]])
  } else {
    return(p_outono[[estado_atual]])
  }
}

# --- 4. Simulação da Cadeia ---

clima         <- character(n_dias)
clima[1]      <- "E"  # Estado Inicial: Ensolarado

for (dia in 2:n_dias) 
{
  probs       <- get_prob(dia - 1, clima[dia - 1])
  clima[dia]  <- sample(estados, size = 1, prob = probs)
}

# --- 5. Preparação dos Dados para Visualização ---

estado_num    <- c("E" = 1, "N" = 2, "C" = 3)

df_clima      <- data.frame(dia = 1:n_dias,
                            estado = factor(clima, levels = estados,
                                            labels = c("Ensolarado", "Nublado", "Chuvoso")),
                            estado_num = estado_num[clima])

# --- 6. Visualização Gráfica ---

ggplot(df_clima, aes(x = dia, y = estado_num)) +
  geom_step(color = "black", direction = "hv") +
  geom_point(aes(color = estado), size = 2.5) +
  scale_color_manual(values = c("Ensolarado" = "goldenrod1",
                                "Nublado" = "gray60",
                                "Chuvoso" = "steelblue3")) +
  scale_y_continuous(breaks = 1:3, labels = c("Ensolarado", "Nublado", "Chuvoso")) +
  labs(title = "",
       x = "Dia",
       y = "Estado do Clima",
       color = "Clima") +
  theme_minimal() +
  theme(axis.title.x = element_text(margin = margin(t = 10)),
        axis.title.y = element_text(margin = margin(r = 10)),
        legend.position  = "none")


Figura 2.6.. Trajetória simulada da cadeia de Markov heterogênea para modelagem do clima diário em diferentes estações do ano, com 90 dias de evolução.

\[\small \begin{align} \tag*{$\blacksquare$}\\\\ \end{align}\]

2.3. Matriz de Transição


A partir deste ponto, restringiremos nosso estudo às cadeias de Markov homogêneas, isto é, aquelas em que a probabilidade de transição de um estado \(i\) para um estado \(j\) independe do instante temporal \(n\) em que a transição ocorre. Para essas cadeias, a partir dos coeficientes \(p_{ij}\), é possível construir a matriz \(P\) de probabilidades de transição. Essa matriz, chamada de matriz de transição e de dimensão \(|\mathcal{E}| \times |\mathcal{E}|\), possui em sua entrada da \(i\)-ésima linha e \(j\)-ésima coluna o valor \(p_{ij}\). Cada elemento \(p_{ij}\) representa a probabilidade de transição do estado \(i\) para o estado \(j\).


Definição 2.3 (Matriz de Transição). Seja \(\{X_n\}_{n \in \mathbb{N}_0}\) uma cadeia de Markov homogênea com espaço de estados enumerável \(\mathcal{E}\). Uma matriz \(P = [p_{ij}]\), com índices \(i, j \in \mathcal{E}\) e dimensão \(|\mathcal{E}| \times |\mathcal{E}|\), é chamada de matriz de transição se, para todo \(n \geqslant 0\) e para todos \(i, j \in \mathcal{E}\), seus elementos satisfazem: \[\begin{align}\\ P[X_{n+1} = j \mid X_n = i] = p_{ij} \geqslant 0, \quad \text{com} \quad \sum_{j\ \in\ \mathcal{E}} p_{ij} = 1\\\\ \end{align}\] em que \(p_{ij}\) representa a probabilidade de transição do estado \(i\) para o estado \(j\), independente do tempo \(n\). Se \(\mathcal{E}\) é finito, por exemplo \(\mathcal{E} = \{0, 1, \ldots, N\}\), então a matriz \(P\) pode ser representada como: \[\begin{align}\\ P = \begin{bmatrix} p_{00} & p_{01} & \ldots & p_{0N} \\ p_{10} & p_{11} & \ldots & p_{1N} \\ \vdots & \vdots & \ddots & \vdots \\ p_{N0} & p_{N1} & \ldots & p_{NN} \\ \end{bmatrix}\\\\ \end{align}\] em que a \(i\)-ésima linha corresponde às probabilidades de transição do estado \(i\) para os estados \(0, 1, \ldots, N\).


Exemplo 2.7 (Avaliação da Satisfação de um Cliente com um Serviço). Uma empresa deseja monitorar a satisfação de seus clientes em relação a um serviço prestado diariamente. O nível de satisfação de um cliente é classificado em três estados possíveis: (1) Insatisfeito, (2) Neutro, e (3) Satisfeito. A cada dia, a satisfação pode evoluir positivamente, negativamente ou permanecer inalterada, conforme diversos fatores como atendimento, desempenho do serviço e tempo de espera. Com base em dados históricos e julgamento de especialistas, a empresa estabelece as seguintes probabilidades de transição entre os estados de um dia para o outro:


  • Um cliente insatisfeito tende a permanecer insatisfeito com alta probabilidade, mas existe chance de melhora:

    • \(P(\text{Insatisfeito} \to \text{Insatisfeito}) = 0.6\)

    • \(P(\text{Insatisfeito} \to \text{Neutro}) = 0.3\)

    • \(P(\text{Insatisfeito} \to \text{Satisfeito}) = 0.1\)

  • Um cliente neutro apresenta maior estabilidade, embora haja chances significativas de transição:

    • \(P(\text{Neutro} \to \text{Insatisfeito}) = 0.2\)

    • \(P(\text{Neutro} \to \text{Neutro}) = 0.5\)

    • \(P(\text{Neutro} \to \text{Satisfeito}) = 0.3\)

  • Um cliente satisfeito tende a manter-se satisfeito, mas pode regredir:

    • \(P(\text{Satisfeito} \to \text{Insatisfeito}) = 0.1\)

    • \(P(\text{Satisfeito} \to \text{Neutro}) = 0.2\)

    • \(P(\text{Satisfeito} \to \text{Satisfeito}) = 0.7\)

Essas probabilidades podem ser organizadas na matriz de transição \(P\), onde as linhas indicam o estado atual e as colunas indicam o próximo estado: \[\begin{align}\\ P = \begin{bmatrix} \text{Insatisfeito} & \text{Neutro} & \text{Satisfeito} \\ \hline 0.6 & 0.3 & 0.1 \\ 0.2 & 0.5 & 0.3 \\ 0.1 & 0.2 & 0.7 \end{bmatrix} \begin{matrix} \\ \text{Insatisfeito} \\ \text{Neutro} \\ \text{Satisfeito} \end{matrix}\\\\ \end{align}\]

O Código 2.7 apresenta uma implementação, em linguagem R, para simulação da evolução da satisfação de 10 clientes, todos inicialmente no estado insatisfeito, com base na matriz de transição especificada. O experimento consiste na geração de \(n_{\text{rep}} = 10\) trajetórias independentes de uma cadeia de Markov homogênea em tempo discreto, cada uma simulada ao longo de um horizonte temporal de \(T = 100\) períodos (dias). Todas as trajetórias são inicializadas no estado \(X_0 = 1\), que representa a condição de insatisfeito. Para cada cliente \(k = 1, \dots, n_{\text{rep}}\), a trajetória \(\left\{X_t^{(k)}\right\}_{t = 0}^T\) é gerada segundo o seguinte mecanismo estocástico recursivo:


  • Inicialização: \[\begin{align}\\ X_0^{(k)} = 1\\\\ \end{align}\]
  • Evolução temporal, para \(t = 1, 2, \dots, T\): \[\begin{align}\\ X_t^{(k)} \sim \text{Categorical}\left(p_{X_{t-1}^{(k)}, 1}, p_{X_{t-1}^{(k)}, 2}, p_{X_{t-1}^{(k)}, 3}\right)\\\\ \end{align}\] onde a variável aleatória \(X_t^{(k)}\) segue uma distribuição categórica (que é uma generalização da distribuição de Bernoulli para dados categóticos), cuja função de massa de probabilidade é definida pelas probabilidades da linha da matriz \(P\) correspondente ao estado imediatamente anterior, \(X_{t-1}^{(k)}\).


Do ponto de vista computacional, a implementação deste procedimento é realizada mediante a utilização da função sample(), que permite a geração de variáveis categóricas, com o vetor de probabilidades definido pela linha da matriz de transição associada ao estado corrente. Por fim, a Figura 2.7 apresenta, de forma gráfica, as trajetórias simuladas, permitindo uma análise visual da dinâmica de transição entre os estados de satisfação ao longo do tempo. Essa representação possibilita observar, qualitativamente, os padrões de permanência e transição dos clientes entre os estados insatisfeito, neutro e satisfeito durante o período analisado.


Código 2.7. Simulação da evolução da satisfação de 10 clientes ao longo de 100 dias, todos inicialmente no estado insatisfeito, com base na matriz de transição definida para o processo.

## --------------------------------------------------------
## Evolução da Satisfação de Clientes via Cadeia de Markov
## --------------------------------------------------------

# --- 0. Pacotes Necessários ---

library(ggplot2)
library(dplyr)

# --- 1. Configurações Iniciais ---

set.seed(123)                          # Semente (Para Reprodutibilidade)
n_replicas      <- 10                  # Número de Clientes (Trajetórias)
n_tempo         <- 100                 # Número de Dias
estados         <- c("Insatisfeito", 
                     "Neutro", 
                     "Satisfeito")     # Estados Possíveis

# --- 2. Matriz de Transição ---

P <- matrix(c(0.6, 0.3, 0.1,           # Linha 1: Insatisfeito
              0.2, 0.5, 0.3,           # Linha 2: Neutro
              0.1, 0.2, 0.7),          # Linha 3: Satisfeito
            nrow = 3, byrow = TRUE)

# --- 3. Função de Simulação da Cadeia ---

simular_cadeia  <- function(n, P, estado_inicial = 1) 
{
  cadeia        <- numeric(n)
  cadeia[1]     <- estado_inicial
  for (t in 2:n) 
  {
    cadeia[t]   <- sample(1:3, 1, prob = P[cadeia[t - 1], ])
  }
  return(cadeia)
}

# --- 4. Simulação das Trajetórias ---

trajetorias     <- lapply(1:n_replicas, function(i) simular_cadeia(n_tempo, P))

df_clientes     <- do.call(rbind, 
                           lapply(1:n_replicas,
                                  function(i){data.frame(tempo   = 1:n_tempo,
                                                         estado  = trajetorias[[i]],
                                                         cliente = paste("Cliente", i),
                                                         label   = factor(estados[trajetorias[[i]]], 
                                                                          levels = estados))}))

# --- 5. Visualização Gráfica ---

ggplot(df_clientes, aes(x = tempo, y = as.numeric(label), group = cliente)) +
  geom_step(aes(color = label), direction = "hv", alpha = 0.7, linewidth = 0.5) +
  geom_point(aes(color = label), size = 1.5, alpha = 0.8) +
  facet_wrap(~ cliente, ncol = 2) +
  scale_y_continuous(breaks = 1:3, labels = estados) +
  scale_color_manual(values = c("Insatisfeito" = "red", 
                                "Neutro"       = "orange", 
                                "Satisfeito"   = "forestgreen")) +
  labs(title  = "",
       x      = "Tempo (dias)",
       y      = "Estado",
       color  = "Estado") +
  theme_minimal() +
  theme(legend.position = "none",
        axis.title.x    = element_text(margin = margin(t = 10)),
        axis.title.y    = element_text(margin = margin(r = 10)))


Figura 2.7.. Trajetórias simuladas da evolução da satisfação de 10 clientes ao longo de 100 dias, todos inicialmente no estado insatisfeito.


Com base na simulação realizada, é possível estimar, para cada cliente, a proporção de tempo em que permaneceu em cada um dos estados ao longo da trajetória. Para isso, os dados podem ser agrupados por cliente e estado, computando-se a frequência relativa de cada estado em relação ao total de etapas simuladas. O Código 2.8 apresenta a implementação, em linguagem R, desse procedimento, enquanto a Figura 2.8 apresenta graficamente as proporções estimadas por cliente e estado.


Código 2.8. Estimativa da proporção de tempo em que cada cliente permaneceu nos estados insatisfeito, neutro e satisfeito, com base nas trajetórias simuladas.

## -----------------------------------------------------------------------------------------
## Evolução da Satisfação de Clientes: Estimativa Empírica da Proporção de Tempo por Estado
## -----------------------------------------------------------------------------------------

# --- 0. Pacotes Necessários ---

library(dplyr)
library(ggplot2)

# --- 1. Cálculo da Frequência Empírica por Estado ---

frequencia_empirica   <- df_clientes %>%
                           group_by(cliente, label) %>%
                             summarise(freq = n(), .groups = "drop") %>%
                               group_by(cliente) %>%
                                 mutate(prop = freq / sum(freq)) %>%
                                   arrange(cliente, label)

# --- 2. Visualização Gráfica ---

ggplot(frequencia_empirica, aes(x = cliente, y = prop, fill = label)) +
  geom_bar(stat = "identity", color = "white") +
  scale_fill_manual(values = c("Insatisfeito" = "red",
                               "Neutro" = "orange", 
                               "Satisfeito" = "forestgreen")) +
  labs(title = "",
       x = "Cliente",
       y = "Proporção de Tempo",
       fill = "Estado") +
  theme_minimal() +
  theme(legend.position = "left",
        axis.title.x    = element_text(margin = margin(t = 10)),
        axis.title.y    = element_text(margin = margin(r = 10)))


Figura 2.8.. Estimativa da proporção de tempo em que cada cliente permaneceu nos estados insatisfeito, neutro e satisfeito, com base nas trajetórias simuladas.

\[\small \begin{align} \tag*{$\blacksquare$}\\\\ \end{align}\]

Teorema 2.1 (Basu 2003). Uma cadeia de Markov \(\{X_n\}_{n \ \geqslant \ 0}\), com espaço de estados \(\mathcal{E}\), é completamente caracterizada por sua matriz de transição \(P = [p_{ij}]\), que descreve as probabilidades de transição entre os estados, e por uma distribuição inicial \(p_{k}\), definida por: \[\begin{align}\\ P[X_0 = k] = p_{k} \geqslant 0, \quad \text{ com } \quad \sum_{k\, \in\, \mathcal{E}} p_{k} = 1\\\\ \end{align}\] A dupla \((P, p_{k})\) determina de forma única toda a dinâmica probabilística de \(\{X_n\}_{n\geqslant 0}\).


Demonstração. Seja \({X_n}{n \geqslant 0}\) uma cadeia de Markov com espaço de estados \(\mathcal{E}\) e matriz de transição \(P = [p{ij}]\). Pela definição de probabilidade condicional, tem-se: \[\begin{align}\\ P[X_n = i_n, \dots, X_0 = i_0] = P[X_n = i_n \mid X_{n-1} = i_{n-1}, \dots, X_0 = i_0] P[X_{n-1} = i_{n-1}, \dots, X_0 = i_0]\\\\ \end{align}\] Como \(\{X_n\}_{n \geqslant 0}\) é uma cadeia de Markov, satisfaz a propriedade de Markov, isto é, \[\begin{align}\\ P[X_n = i_n \mid X_{n-1} = i_{n-1}, \dots, X_0 = i_0] = P[X_n = i_n \mid X_{n-1} = i_{n-1}]\\\\ \end{align}\] Substituindo este resultado na primeira relação, obtém-se que: \[\begin{align}\\ P[X_n = i_n, \dots, X_0 = i_0] = P[X_n = i_n \mid X_{n-1} = i_{n-1}] P[X_{n-1} = i_{n-1}, \dots, X_0 = i_0]\\\\ \end{align}\] Pela definição da matriz de transição, segue que: \[\begin{align}\\ P[X_k = i_k \mid X_{k-1} = i_{k-1}] = p_{i_{k-1} i_k}\\\\ \end{align}\] para todo \(k = 1, \dots, n\). Aplicando este raciocínio recursivamente, por indução sobre \(n\), conclui-se que: \[\begin{align}\\ P[X_n = i_n, \dots, X_0 = i_0] = p_{i_0} \prod_{k=1}^{n} p_{i_{k-1} i_k}\\\\ \end{align}\] em que \(p_{i_0} = P[X_0 = i_0]\), neste caso, denota a distribuição inicial da cadeia. Portanto, a distribuição conjunta \((X_0, X_1, \dots, X_n)\) é completamente determinada pela distribuição inicial \(p_{i_0}\) e pela matriz de transição \(P\), como queríamos demonstrar.

\[\small \begin{align} \tag*{$\blacksquare$}\\\\ \end{align}\]

A partir do Teorema 2.1, é possível descrever a evolução temporal da cadeia por meio das chamadas probabilidades de transição em \(n\) passos, que generalizam a matriz de transição de um único passo. Considere, para isso, uma sequência de experimentos em que os possíveis estados são representados por elementos \(\mathcal{E}_1, \mathcal{E}_2, \dots, \mathcal{E}_k, \dots\) do espaço de estados \(\mathcal{E}\). Suponha que, para cada par de estados \((\mathcal{E}_j, \mathcal{E}_k)\), exista uma probabilidade de transição \(p_{jk}\), correspondente à probabilidade de a cadeia transitar de \(\mathcal{E}_j\) para \(\mathcal{E}_k\) em um único passo. Denote por \(p_{jk}^{(n)}\) a probabilidade de que, iniciando no estado \(\mathcal{E}_j\), a cadeia se encontre no estado \(\mathcal{E}_k\) após exatamente \(n\) passos. Essa quantidade pode ser interpretada como a soma das probabilidades associadas a todos os caminhos de comprimento \(n\) que conectam \(\mathcal{E}_j\) a \(\mathcal{E}_k\), isto é, sequências da forma \(\mathcal{E}_j \to \mathcal{E}_{j_1} \to \cdots \to \mathcal{E}_{j_{n-1}} \to \mathcal{E}_k\). Esse conceito nos conduz a um dos resultados mais importantes da teoria das cadeias de Markov: a equação de Chapman-Kolmogorov, que será apresentada no teorema a seguir.


Teorema 2.2 (Equação de Chapman-Kolmogorov - Basu 2003). Seja \(\{X_n\}_{n \ \geqslant \ 0}\) uma cadeia de Markov com espaço de estados \(\mathcal{E}\) e matriz de transição \(P = [p_{ij}]\). Denote por \(p_{ij}^{(n)}\) a probabilidade de transição do estado \(\mathcal{E}_i\) para o estado \(\mathcal{E}_j\) em exatamente \(n\) passos, isto é, \[\begin{align}\\ p_{ij}^{(n)} = P[X_n = j \mid X_0 = i]\\\\ \end{align}\] Então, para todo \(n \geqslant 1\), vale a seguinte relação recursiva: \[\begin{align}\\ p_{ij}^{(n)} = \sum_{k\, \in\, \mathcal{E}} p_{ik}^{(n-1)} p_{kj}\\\\ \end{align}\] em que a soma percorre todos os estados intermediários \(k \in \mathcal{E}\). Além disso, a condição inicial para \(n = 0\) é dada por: \[\begin{align}\\ p_{ij}^{(0)} = P[X_0 = j \mid X_0 = i] = \delta_{ij},\\\\ \end{align}\] em que \(\delta_{ij}\) é o delta de Kronecker, definido por: \[\begin{align}\\ \delta_{ij} = \begin{cases} 1, & \text{se }\quad i = j, \\ 0, & \text{se }\quad i \neq j. \end{cases}\\\\ \end{align}\] Para simplificar a notação e expressar a equação de Chapman-Kolmogorov de forma compacta, podemos utilizar a notação matricial. Neste caso, denotando por \(P^n = \left[p_{ij}^{(n)}\right]\) a matriz de transição em \(n\) passos — em que \(p_{ij}^{(n)}\) representa o elemento \((i,j)\) da matriz \(P^n\) —, a equação de Chapman-Kolmogorov pode ser escrita como: \[\begin{align}\\ P^{n} = P^{n-1} P, \quad \text{com}\quad P^{0} = I\\\\ \end{align}\] em que \(I\) é a matriz identidade de mesma dimensão que \(P\).


Demonstração. Note, pela definição de probabilidade de transição, que, \[\begin{align}\\ p_{ij}^{(n)} &= P[X_n = j \mid X_0 = i]\\\\ &= \sum_{k \ \in \ \mathcal{E}} P[X_n = j \mid X_{n-1} = k, X_0 = i] P[X_{n-1} = k \mid X_0 = i]\\\\ \end{align}\] Agora, como \(\{X_n\}_{n\, \geqslant\, 0}\) é uma cadeia de Markov, então, \[\begin{align}\\ p_{ij}^{(n)} &= \sum_{k \ \in \ \mathcal{E}} P[X_n = j \mid X_{n-1} = k, X_0 = i] P[X_{n-1} = k \mid X_0 = i]\\\\ &= \sum_{k \ \in \ \mathcal{E}} P[X_n = j \mid X_{n-1} = k] P[X_{n-1} = k \mid X_0 = i]\\\\ &= \sum_{k \ \in \ \mathcal{E}} p_{kj}^{(1)} p_{ik}^{(n-1)}\\\\ \end{align}\] Portanto, como \(p_{jk}^{(1)} = p_{jk}\), tem-se que: \[\begin{align}\\ p_{ij}^{(n)} = \sum_{k \ \in \ \mathcal{E}} p_{ik}^{(n-1)} p_{kj}\\\\ \end{align}\] como queríamos demonstrar.

\[\small \begin{align} \tag*{$\blacksquare$}\\\\ \end{align}\]

Exemplo 2.8. Considere uma empresa composta por três departamentos, A, B e C. Suponha que, a cada dia, um colaborador possa permanecer no mesmo departamento ou ser transferido para outro, de acordo com a seguinte matriz de transição: \[\begin{align}\\ P = \begin{bmatrix} \text{Depto A} & \text{Depto B} & \text{Depto C} \\ \hline 0.6 & 0.3 & 0.1 \\ 0.2 & 0.5 & 0.3 \\ 0.3 & 0.3 & 0.4 \end{bmatrix}\begin{matrix} \\ \text{Depto A} \\ \text{Depto B} \\ \text{Depto C} \end{matrix}\\\\ \end{align}\] Esse modelo conduz às seguintes interpretações:


  • No instante inicial (\(n = 0\)), há certeza quanto à posição do colaborador: a distribuição de probabilidade é determinística, sendo igual a 1 para o estado inicial e 0 para os demais. Essa configuração é representada por um vetor unitário — ou, de forma equivalente, pela matriz identidade.

  • No passo \(n = 1\), as probabilidades de transição entre os departamentos são dadas pelas entradas da matriz \(P\). Por exemplo, a probabilidade de um trabalhador transferir-se do departamento A para o B em um dia é \(0{.}3\); do A para o C é \(0{.}1\); e assim por diante.

  • Para \(n > 1\), as distribuições são obtidas iterativamente a partir da equação de Chapman-Kolmogorov, por meio de multiplicações sucessivas da matriz de transição.

  • À medida que \(n\) cresce, espera-se que a distribuição dos estados se aproxime de uma distribuição, denominada distribuição estacionária, que é independente do estado inicial, desde que certas condições de regularidade sejam satisfeitas. Essa distribuição limite caracteriza o comportamento estacionário da cadeia.


Suponha que o objetivo seja estudar, passo a passo, a evolução da probabilidade de o colaborador encontrar-se em cada departamento ao longo do tempo. Para tal, assuma que o colaborador se encontra inicialmente no estado \(\mathcal{E}_1\) (Departamento A). Nesse caso, a distribuição inicial é dada pelo vetor: \[\begin{align}\\ p^{(0)} = [1,\ 0,\ 0]\\\\ \end{align}\] em que o elemento \(p_i^{(0)}\) representa a probabilidade de estar no estado \(\mathcal{E}_i\) no instante inicial \(n=0\). Aqui, \(p_1^{(0)} = 1\) indica que o colaborador está com certeza no departamento A ao início. A distribuição de probabilidade do estado no instante \(n\) é então dada pelo vetor: \[\begin{align}\\ p^{(n)} = p^{(0)} P^{n} = [p_1^{(n)},\, p_2^{(n)},\, p_3^{(n)}]\\\\ \end{align}\] onde cada componente \(p_j^{(n)}\), para \(j=1,2,3\), corresponde à probabilidade de o colaborador estar no estado \(\mathcal{E}_j\) no tempo \(n\), considerando a distribuição inicial \(p^{(0)}\). De forma explícita, \[\begin{align}\\ p_j^{(n)} = \sum_{i=1}^3 p_i^{(0)} p_{ij}^{(n)}\\\\ \end{align}\] em que \(p_{ij}^{(n)} = P[X_n = \mathcal{E}_j \mid X_0 = \mathcal{E}_i]\) é a probabilidade de transição do estado inicial \(\mathcal{E}_i\) para o estado \(\mathcal{E}_j\) em exatamente \(n\) passos, conforme definido no Teorema 2.2. Como neste exemplo o estado inicial é \(\mathcal{E}_1\) (Departamento A), tem-se \(p_i^{(0)} = \delta_{i1}\), de modo que: \[\begin{align}\\ p_j^{(n)} = p_{1j}^{(n)}\\\\ \end{align}\]

ou seja, a distribuição após \(n\) passos corresponde à primeira linha da matriz \(P^{n}\). Neste caso, tem-se que:


  • 1º Passo \((n = 1)\): Aplicando a matriz de transição \(P\) ao vetor inicial, tem-se \[\begin{align}\\ p^{(1)} = p^{(0)} \cdot P = [1,\ 0,\ 0] \cdot \begin{bmatrix} 0{.}6 & 0{.}3 & 0{.}1 \\ 0{.}2 & 0{.}5 & 0{.}3 \\ 0{.}3 & 0{.}3 & 0{.}4 \end{bmatrix} = [0{.}6,\ 0{.}3,\ 0{.}1]\\\\ \end{align}\]

  • 2º Passo \((n = 2)\): Para deteminar \(p^{(2)}\), deve-se aplicar a equação de Chapman-Kolmogorov: \[\begin{align}\\ p_{1j}^{(2)} = \sum_{k=1}^3 p_{1k}^{(1)} p_{kj}\\\\ \end{align}\] que, para \(j=1,2,3\) implica que: \[\begin{align}\\ p_{11}^{(2)} &= 0{.}6 \cdot 0{.}6 + 0{.}3 \cdot 0{.}2 + 0{.}1 \cdot 0{.}3 = 0{.}45 \\\\ p_{12}^{(2)} &= 0{.}6 \cdot 0{.}3 + 0{.}3 \cdot 0{.}5 + 0{.}1 \cdot 0{.}3 = 0{.}36 \\\\ p_{13}^{(2)} &= 0{.}6 \cdot 0{.}1 + 0{.}3 \cdot 0{.}3 + 0{.}1 \cdot 0{.}4 = 0{.}19 \\\\ \end{align}\] Assim, \[\begin{align}\\ p^{(2)} = [0{.}45,\, 0{.}36,\, 0{.}19]\\\\ \end{align}\]

  • 3º Passo \((n = 3)\): Para deteminar \(p^{(3)}\), deve-se aplicar, novamente, a equação de Chapman-Kolmogorov: \[\begin{align}\\ p_{1j}^{(3)} = \sum_{k=1}^3 p_{1k}^{(2)} p_{kj}\\\\ \end{align}\] que, para \(j=1,2,3\) implica que: \[\begin{align}\\ p_{11}^{(3)} = 0{.}45 \cdot 0{.}6 + 0{.}36 \cdot 0{.}2 + 0{.}19 \cdot 0{.}3 = 0{.}399 \\\\ p_{12}^{(3)} = 0{.}45 \cdot 0{.}3 + 0{.}36 \cdot 0{.}5 + 0{.}19 \cdot 0{.}3 = 0{.}372 \\\\ p_{13}^{(3)} = 0{.}45 \cdot 0{.}1 + 0{.}36 \cdot 0{.}3 + 0{.}19 \cdot 0{.}4 = 0{.}229 \\\\ \end{align}\] Assim, \[\begin{align}\\ p^{(3)} = [0{.}399,\, 0{.}372,\, 0{.}229]\\\\ \end{align}\]

Prosseguindo com esse processo iterativo, observa-se que a distribuição \(p^{(n)}\) converge, quando \(n \to \infty\), para o vetor fixo \(\boldsymbol{\pi}\) descrito por: \[\begin{align}\\ p^{(n)} \longrightarrow \boldsymbol{\pi} = \left[\frac{5}{12},\, \frac{5}{12},\, \frac{2}{12}\right] \approx [0{.}4167,\, 0{.}4167,\, 0{.}1667]\\\\ \end{align}\] Esse vetor \(\boldsymbol{\pi}\) é a distribuição estacionária da cadeia de Markov, que representa a proporção de tempo, no longo prazo, que o colaborador tende a permanecer em cada departamento. O mesmo raciocínio aplica-se a outras distribuições iniciais.Por exemplo:


  • Departamento B: \[\begin{align}\\ p^{(0)} = [0,\ 1,\ 0]\\\\ \end{align}\]

  • Departamento C: \[\begin{align}\\ p^{(0)} = [0,\ 0,\ 1]\\\\ \end{align}\]

A aplicação iterada da equação de Chapman-Kolmogorov conduz, em ambos os casos, à mesma distribuição limite \(\boldsymbol{\pi}\). Este comportamento pode ser visto por meio da evolução das potências da matriz de transição \(P\). De fato, \[\begin{align}\\ P^{2} &= \begin{bmatrix} \text{Depto A} & \text{Depto B} & \text{Depto C} \\ \hline 0.45 & 0.36 & 0.19 \\ 0.37 & 0.39 & 0.24 \\ 0.39 & 0.36 & 0.25 \end{bmatrix}\begin{matrix} \\ \text{Depto A} \\ \text{Depto B} \\ \text{Depto C} \end{matrix}\\\\ P^{3} &= \begin{bmatrix} \text{Depto A} & \text{Depto B} & \text{Depto C} \\ \hline 0.399 & 0.372 & 0.229 \\ 0.393 & 0.375 & 0.232 \\ 0.402 & 0.372 & 0.226 \end{bmatrix}\begin{matrix} \\ \text{Depto A} \\ \text{Depto B} \\ \text{Depto C} \end{matrix}\\\\ &\hspace{3.8cm}\vdots\\\\ P^{n} &= \begin{bmatrix} \text{Depto A} & \text{Depto B} & \text{Depto C} \\ \hline 0.4167 & 0.4167 & 0.1667 \\ 0.4167 & 0.4167 & 0.1667 \\ 0.4167 & 0.4167 & 0.1667 \end{bmatrix}\begin{matrix} \\ \text{Depto A} \\ \text{Depto B} \\ \text{Depto C} \end{matrix}\\\\ \end{align}\] Cada linha de \(P^{(n)}\) representa a distribuição de probabilidade condicional ao estado inicial. À medida que \(n\) aumenta, todas convergem para a distribuição estacionária, \(\boldsymbol{\pi}\), descrita por: \[\begin{align}\\ p^{(n)} \longrightarrow \boldsymbol{\pi} = \left[ \frac{5}{12},\ \frac{5}{12},\ \frac{2}{12} \right] \approx [0{.}4167,\ 0{.}4167,\ 0{.}1667]\\\\ \end{align}\] Esta análise evidencia como a iteração sucessiva da equação de Chapman-Kolmogorov possibilita a obtenção de aproximações numéricas cada vez mais precisas da distribuição estacionária de uma cadeia de Markov. O Código 2.9 apresenta a implementação em linguagem R para calcular iterativamente as probabilidades de transição da cadeia de Markov que modela a movimentação entre os três departamentos, considerando até 10 passos. A Figura 2.9 ilustra graficamente a evolução dessas probabilidades ao longo do tempo, evidenciando a convergência para a distribuição estacionária da cadeia.


Código 2.9. Cálculo iterativo das probabilidades de transição da cadeia de Markov dos departamentos com \(n=10\) passos, usando a equação de Chapman-Kolmogorov.

## --------------------------------------------------------------
## Equação de Chapman-Kolmogorov: Mobilidade entre Departamentos
## --------------------------------------------------------------

# --- 0. Pacotes Necessários ---

library(ggplot2)

# --- 1. Configurações Iniciais ---

set.seed(123)             # Semente (Para Reprodutibilidade)
n_passos      <- 10       # Número Total de Passos

# --- 2. Matriz de Transição ---

P             <- matrix(c(0.6, 0.3, 0.1,
                          0.2, 0.5, 0.3,
                          0.3, 0.3, 0.4),
                        nrow = 3, byrow = TRUE)

# --- 3. Inicialização da Estrutura para Resultados ---

resultados    <- list()
I <- diag(3)  # Matriz Identidade (Passo 0)

# Armazenar Probabilidades Iniciais (Passo 0)

for (i in 1:3)
{
  for (j in 1:3)
  {
    resultados[[length(resultados) + 1]] <- data.frame(Origem = i,
                                                       Destino = j,
                                                       Passos = 0,
                                                       Probabilidade = I[i, j])
  }
}

# --- 4. Cálculo Iterativo das Probabilidades de Transição ---

P_n           <- P

for (n in 1:n_passos)
{
  for (i in 1:3)
  {
    for (j in 1:3)
    {
      resultados[[length(resultados) + 1]] <- data.frame(Origem = i,
                                                         Destino = j,
                                                         Passos = n,
                                                         Probabilidade = P_n[i, j])
    }
  }
  
  P_n         <- P_n %*% P
}

df            <- do.call(rbind, resultados)
df$Transicao  <- factor(paste0("P[", df$Origem, df$Destino, "]"))

# --- 5. Visualização Gráfica ---

ggplot(df, aes(x = Passos, y = Probabilidade, color = Transicao)) +
  geom_line() +
  geom_point(size = 1.5) +
  labs(x = "Número de Passos",
       y = "Probabilidade",
       color = expression(P[ij])) +
  theme_minimal() +
  theme(axis.title.x = element_text(margin = margin(t = 10)),
        axis.title.y = element_text(margin = margin(r = 10)))


Figura 2.9.. Ilustração das probabilidades de transição da cadeia de Markov dos departamentos com \(n=10\) passos, usando a equação de Chapman-Kolmogorov.

\[\small \begin{align} \tag*{$\blacksquare$}\\\\ \end{align}\]

Exemplo 2.9 (Comportamento de um Cliente Entre Serviços Digitais). Considere um cliente que alterna entre dois serviços digitais de atendimento, \(A\) e \(B\), representados pelos estados \(\mathcal{E} = \{0, 1\}\). A cada dia, o cliente escolhe qual serviço utilizar com base em suas experiências recentes, configurando assim um processo que pode ser modelado como uma cadeia de Markov de dois estados, cuja matriz de transição de um passo é dada por: \[\begin{align}\\ P = \begin{bmatrix} \text{A} & \text{B}\\ \hline 0{.}5 & 0{.}5 \\ 0{.}3 & 0{.}7 \end{bmatrix}\begin{matrix} \\ \text{A} \\ \text{B}\end{matrix}\\\\ \end{align}\] Nesta matriz, as entradas representam as probabilidades de transição entre os serviços, em particular:


  • \(p_{00} = 0.5\): probabilidade de permanecer no serviço \(A\) no dia seguinte, dado que o cliente o utilizou hoje;

  • \(p_{01} = 0.5\): probabilidade de migrar para o serviço \(B\) após usar o serviço \(A\);

  • \(p_{10} = 0.3\): probabilidade de retornar ao serviço \(A\) após utilizar o serviço \(B\);

  • \(p_{11} = 0.7\): probabilidade de permanecer no serviço \(B\).


Nosso objetivo consiste em analisar a evolução temporal do comportamento do cliente, determinando as probabilidades de transição após múltiplos passos. Para tanto, calcularemos as potências da matriz de transição \(P^{n}\) para \(n = 2, 3, 4\), por meio da iteração da equação de Chapman-Kolmogorov: \[\begin{align}\\ P^{n} = P^{n-1} \cdot P, \quad n \geqslant 2\\\\ \end{align}\] com a condição inicial \(P^{1} = P\). Neste caso, as matrizes \(P^{2}\), \(P^{3}\) e \(P^{4}\) são, respectivamente: \[\begin{align}\\ P^{2} &= \begin{bmatrix} \text{A} & \text{B}\\ \hline 0{.}4 & 0{.}6 \\ 0{.}36 & 0{.}64 \end{bmatrix}\begin{matrix} \\ \text{A} \\ \text{B}\end{matrix}\\\\\\\\ P^{3} = P^{2} \cdot P &= \begin{bmatrix} \text{A} & \text{B}\\ \hline 0{.}38 & 0{.}62 \\ 0{.}372 & 0{.}628 \end{bmatrix}\begin{matrix} \\ \text{A} \\ \text{B}\end{matrix}\\\\\\\\ P^{4} = P^{3} \cdot P &= \begin{bmatrix} \text{A} & \text{B}\\ \hline 0{.}376 & 0{.}624 \\ 0{.}3744 & 0{.}6256 \end{bmatrix}\begin{matrix} \\ \text{A} \\ \text{B}\end{matrix}\\\\\\\\ \end{align}\] Observa-se que as linhas da matriz \(P^{n}\) se aproximam à medida que \(n\) cresce, indicando a diminuição da influência do estado inicial e a convergência para uma distribuição estacionária que descreve o comportamento de longo prazo do cliente. O Código 2.10 apresenta a implementação, em linguagem R, para o cálculo iterativo das matrizes de transição até \(n = 10\) passos. A Figura 2.10 ilustra graficamente a evolução das probabilidades de transição \(p_{ij}^{(n)}\) ao longo do número de passos \(n\), evidenciando a convergência observada numericamente.


Código 2.10. Cálculo iterativo das matrizes de transição \(P^{n}\) da cadeia de Markov do comportamento do cliente, usando 10 passos.

## -----------------------------------------------------------
## Equação de Chapman-Kolmogorov: Cliente e Serviços Digitais
## -----------------------------------------------------------

# --- 0. Pacotes Necessários ---

library(ggplot2)

# --- 1. Configuração da Cadeia de Markov ---

P               <- matrix(c(0.5, 0.5,
                            0.3, 0.7),
                          nrow = 2, byrow = TRUE)   # Matriz de Transição

n_passos        <- 10                               # Número de Passos

# --- 2. Armazenamento dos Resultados ---

resultados      <- list()
I               <- diag(2)                          # Matriz Identidade (Passo 0)

for (i in 1:2)
{
  for (j in 1:2) 
  {
    resultados[[length(resultados) + 1]] <- data.frame(Origem = i,
                                                       Destino = j,
                                                       Passos = 0,
                                                       Probabilidade = I[i, j])
  }
}

# --- 3. Cálculo das Matrizes P^(n) via Chapman-Kolmogorov ---

P_n         <- P

for (n in 1:n_passos)
{
  for (i in 1:2)
  {
    for (j in 1:2)
    {
      resultados[[length(resultados) + 1]] <- data.frame(Origem = i,
                                                         Destino = j,
                                                         Passos = n,
                                                         Probabilidade = P_n[i, j])
    }
  }
  
  P_n           <- P_n %*% P
}

df              <- do.call(rbind, resultados)
df$Transicao    <- factor(paste0("P[", df$Origem, df$Destino, "]"))

# --- 4. Visualização Gráfica ---

ggplot(df, aes(x = Passos, y = Probabilidade, color = Transicao)) +
  geom_line() +
  geom_point(size = 1.5) +
  labs(x = "Número de Passos",
       y = "Probabilidade",
       color = expression(P[ij])) +
  theme_minimal() +
  theme(axis.title.x = element_text(margin = margin(t = 10)),
        axis.title.y = element_text(margin = margin(r = 10)))


Figura 2.10.. Ilustração das probabilidades de transição da cadeia de Markov do comportamento do cliente com 10 passos.

\[\small \begin{align} \tag*{$\blacksquare$}\\\\ \end{align}\]

Outra forma de representar as probabilidades de transição (além das matrizes) de uma cadeia de Markov é por meio de um gráfico conectado, conhecido como grafo direcionado (ou dígrafo). Essa representação gráfica constitui uma ferramenta poderosa e intuitiva, especialmente adequada para cadeias de Markov com espaço de estados finito. Nela, cada estado da cadeia é representado como um (ou vértice) do grafo, enquanto as transições possíveis entre estados são representadas por arestas orientadas, rotuladas com os respectivos valores de probabilidade. Formalmente, considere uma cadeia de Markov a tempo discreto \(\{X_n\}_{n \ \geqslant \ 0}\) com espaço de estados finito \(\mathcal{E} = \{1, 2, \dots, N\}\), e matriz de transição \(P = [p_{ij}]\), em que: \[\begin{align}\\ p_{ij} = P[X_{n+1} = j \mid X_n = i]\\\\ \end{align}\] representa a probabilidade de transição do estado \(i\) para o estado \(j\) em um único passo. A construção do dígrafo associado à matriz de transição \(P\) obedece às seguintes regras:


  • Cada estado \(i\, \in\, \mathcal{E}\) é representado por um (ou vértice) do grafo.

  • Sempre que \(p_{ij} > 0\), adiciona-se uma aresta direcionada do nó \(i\) para o nó \(j\), indicando que a transição \(i \to j\) é possível.

  • Cada aresta é rotulada com o valor da probabilidade \(p_{ij}\) correspondente.


Para exemplificar a representação gráfica (ou dígrafo) de uma cadeia de Markov, considere a seguinte matriz de transição: \[\begin{align}\\ P = \begin{bmatrix} \text{E1} & \text{E2} & \text{E3}\\ \hline 0.5 & 0.5 & 0 \\ 0.2 & 0.3 & 0.5 \\ 0 & 0.4 & 0.6 \end{bmatrix}\begin{matrix} \\ \text{E1} \\ \text{E2} \\ \text{E3} \end{matrix}\\\\ \end{align}\] Essa matriz define uma cadeia de Markov a tempo discreto com três estados, ou seja, com espaço de estados \(\mathcal{E}=\{1,2,3\}\). A interpretação de suas transições é a seguinte:


  • Do Estado 1 (E1), há transições possíveis para os Estados 1 (auto-transição) e 2, com probabilidades 0.5 e 0.5, respectivamente.

  • Do Estado 2 (E2), as transições possíveis são para os Estados 1, 2 (auto-transição) e 3, com probabilidades 0.2, 0.3 e 0.5, respectivamente.

  • Do Estado 3 (E3), pode-se transitar para os Estados 2 e 3 (auto-transição), com probabilidades 0.4 e 0.6, respectivamente.


A representação gráfica (ou dígrafo) correspondente é construída da seguinte forma:


  • Cada estado \(i \in {1, 2, 3}\) é representado por um .

  • Uma aresta direcionada é traçada de \(i\) para \(j\) se \(p_{ij} > 0\), sendo rotulada com o valor da probabilidade de transição \(p_{ij}\).


O Código 2.11 apresenta uma implementação, em linguagem R, para gerar automaticamente o dígrafo da cadeia de Markov, com base na matriz de transição dada. A Figura 2.11 exibe o dígrafo correspondente, em que cada aresta é rotulada com sua respectiva probabilidade de transição, excluindo auto-transições para fins de clareza visual.


Código 2.11. Construção do dígrafo correspondente à cadeia de Markov com três estados, com base na matriz de transição \(P\).

## ------------------------------------------------------
## Representação Gráfica de Cadeia de Markov (3 Estados)
## ------------------------------------------------------

# --- 0. Pacotes Necessários ---

library(igraph)
library(ggraph)
library(tidygraph)
library(ggplot2)

# --- 1. Parâmetros da Matriz de Transição ---

p_11          <- 0.5  # E1 → E1 (Auto-Transição)
p_12          <- 0.5  # E1 → E2
p_13          <- 0.0  # E1 → E3

p_21          <- 0.2  # E2 → E1
p_22          <- 0.3  # E2 → E2 (Auto-Transição)
p_23          <- 0.5  # E2 → E3

p_31          <- 0.0  # E3 → E1
p_32          <- 0.4  # E3 → E2
p_33          <- 0.6  # E3 → E3 (Auto-Transição)

# --- 2. Construção das Arestas (Sem Auto-Transições) ---

edges         <- c()
labels        <- c()

if (p_12 > 0) { edges <- c(edges, "E1", "E2"); labels <- c(labels, "P[E1→E2] = 0.5") }
if (p_21 > 0) { edges <- c(edges, "E2", "E1"); labels <- c(labels, "P[E2→E1] = 0.2") }
if (p_23 > 0) { edges <- c(edges, "E2", "E3"); labels <- c(labels, "P[E2→E3] = 0.5") }
if (p_32 > 0) { edges <- c(edges, "E3", "E2"); labels <- c(labels, "P[E3→E2] = 0.4") }

# --- 3. Construção do Grafo ---

g             <- graph(edges = edges, directed = TRUE)
E(g)$label    <- labels
tg            <- as_tbl_graph(g)

# --- 4. Layout do Grafo ---

# Layout Circular

layout        <- create_layout(tg, layout = "circle")

# Dados das Arestas

edge_df       <- as_data_frame(tg, what = "edges")

# Coordenadas dos Nós de Origem e Destino

from_coords   <- layout[match(edge_df$from, layout$name), c("x", "y")]
to_coords     <- layout[match(edge_df$to, layout$name), c("x", "y")]

# Vetor Direção da Aresta (Origem → Destino)

dx            <- to_coords$x - from_coords$x
dy            <- to_coords$y - from_coords$y
lengths       <- sqrt(dx^2 + dy^2)

# Vetor Perpendicular Unitário

perp_x        <- -dy / lengths
perp_y        <- dx / lengths

# Vetor Unitário na Direção da Aresta

dir_x         <- dx / lengths
dir_y         <- dy / lengths

# Offset Para Afastar o Rótulo do Nó

offset_perp   <- 0.1   # Afastamento Perpendicular
offset_dir    <- 0.2   # Afastamento na Direção da Aresta

# Posiciona os Rótulos à Direita ou Esquerda do Nó de Origem

label_x <- from_coords$x + ifelse(dx < 0,  -1, 1) * perp_x * offset_perp + dir_x * offset_dir
label_y <- from_coords$y + ifelse(dx < 0,  -1, 1) * perp_y * offset_perp + dir_y * offset_dir

# --- 5. Visualização do Grafo ---

ggraph(layout) +
  geom_edge_link(arrow = arrow(length = unit(4, 'mm'), type = "closed"),
                 end_cap = circle(8, 'mm'),
                 edge_width = 0.8,
                 edge_alpha = 1.2,
                 color = "gray30") +
  geom_text(data = data.frame(x = label_x, y = label_y, label = E(g)$label),
            aes(x = x, y = y, label = label),
            size = 4,
            color = "black") +
  geom_node_point(size = 20, color = "lightgray") +
  geom_node_text(aes(label = name), size = 4, color = "black") +
  coord_fixed() +
  expand_limits(x = c(min(layout$x) - 0.3, max(layout$x) + 0.3),
                y = c(min(layout$y) - 0.1, max(layout$y) + 0.1)) +
  theme_void()


Figura 2.11.. Dígrafo correspondente à cadeia de Markov com três estados com matriz de transição \(P\).

\[\small \begin{align} \tag*{$\blacksquare$}\\\\ \end{align}\]

Exemplo 2.10 Neste exemplo, será avaliado um modelo estocástico de previsão do clima representado por uma cadeia de Markov com cinco estados distintos. O objetivo é modelar a evolução das condições meteorológicas em uma determinada localidade, assumindo que a condição climática em um dado instante depende unicamente do estado observado no instante anterior. Cada estado da cadeia corresponde a uma condição específica do tempo, e as transições entre eles são regidas por uma matriz de probabilidades de transição. Os cinco estados considerados no modelo são:


  • Estado 1: Ensolarado (E)
  • Estado 2: Parcialmente Nublado (PN)
  • Estado 3: Nublado (N)
  • Estado 4: Chuvoso (C)
  • Estado 5: Tempestade (T)


A matriz de transição associada ao modelo de cadeia de Markov, que descreve as probabilidades de mudança entre os diferentes estados climáticos de um dia para o seguinte, é apresentada a seguir: \[\begin{align}\\ P = \begin{bmatrix} \text{E} & \text{PN} & \text{N} & \text{C} & \text{T} \\ \hline 0.6 & 0.3 & 0.1 & 0 & 0 \\ 0.2 & 0.5 & 0.2 & 0.1 & 0 \\ 0 & 0.3 & 0.4 & 0.2 & 0.1 \\ 0 & 0 & 0.2 & 0.5 & 0.3 \\ 0 & 0 & 0 & 0.3 & 0.7 \end{bmatrix}\begin{matrix} \\ \text{E} \\ \text{PN} \\ \text{N} \\ \text{C} \\ \text{T} \\ \end{matrix}\\\\ \end{align}\]

Cada elemento \(p_{ij}\) representa a probabilidade de transição do estado \(i\) para o estado \(j\). Por exemplo, o valor \(p_{12} = 0.3\) indica que, dado que o estado atual é E, há uma probabilidade de 30% de que o próximo estado seja PN. Os elementos nulos da matriz (i.e., as entradas iguais a zero) indicam transições climáticas consideradas impossíveis ou altamente improváveis no horizonte de um dia. Tais restrições podem ser interpretadas como segue:


  • Não há transição direta de E para C ou T, sugerindo que mudanças climáticas abruptas são desconsideradas no modelo.

  • Estados extremos, como T, não retornam diretamente a condições mais amenas, como E ou PN, refletindo a persistência de eventos severos.


Para visualizar o comportamento estocástico da cadeia, a matriz de transição pode ser representada por um grafo direcionado (digrafo), no qual:


  • Cada nó corresponde a um estado climático.

  • Cada aresta direcionada do nó \(i\) para o nó \(j\), sempre que \(p_{ij} > 0\), representa uma transição possível entre estados, sendo rotulada com a respectiva probabilidade \(p_{ij}\).


O Código 2.12 apresenta uma implementação, em linguagem R, para gerar automaticamente o dígrafo da cadeia de Markov, com base na matriz de transição dada. A Figura 2.12 exibe o dígrafo correspondente, em que cada aresta é rotulada com sua respectiva probabilidade de transição, excluindo auto-transições para fins de clareza visual.


Código 2.12. Construção do dígrafo correspondente à cadeia de Markov do modelo estocástico de previsão do clima.

## -----------------------------------------------------------------
## Representação Gráfica do Modelo Estocástico de Previsão do Clima
## -----------------------------------------------------------------

# --- 0. Pacotes Necessários ---

library(igraph)
library(ggraph)
library(tidygraph)
library(ggplot2)

# --- 1. Parâmetros da Matriz de Transição ---

P             <- matrix(c(0.6, 0.3, 0.1, 0.0, 0.0,
                          0.2, 0.5, 0.2, 0.1, 0.0,
                          0.0, 0.3, 0.4, 0.2, 0.1,
                          0.0, 0.0, 0.2, 0.5, 0.3,
                          0.0, 0.0, 0.0, 0.3, 0.7),
                        nrow = 5, byrow = TRUE)

estados       <- c("E", "PN", "N", "C", "T")

# --- 2. Construção das Arestas (Sem Auto-Transições) ---

edges         <- c()
labels        <- c()

for (i in 1:5)
{
  for (j in 1:5) 
  {
    if (i != j && P[i, j] > 0) 
    {
      edges   <- c(edges, estados[i], estados[j])
      labels  <- c(labels, paste0("P[", estados[i], "→", estados[j], "] = ", round(P[i, j], 2)))
    }
  }
}

# --- 3. Construção do Grafo ---

g             <- graph(edges = edges, directed = TRUE)
E(g)$label    <- labels
tg            <- as_tbl_graph(g)

# --- 4. Layout do Grafo ---

layout        <- create_layout(tg, layout = "circle")
edge_df       <- as_data_frame(tg, what = "edges")

from_coords   <- layout[match(edge_df$from, layout$name), c("x", "y")]
to_coords     <- layout[match(edge_df$to, layout$name), c("x", "y")]

dx            <- to_coords$x - from_coords$x
dy            <- to_coords$y - from_coords$y
lengths       <- sqrt(dx^2 + dy^2)

perp_x        <- -dy / lengths
perp_y        <- dx / lengths
dir_x         <- dx / lengths
dir_y         <- dy / lengths

offset_perp   <- 0.15
offset_dir    <- 0.25

label_x <- from_coords$x + ifelse(dx < 0, -1, 1) * perp_x * offset_perp + dir_x * offset_dir
label_y <- from_coords$y + ifelse(dx < 0, -1, 1) * perp_y * offset_perp + dir_y * offset_dir

# --- 5. Definição de Cores por Tipo de Estado ---

cores         <- c("gold", "aliceblue", "lightgray", "lightskyblue", "lightcoral")
layout$color  <- cores[match(layout$name, estados)]

# --- 6. Visualização do Grafo ---

ggraph(layout) +
  geom_edge_link(arrow = arrow(length = unit(2, 'mm'), type = "closed"),
                 end_cap = circle(8, 'mm'),
                 edge_width = 0.8,
                 edge_alpha = 1.2,
                 color = "gray30") +
  geom_text(data = data.frame(x = label_x, y = label_y, label = E(g)$label),
            aes(x = x, y = y, label = label),
            size = 3,
            color = "black") +
  geom_node_point(aes(color = I(color)), size = 20) +
  geom_node_text(aes(label = name), size = 4, color = "black") +
  coord_fixed() +
  expand_limits(x = c(min(layout$x) - 0.3, max(layout$x) + 0.3),
                y = c(min(layout$y) - 0.3, max(layout$y) + 0.3)) +
  theme_void()


Figura 2.12.. Dígrafo correspondente à cadeia de Markov do Modelo Estocástico de Previsão do Clima.

\[\small \begin{align} \tag*{$\blacksquare$}\\\\ \end{align}\]

2.4. Distribuição Estacionária


No Exemplo 2.8 foi introduzida a ideia de distribuição estacionária como uma distribuição de probabilidade que permanece inalterada sob a dinâmica de transição de uma cadeia de Markov. Este conceito desempenha um papel importante na teoria de cadeias de Markov, pois está diretamente associado à descrição do comportamento assintótico do processo. Em particular, sob certas condições estruturais — como irreducibilidade e aperiodicidade — a cadeia converge para uma distribuição limite que coincide com a distribuição estacionária, independentemente da distribuição inicial. Tal propriedade confere à distribuição estacionária o status de solução em equilíbrio do sistema estocástico, representando a frequência relativa com que os estados são visitados no longo prazo.


Definição 2.4 (Distribuição Estacionária). Seja \(\{X_n\}_{n\, \geqslant\, 0}\) uma cadeia de Markov com espaço de estados finito \(\mathcal{E} = \{1, 2, \dots, k\}\) e matriz de transição \(P = [p_{ij}]\). Diz-se que um vetor de probabilidade \(\pi = \{\pi_j\}_{j \ \in \ \mathcal{E}}\) é uma distribuição estacionária da cadeia se satisfaz a condição de equilíbrio: \[\begin{align}\\ \pi P = \pi \\\\ \end{align}\] isto é, a distribuição de probabilidade permanece inalterada após a aplicação da matriz de transição. Ademais, em termos da equação de Chapman-Kolmogorov, a condição de estacionariedade pode ser expressa, para cada estado \(i \in \mathcal{E}\), como: \[\begin{align}\\ \pi_i = \sum_{k \ \in \ \mathcal{E}} \ \pi_k p_{ki}\\\\ \end{align}\] o que significa que a probabilidade de se encontrar a cadeia no estado \(i\) sob a distribuição estacionária é igual à soma das probabilidades de estar em cada estado \(k\), ponderadas pelas respectivas probabilidades de transição de \(k\) para \(i\).


Exemplo 2.11. Considere uma fábrica que opera com três máquinas distintas, denominadas A, B e C. Em cada intervalo de tempo, uma máquina pode permanecer em funcionamento ou ser substituída por outra, de acordo com probabilidades associadas a falhas ou reconfigurações do sistema. O objetivo é analisar o comportamento assintótico da operação da fábrica, ou seja, determinar a probabilidade de o sistema estar operando com cada uma das máquinas após um longo período, independentemente da máquina inicialmente em operação. Esse sistema pode ser modelado como uma cadeia de Markov, em que os estados representam as máquinas em operação, e as transições entre estados são determinadas pelas probabilidades de falha ou substituição. A matriz de transição \(P\) associada a essa cadeia é dada por: \[\begin{align}\\ P = \begin{bmatrix} \text{A} & \text{B} & \text{C}\\ \hline 0.7 & 0.2 & 0.1 \\ 0.3 & 0.5 & 0.2 \\ 0.2 & 0.4 & 0.4 \end{bmatrix}\begin{matrix}\\ \text{A} \\ \text{B} \\ \text{C}\\ \end{matrix}\\\\ \end{align}\] Nesse contexto, o elemento \(p_{ij}\) denota a probabilidade de transição do estado \(i\) para o estado \(j\). Por exemplo, \(p_{11} = 0.7\) corresponde à probabilidade de a máquina A continuar operando no intervalo seguinte, enquanto \(p_{12} = 0.2\) denota a probabilidade de substituição da máquina A pela máquina B. Nosso objetivo é encontrar a distribuição estacionária \(\pi = (\pi_1, \pi_2, \pi_3)\), que caracteriza a distribuição de probabilidade sobre os estados no longo prazo. Esta distribuição satisfaz a equação matricial \(\pi P = \pi\) que expressa a invariância da distribuição após a aplicação da matriz de transição. Assim, escrevendo explicitamente as equações associadas a essa condição de equilíbrio, obtemos: \[\begin{align}\\ \pi_1 &= 0.7 \pi_1 + 0.3 \pi_2 + 0.2 \pi_3\\\\ \pi_2 &= 0.2 \pi_1 + 0.5 \pi_2 + 0.4 \pi_3\\\\ \pi_3 &= 0.1 \pi_1 + 0.2 \pi_2 + 0.4 \pi_3\\\\ \end{align}\] Adicionalmente, a condição de normalização impõe que as probabilidades somem a 1, ou seja, \[\begin{align}\\ \pi_1 + \pi_2 + \pi_3 = 1\\\\ \end{align}\] Neste caso, os elementos de \(\pi\) correspondem a:


  • \(\pi_1\): probabilidade de o sistema estar no estado 1 (Máquina A),

  • \(\pi_2\): probabilidade de o sistema estar no estado 2 (Máquina B),

  • \(\pi_3\): probabilidade de o sistema estar no estado 3 (Máquina C),


no regime estacionário da cadeia. Para resolver o sistema, rearranjamos as equações de equilíbrio na forma: \[\begin{align}\\ \pi_1 - 0.7 \pi_1 - 0.3 \pi_2 - 0.2 \pi_3 &= 0 \\\\ \pi_2 - 0.2 \pi_1 - 0.5 \pi_2 - 0.4 \pi_3 &= 0 \\\\ \pi_3 - 0.1 \pi_1 - 0.2 \pi_2 - 0.4 \pi_3 &= 0 \\\\ \end{align}\] que pode ser simplificada para: \[\begin{align}\\ 0.3 \pi_1 - 0.3 \pi_2 - 0.2 \pi_3 = 0 \\\\ -0.2 \pi_1 + 0.5 \pi_2 - 0.4 \pi_3 = 0 \\\\ -0.1 \pi_1 - 0.2 \pi_2 + 0.6 \pi_3 = 0 \\\\ \end{align}\] juntamente com a condição \(\pi_1 + \pi_2 + \pi_3 = 1\). Note que as três primeiras equações são linearmente dependentes, sendo suficiente considerar duas delas, além da condição de normalização, para determinar \(\pi\). Neste caso, manipulando o sistema, obtemos: \[\begin{align}\\ -3 \pi_1 + 3 \pi_2 + 2 \pi_3 = 0 \\\\ 2 \pi_1 - 5 \pi_2 + 4 \pi_3 = 0 \\\\ \end{align}\] a partir das quais isolamos \(\pi_1\) e \(\pi_2\) em função de \(\pi_3\): \[\begin{align}\\ \pi_1 &= 6 \pi_3 - 2 \pi_2\\\\ \pi_2 &= \frac{16}{9} \pi_3\\\\ \end{align}\] Substituindo essas expressões na condição de normalização, obtemos: \[\begin{align}\\ \pi_1 + \pi_2 + \pi_3 = \left(\frac{22}{9} + \frac{16}{9} + 1\right)\pi_3 = \frac{47}{9} \pi_3 = 1 \Rightarrow \pi_3 = \frac{9}{47}\\\\ \end{align}\] isto é, o valor de \(\pi_3\) é \(9/47\), ou aproximadamente \(0.1915\). Analogamente, para os demais componentes, tem-se: \[\begin{align}\\ \pi_1 &= \frac{22}{9} \pi_3 = \frac{22}{9} \times \frac{9}{47} = \frac{22}{47} \approx 0.4681\\\\ \pi_2 &= \frac{16}{9} \pi_3 = \frac{16}{9} \times \frac{9}{47} = \frac{16}{47} \approx 0.3404\\\\ \end{align}\] Portanto, a distribuição estacionária da cadeia é: \[\begin{align}\\ \pi \approx (0.4681,\, 0.3404,\, 0.1915)\\\\ \end{align}\]

É importante destacar que o processo de resolução do sistema que determina a distribuição estacionária pode ser implementado por meio de softwares computacionais. Por exemplo, no Código 2.13 é apresentada uma rotina, em linguagem R, que utiliza a função solve() (responsável por resolver sistemas lineares da forma \(A \boldsymbol{x} = \boldsymbol{b}\)) para determinar as probabilidades estacionárias associadas aos estados da cadeia. A ideia consiste em reformular a equação \(\pi P = \pi\), juntamente com a condição de normalização \(\sum_{i} \pi_i = 1\) como um sistema linear que pode ser solucionado numericamente, obtendo-se assim o vetor \(\pi\) que caracteriza o comportamento assintótico da cadeia.


Código 2.13. Cálculo da distribuição estacionária da cadeia de Markov associada ao sistema de três máquinas descrito no Exemplo 2.11, utilizando a função solve().

## ---------------------------------------------------------------------------
## Exemplo 2.11: Cálculo da Distribuição Estacionária de uma Cadeia de Markov
## ---------------------------------------------------------------------------

# --- 0. Pacotes Necessários ---

# (Nenhum pacote adicional é necessário)

# --- 1. Definição da Matriz de Transição ---

P <- matrix(c(0.7, 0.2, 0.1,
              0.3, 0.5, 0.2,
              0.2, 0.4, 0.4),
            nrow = 3,
            byrow = TRUE)

# --- 2. Preparação do Sistema Linear Para a Distribuição Estacionária ---

Pt <- t(P)                  # Transposta da Matriz de Transição
A  <- Pt - diag(nrow(P))    # Construção da Matriz (P^T - I)
A  <- rbind(A, rep(1, 3))   # Adição da Equação de Normalização (Soma = 1)

b  <- c(rep(0, 3), 1)       # Vetor do Lado Direito, Zeros + 1 Para Normalização

# --- 3. Resolução do Sistema Linear ---

pi <- solve(t(A) %*% A, t(A) %*% b)

# --- 4. Apresentação do Resultado ---

round(as.vector(pi), digits = 4)
[1] 0.4681 0.3404 0.1915

Adicionalmente, a convergência da cadeia de Markov para sua distribuição estacionária pode ser ilustrada por meio da evolução das distribuições de probabilidade ao longo do tempo. Esse procedimento baseia-se na aplicação iterativa da matriz de transição \(P\), conforme a equação de Chapman-Kolmogorov, que permite calcular as probabilidades de transição em \(n\) passos. À medida que \(n \to \infty\), observa-se empiricamente que a distribuição da cadeia tende à distribuição estacionária \(\pi\), independentemente da condição inicial. No Código 2.14, é apresentada uma rotina, em linguagem R, que implementa esse processo. O código calcula as potências sucessivas da matriz de transição e ilustra, numericamente, a estabilização das probabilidades de transição. Isso permite visualizar o comportamento assintótico da cadeia. Por fim, a Figura 2.13 complementa essa análise ao exibir graficamente a evolução temporal das probabilidades associadas a cada estado da cadeia. Observa-se que, independentemente da distribuição inicial, as curvas convergem para valores constantes, compatíveis com os componentes do vetor estacionário \(\pi\), reforçando sua interpretação da distribuição estacionária como o estado de equilíbrio do sistema.


Código 2.14. Ilustração da convergência da cadeia de Markov do Exemplo 2.11 para a distribuição estacionária, por meio da iteração da matriz de transição.

## ------------------------------------------------------------
## Exemplo 2.11: Convergência para a Distribuição Estacionária
## ------------------------------------------------------------

# --- 0. Pacotes Necessários ---

library(ggplot2)

# --- 1. Configurações Iniciais ---

# Matriz de Transição da Cadeia de Markov (Três Máquinas: A, B, C)

P_mat          <- matrix(c(0.7, 0.2, 0.1,
                           0.3, 0.5, 0.2,
                           0.2, 0.4, 0.4),
                         nrow = 3, byrow = TRUE)

estados        <- c("Máquina A", "Máquina B", "Máquina C")
n_passos       <- 15                    # Número de Passos
P_potencia     <- diag(3)               # P^{(0)} = Identidade 3x3

# Lista Para Armazenar os Resultados ao Longo do Tempo

lista_result   <- list()

# --- 2. Probabilidades de Transição: Passo 0 ---

for (i in 1:3)
{
  for (j in 1:3) 
  {
    lista_result[[length(lista_result) + 1]] <- data.frame(Origem       = estados[i],
                                                           Destino      = estados[j],
                                                           Passos       = 0,
                                                           Probabilidade= P_potencia[i, j])
  }
}

# --- 3. Iteração das Probabilidades (Chapman-Kolmogorov) ---

for (n in 1:n_passos)
{

  P_potencia <- P_potencia %*% P_mat
  
  for (i in 1:3) 
  {
    for (j in 1:3) 
    {
      lista_result[[length(lista_result) + 1]] <- data.frame(Origem       = estados[i],
                                                             Destino      = estados[j],
                                                             Passos       = n,
                                                             Probabilidade= P_potencia[i, j])
    }
  }
}

# --- 4. Consolidação dos Resultados ---

df_transicoes           <- do.call(rbind, lista_result)

df_transicoes$Transicao <- factor(paste0("P[", df_transicoes$Origem, "→", df_transicoes$Destino, "]"),
                                  levels = unique(paste0("P[", df_transicoes$Origem, "→", df_transicoes$Destino, "]")))

# --- 5. Visualização Gráfica ---

ggplot(df_transicoes, aes(x = Passos, y = Probabilidade, color = Transicao)) +
  geom_line(linewidth = 0.5) +
  geom_point(size = 1.5) +
  scale_color_brewer(palette = "Paired") +
  labs(title = "",
       x = "Número de Passos (n)",
       y = "Probabilidade",
       color = expression(p[ij])) +
  theme_minimal() +
  theme(legend.position = "right",
        legend.title = element_text(size = 10),
        legend.text = element_text(size = 9),
        axis.title.x = element_text(margin = margin(t = 10)),
        axis.title.y = element_text(margin = margin(r = 10)))


Figura 2.13.. Evolução das probabilidades de transição ao longo do tempo, evidenciando a convergência da cadeia de Markov para sua distribuição estacionária.

\[\small \begin{align} \tag*{$\blacksquare$}\\\\ \end{align}\]

Exemplo 2.12 (Processo de Nascimento e Morte). Considere uma cadeia de Markov com espaço de estados \(\mathcal{E} = \{0, 1, \ldots, d\}\), onde \(d\) pode ser finito ou infinito. As probabilidades de transição \(p_{ij}\) são definidas por:

\[\begin{align}\\ p_{ij} = \begin{cases} q_i, & \text{se } j = i - 1 \\ r_i, & \text{se } j = i \\ p_i, & \text{se } j = i + 1 \\ 0, & \text{caso contrário} \end{cases}\\\\ \end{align}\]

sujeitas à restrição:

\[\begin{align}\\ p_i + r_i + q_i = 1, \quad \forall i \in \mathcal{E}\\\\ \end{align}\]

com as condições de contorno \(q_0 = 0\) e, no caso finito, \(p_d = 0\). Neste modelo, os parâmetros \(p_i\), \(q_i\) e \(r_i\) representam, respectivamente:


  • \(p_i\): a probabilidade de nascimento no estado \(i\), ou seja, a probabilidade do processo transitar do estado \(i\) para o estado \(i+1\);

  • \(q_i\): a probabilidade de morte no estado \(i\), isto é, a probabilidade do processo transitar do estado \(i\) para o estado \(i-1\);

  • \(r_i\): a probabilidade de permanência no estado \(i\), correspondente à manutenção do processo no mesmo estado \(i\).


Dessa forma, o processo de nascimento e morte em tempo discreto é caracterizado pela possibilidade de transições apenas entre estados adjacentes — para cima (nascimentos) ou para baixo (mortes) — ou pela permanência no mesmo estado, respeitando as condições de contorno que impedem transições para estados negativos ou além do estado máximo \(d\) no caso finito. Para determinar a distribuição estacionária \(\pi = (\pi_0, \pi_1, \ldots, \pi_d)\) desse processo, busca-se o vetor de probabilidades que satisfaz o sistema de equilíbrio:

\[\begin{align}\\ \pi_j = \sum_{i=0}^d \pi_i p_{ij}, \quad \forall j \in \mathcal{E}\\\\ \end{align}\]

junto com a condição de normalização:

\[\begin{align}\\ \sum_{j=0}^d \pi_j = 1\\\\ \end{align}\]

Devido à estrutura tridiagonal (isto é, matriz quadrada em que os elementos não nulos estão localizados apenas na diagonal principal, na diagonal imediatamente acima dela e na diagonal imediatamente abaixo dela) da matriz de transição, para \(j = 1, \ldots, d-1\), as equações de equilíbrio podem ser expressas como:

\[\begin{align}\\ \pi_j = \pi_{j-1} p_{j-1} + \pi_j r_j + \pi_{j+1} q_{j+1}\\\\ \end{align}\]

Rearranjando, temos:

\[\begin{align}\\ 0 = \pi_{j-1} p_{j-1} - \pi_j (1 - r_j) + \pi_{j+1} q_{j+1}\\\\ \end{align}\]

Nos estados extremos, as condições se tornam:

\[\begin{align}\\ \pi_0 = \pi_0 r_0 + \pi_1 q_1 \implies \pi_1 q_1 = \pi_0 (1 - r_0) = \pi_0 p_0\\\\ \end{align}\]

e, para \(d < \infty\),

\[\begin{align}\\ \pi_d = \pi_{d-1} p_{d-1} + \pi_d r_d \implies \pi_{d-1} p_{d-1} = \pi_d (1 - r_d) = \pi_d q_d\\\\ \end{align}\]

A partir da relação no estado zero, é possível expressar \(\pi_1\) em função de \(\pi_0\):

\[\begin{align}\\ \pi_1 = \frac{p_0}{q_1} \pi_0\\\\ \end{align}\]

De forma geral, para \(j = 1, \ldots, d\), a distribuição estacionária pode ser obtida recursivamente por:

\[\begin{align}\\ \pi_j = \frac{p_{j-1}}{q_j} \pi_{j-1}\\\\ \end{align}\]

Portanto, a expressão geral para a distribuição estacionária \(\pi_j\) é:

\[\begin{align}\\ \pi_j = \pi_0 \prod_{k=1}^j \dfrac{p_{k-1}}{q_k}\\\\ \end{align}\]

O valor de \(\pi_0\), neste caso, é fixado pela condição de normalização do vetor \(\pi\):

\[\begin{align}\\ \sum_{j=0}^d \pi_j = \pi_0 \left(1 + \sum_{j=1}^d \prod_{k=1}^j \frac{p_{k-1}}{q_k}\right) = 1\\\\ \end{align}\]

de onde resulta:

\[\begin{align}\\ \pi_0 = \left(1 + \sum_{j=1}^d \prod_{k=1}^j \frac{p_{k-1}}{q_k}\right)^{-1}\\\\ \end{align}\]

A existência da distribuição estacionária depende da convergência dessa soma, que é garantida sob condições adequadas de estabilidade da cadeia. No Código 2.15, apresenta-se um experimento numérico, implementado em linguagem R, para o cálculo da distribuição estacionária associada a um processo de nascimento e morte com espaço de estados finito \(\mathcal{E} = \{0, 1, \ldots, 5\}\). Este tipo de cadeia de Markov possui matriz de transição tridiagonal, com probabilidades de transição que refletem os possíveis eventos de nascimento (\(p_{i}\)), morte (\(q_{i}\)) e permanência no mesmo estado (\(r_{i}\)), respeitando a condição \(p_i + q_i + r_i = 1\) para todo \(i\), juntamente com as condições de fronteira \(q_0 = 0\) e \(p_5 = 0\). A matriz de transição é construída explicitamente de acordo com estas especificações, e a distribuição estacionária \(\boldsymbol{\pi} = (\pi_0, \pi_1, \ldots, \pi_5)\) é obtida resolvendo-se o sistema linear \(\boldsymbol{\pi} P = \boldsymbol{\pi}\), complementado pela equação de normalização \(\sum_{i=0}^{5} \pi_i = 1\). O sistema resultante, que é superdeterminado (isto é, contém mais equações que variáveis devido à inclusão da equação de normalização), é resolvido numericamente via mínimos quadrados por meio da função solve() aplicada ao sistema normal.


Código 2.15. Cálculo numérico da distribuição estacionária associada ao processo de nascimento e morte com espaço de estados finito \(\mathcal{E} = \{0, 1, \ldots, 5\}\), por meio da função solve() para resolução do sistema linear que caracteriza as equações de equilíbrio da cadeia.

## --------------------------------------------------------------------------
## Cálculo da Distribuição Estacionária de um Processo de Nascimento e Morte
## --------------------------------------------------------------------------

# --- 0. Pacotes Necessários ---

# (Nenhum pacote adicional é necessário)

# --- 1. Parâmetros do Processo de Nascimento e Morte ---

d      <- 5                                 # Tamanho Finito do Espaço de Estados: {0, ..., 5}
p      <- c(0.4, 0.5, 0.6, 0.4, 0.3)        # Probabilidades de Nascimento (p_0 a p_4)
q      <- c(0.0, 0.3, 0.2, 0.4, 0.5, 0.6)   # Probabilidades de Morte (q_0 a q_5)
r      <- 1 - p - q[1:d]                    # Probabilidades de Permanência r_i = 1 - p_i - q_i
r      <- c(r, 1 - q[d + 1])                # r_d = 1 - q_d (Pois p_d = 0)

# --- 2. Construção da Matriz de Transição ---

P <- matrix(0, nrow = d + 1, ncol = d + 1)

for (i in 1:(d + 1))
{
  if (i > 1)        P[i, i - 1] <- q[i]     # Transição i → i − 1 (Morte)
                    P[i, i]     <- r[i]     # Permanência i → i
  if (i < d + 1)    P[i, i + 1] <- p[i]     # Transição i → i + 1 (Nascimento)
}

# --- 3. Preparação do Sistema Linear Para a Distribuição Estacionária ---

Pt <- t(P)                          # Transposta de P
A  <- Pt - diag(nrow(P))            # Construção da Matriz (P^T - I)
A  <- rbind(A, rep(1, d + 1))       # Adição da Equação de Normalização

b  <- c(rep(0, d + 1), 1)           # Vetor do Lado Direito: Sistema Homogêneo + Normalização

# --- 4. Resolução do Sistema Linear ---

pi <- solve(t(A) %*% A, t(A) %*% b) # Solução via Mínimos Quadrados

# --- 5. Apresentação da Distribuição Estacionária ---

round(as.vector(pi), digits = 4)
[1] 0.06 0.08 0.20 0.30 0.24 0.12

\[\small \begin{align} \tag*{$\blacksquare$}\\\\ \end{align}\]

2.5. Classificação de Estados


Seja \(\{X_n\}_{n \ \geqslant \ 0}\) uma cadeia de Markov homogênea a tempo discreto com espaço de estados finito \(\mathcal{E} = {1, 2, \dots, k}\) e matriz de transição \(P = [p_{ij}]\). Diz-se que o estado \(j\) é acessível a partir do estado \(i\), se existe um inteiro \(n > 0\) tal que a entrada \((i,j)\) tal que a \(n\)-ésima potência da matriz de transição \(P^{(n)}\) satisfaz a condição \(p_{ij}^{(n)} > 0\) (ou seja, a probabilidade de transição do estado \(i\) para o estado \(j\) em exatamente \(n\) passos é estritamente positiva). Se, além disso, o estado \(i\) é também acessível a partir do estado \(j\), isto é, \(i \to j\) e \(j \to i\), dizemos que os estados \(i\) e \(j\) se comunicam, e denotamos essa relação por \(i \leftrightarrow j\).


Definição 2.5 (Estado Essencial - Basu 2003; Hinojosa e Milanés 2011) . Diz-se que um estado \(i \in \mathcal{E}\) é essencial se, sempre que um estado \(j\) for acessível a partir de \(i\) (isto é, \(i \to j\)), \(i\) também for acessível a partir de \(j\) (isto é, \(j \to i\)). Denotaremos por \(\mathcal{S}\) o conjunto de todos os estados essenciais da cadeia. Em contrapartida, um estado \(i \in \mathcal{E}\) é dito não essencial (ou inessencial) se existem \(n \in \mathbb{N}\) e \(j \in \mathcal{E}\) tais que \(p_{ij}^{(n)} > 0\), e \(p_{ji}^{(m)} = 0\) para todo \(m \in \mathbb{N}\), ou seja, há uma trajetória de \(i\) para \(j\) com probabilidade positiva em \(n\) passos, mas não há qualquer trajetória, em nenhum número finito de passos, que permita retornar de \(j\) para \(i\).


Exemplo 2.13. Seja \(\{X_n\}_{n \ \geqslant \ 0}\) uma cadeia de Markov a tempo discreto com espaço de estados \(\mathcal{E} = {1, 2, 3, 4}\) e matriz de transição dada por: \[\begin{align}\\ P = \begin{bmatrix} E1 & E2 & E3 & E4\\ \hline 0.7 & 0.3 & 0 & 0 \\ 0.5 & 0.1 & 0.4 & 0 \\ 0 & 0.7 & 0.3 & 0 \\ 0 & 0 & 0.2 & 0.8 \\ \end{bmatrix} \begin{matrix}\\ E1 \\ E2 \\ E3 \\ E4\end{matrix}\\\\ \end{align}\] Analisemos agora as relações de acessibilidade entre os estados:


  • O estado E1 transita diretamente para o estado E2 com probabilidade \(0.3\), e o estado E2 transita de volta para o estado E1 com probabilidade \(0.5\). Isto é, E1 \(\leftrightarrow\) E2.
  • O estado E2 transita para o estado E3 com probabilidade \(0.4\), e o estado E3 transita de volta para o estado E2 com probabilidade \(0.7\). Isto é, E2 \(\leftrightarrow\) E3.
  • Pela transitividade da relação de comunicação, conclui-se que E1 \(\leftrightarrow\) E3.
  • O estado E3 não possui transição direta para o estado E4, pois \(p_{34} = 0\). Além disso, não há caminho indireto de E3 para E4, visto que nenhum outro estado além de E3 possui transição para E4. Portanto, E3 \(\nrightarrow\) E4.


Diante dessa análise, observa-se que os estados E1, E2 e E3 se comunicam mutuamente, formando uma classe fechada de estados essenciais. Mas, o estado E4 é classificado como um estado não essencial, pois embora possua transição para o estado E3 (E4 \(\to\) E3), não existe caminho que permita o retorno de E3 (nem de E2 ou E1) para E4, ou seja, E3 \(\nrightarrow\) E4, E2 \(\nrightarrow\) E4 e E1 \(\nrightarrow\) E4. Portanto, o conjunto de estados essenciais da cadeia é dado por: \[\begin{align}\\ \mathcal{S} = \{\text{E1}, \text{E2}, \text{E3}\}\\\\ \end{align}\] enquanto o conjunto dos estados não essenciais é: \[\begin{align}\\ \mathcal{S}^c = \{\text{E4}\}\\\\ \end{align}\]

O Código 2.16 apresenta, em linguagem R, a construção do dígrafo associado a essa cadeia de Markov, enquanto a Figura 2.14 ilustra graficamente sua estrutura, na qual os vértices representam os estados e as arestas orientadas indicam as transições com suas respectivas probabilidades. A estrutura do dígrafo evidencia a classe de comunicação entre os estados E1, E2 e E3, bem como a natureza inacessível do estado E4.


Código 2.16. Construção do dígrafo correspondente à cadeia de Markov do Exemplo 2.13 com base na matriz de transição \(P\).

## ------------------------------------------------------------------
## Construção do Dígrafo Gráfica da Cadeia de Markov do Exemplo 2.13
## ------------------------------------------------------------------

# --- 0. Pacotes Necessários ---

library(igraph)
library(ggraph)
library(tidygraph)
library(ggplot2)

# --- 1. Matriz de Transição ---

P         <- matrix(c(0.7, 0.3, 0.0, 0.0,
                      0.5, 0.1, 0.4, 0.0,
                      0.0, 0.7, 0.3, 0.0,
                      0.0, 0.0, 0.2, 0.8), 
                    nrow = 4, byrow = TRUE)

estados   <- c("E1", "E2", "E3", "E4")

# --- 2. Construção das Arestas (Sem Auto-Transições) ---

edges     <- c()
labels    <- c()

for (i in 1:4)
{
  for (j in 1:4)
  {
    if (i != j && P[i, j] > 0){
        edges  <- c(edges, estados[i], estados[j])
        labels <- c(labels, paste0("P[", estados[i], "→", 
                                   estados[j], "] = ", round(P[i, j], 2)))
    }
  }
}

# --- 3. Construção do Grafo Direcionado ---

g           <- graph(edges = edges, directed = TRUE)
E(g)$label  <- labels
tg          <- as_tbl_graph(g)

# --- 4. Layout do Grafo ---

layout      <- create_layout(tg, layout = "circle")
edge_df     <- as_data_frame(tg, what = "edges")

from_coords <- layout[match(edge_df$from, layout$name), c("x", "y")]
to_coords   <- layout[match(edge_df$to, layout$name), c("x", "y")]

dx          <- to_coords$x - from_coords$x
dy          <- to_coords$y - from_coords$y
lengths     <- sqrt(dx^2 + dy^2)

perp_x      <- -dy / lengths
perp_y      <- dx / lengths
dir_x       <- dx / lengths
dir_y       <- dy / lengths

offset_perp <- 0.15
offset_dir  <- 0.25

label_x <- from_coords$x + ifelse(dx < 0, -1, 1) * perp_x * offset_perp + dir_x * offset_dir
label_y <- from_coords$y + ifelse(dx < 0, -1, 1) * perp_y * offset_perp + dir_y * offset_dir

# --- 5. Cores por Essencialidade ---

layout$color <- ifelse(layout$name == "E4", "tomato", "lightblue")

# --- 6. Visualização Gráfico ---

ggraph(layout) +
  geom_edge_link(arrow = arrow(length = unit(2, 'mm'), type = "closed"),
                 end_cap = circle(8, 'mm'),
                 edge_width = 0.8,
                 edge_alpha = 1,
                 color = "gray30") +
  geom_text(data = data.frame(x = label_x, y = label_y, label = E(g)$label),
            aes(x = x, y = y, label = label),
            size = 3,
            color = "black") +
  geom_node_point(aes(color = I(color)), size = 20) +
  geom_node_text(aes(label = name), size = 4, color = "black") +
  coord_fixed() +
  expand_limits(x = c(min(layout$x) - 0.3, max(layout$x) + 0.3),
                y = c(min(layout$y) - 0.05, max(layout$y) + 0.2)) +
  theme_void()


Figura 2.14.. Dígrafo associado à cadeia de Markov do Exemplo 2.13, em que os estados essenciais são representados em azul e o estado inessencial em vermelho.

\[\small \begin{align} \tag*{$\blacksquare$}\\\\ \end{align}\]

É importante destacar que a relação de comunicação, denotada por \(\leftrightarrow\), constitui uma relação de equivalência sobre o subconjunto de estados essenciais \(\mathcal{S}\), uma vez que satisfaz simultaneamente as propriedades de reflexividade, simetria e transitividade, conforme descrito a seguir:


  • Reflexividade: Para todo \(i \in \mathcal{S}\), tem-se \(i \leftrightarrow i\), visto que qualquer estado é, por definição, acessível a partir de si próprio, Tal fato decorre da possibilidade de permanecer no mesmo estado, seja trivialmente em zero passos — com probabilidade 1 (\(p_{ii}^{(0)} = 1\)) —, seja por meio de uma sequência de transições com probabilidade positiva, isto é, existe \(n \geqslant 0\) tal que \(p_{ii}^{(n)} > 0\).

  • Simetria: Se \(i \leftrightarrow j\), então necessariamente \(j \leftrightarrow i\), por definição da própria relação de comunicação, a qual requer acessibilidade mútua entre os estados.

  • Transitividade: Se \(i \leftrightarrow j\) e \(j \leftrightarrow k\), então \(i \leftrightarrow k\). Esta propriedade decorre diretamente da equação de Chapman-Kolmogorov, que garante que é possível concatenar trajetórias finitas, cada uma com probabilidade positiva, conectando \(i\) a \(k\) via \(j\).


Ademais, dado que a relação de comunicação, \(\leftrightarrow\), é uma relação de equivalência sobre o conjunto de estados essenciais \(\mathcal{S} = {1, 2, \dots, k}\), essa relação induz uma partição de \(\mathcal{S}\) em classes mutuamente disjuntas, denominadas classes de comunicação, definidas por: \[\begin{align}\\ C(i) = \{j \in \mathcal{S} \mid i \leftrightarrow j\}\\\\ \end{align}\] em que cada classe \(C(i)\) contém todos os estados que se comunicam mutuamente com o estado \(i\), de modo que \(\mathcal{S} = \bigcup_{i \ \in \ \mathcal{S}}\{C(i)\}\). A partir desse conceito, pode-se definir:


  • Estado Absorvente: Neste caso, a classe de comunicação é composta unicamente pelo próprio estado \(i\), isto é, \(C(i) = {i}\). Não existe qualquer transição de \(i\) para outro estado distinto, formalmente, \[\begin{align}\\ p_{ij}^{(n)} = 0, \quad \forall j \in \mathcal{E} \qquad \text{com} \qquad j \neq i\\\\ \end{align}\] Consequentemente, a permanência no próprio estado ocorre com probabilidade um, ou seja, \(p_{ii} = 1\). Esse comportamento caracteriza \(i\) como um estado absorvente, significando que, uma vez que a cadeia atinge esse estado, ela permanece nele indefinidamente, sem possibilidade de transitar para qualquer outro estado.


  • Comunicação Mútua: Neste cenário, existe pelo menos um estado \(j \neq i\) tal que \(i\) é acessível a partir de \(j\) e vice-versa. Mais precisamente, existem \(n \geqslant 1\) e \(m \geqslant 1\) tais que \(p_{ij}^{(n)} > 0\) e \(p_{ji}^{(m)} > 0\). Portanto, \(i \leftrightarrow j\), o que implica que ambos pertencem à mesma classe de comunicação \(C(i)\).


Dessa forma, a essencialidade de um estado (Definição 2.5) está diretamente associada à sua respectiva classe de comunicação: um estado é essencial se, e somente se, sempre que um estado \(j\) é acessível a partir de \(i\), também ocorre que \(i\) é acessível a partir de \(j\). Consequentemente, a cadeia de Markov permanece restrita à sua classe de comunicação, seja quando composta por um único estado absorvente (classe trivial), seja quando formada por dois ou mais estados que se comunicam mutuamente (classe não-trivial). Este conceito, em particular, fundamenta a definição de cadeias de Markov irredutíveis, que será apresentada a seguir.


Definição 2.6 (Cadeia de Markov Irredutível - Basu 2003; Hinojosa e Milanés 2011). Seja \(\{X_n\}_{n\, \geqslant\, 0}\) uma cadeia de Markov com espaço de estados \(\mathcal{S}\) e matriz de transição \(P\). Diz-se que a cadeia de Markov é irredutível se o espaço de estados \(S\) constitui uma única classe de comunicação, isto é, se \[\begin{align}\\ \forall\, i, j \in \mathcal{S}, \quad i \leftrightarrow j\\\\ \end{align}\] Em outras palavras, uma cadeia de Markov é irredutível se todos os estados se comunicam mutuamente, isto é, se para quaisquer \(i, j \in \mathcal{S}\) existem inteiros \(n, m \geqslant 1\) tais que \(p_{ij}^{(n)} > 0\) e \(p_{ji}^{(m)} > 0\).


Exemplo 2.14 (Sistema de Atendimento Hospitalar). Considere uma rede hospitalar composta por cinco unidades operacionais, nas quais pacientes podem ser encaminhados entre setores, permanecer sob observação ou encerrar o atendimento. O espaço de estados é definido da seguinte forma:


  • Estado 1: Triagem Inicial (TR)

  • Estado 2: Consulta Ambulatorial (CA)

  • Estado 3: Exames Complementares (EC)

  • Estado 4: Internação de Curta Duração (ICD)

  • Estado 5: Alta Médica (AM)


Inicialmente, a dinâmica operacional segue uma estrutura restrita de encaminhamento, representada pela matriz de transição \(P\): \[\begin{align}\\ P = \begin{bmatrix} \text{TR} & \text{CA} & \text{EC} & \text{ICD} & \text{AM}\\ \hline 0.7 & 0.3 & 0 & 0 & 0 \\ 0 & 0.5 & 0.5 & 0 & 0 \\ 0 & 0 & 0.4 & 0.6 & 0 \\ 0 & 0 & 0 & 0.6 & 0.4 \\ 0 & 0 & 0 & 0 & 1 \\ \end{bmatrix}\begin{matrix} \\ \text{TR} \\ \text{CA} \\ \text{EC} \\ \text{ICD} \\ \text{AM} \end{matrix}\\\\ \end{align}\] Nessa configuração, observa-se que:


  • Pacientes em triagem (estado 1) podem ser encaminhados exclusivamente para consulta (estado 2) ou permanecer na triagem (estado 1).

  • Pacientes em consulta (estado 2) podem permanecer em consulta ou ser encaminhados para exames (estado 3), sem possibilidade de retorno à triagem (estado 1) ou acesso a internação (estado 4) diretamente.

  • Pacientes em exames (estado 3) podem ser encaminhados para internação (estado 4) ou permanecer realizando exames (estado 3).

  • Pacientes em internação (estado 4) podem permanecer internados ou receber alta médica (estado 5).

  • O estado 5 (alta médica) é um estado absorvente, uma vez que \(p_{55} = 1\) e não existe transição para nenhum outro estado.


Diante dessa configuração, verifica-se que a cadeia é redutível, uma vez que o espaço de estados \(\mathcal{S} = \{1, 2, 3, 4, 5\}\) se encontra particionado em três classes de comunicação disjuntas — \(\{1, 2\}\), \(\{3, 4\}\) e \(\{5\}\) — que não possuem acessibilidade mútua entre si. Isso evidencia a violação da propriedade de irredutibilidade, uma vez que não é possível transitar entre todos os estados, seja de forma direta ou indireta. A Figura 2.15 ilustra o dígrafo associado à cadeia de Markov, no qual os vértices representam os estados e as arestas orientadas indicam as possíveis transições, acompanhadas de suas respectivas probabilidades.


Figura 2.15.. Dígrafo associado à cadeia de Markov refente ao sistema de atendimento hospitalar, em que o estado absorvente é representado em cinza.


Suponha que, com a implementação de um novo protocolo de gerenciamento integrado de pacientes, o hospital tenha reestruturado seus fluxos assistenciais, introduzindo maior flexibilidade nos encaminhamentos, conforme as seguintes diretrizes operacionais:


  • Triagem (TR) passa a permitir, além do encaminhamento para Consulta Ambulatorial (CA), os seguintes direcionamentos adicionais:

    • Exames Complementares (EC) — quando se identifica a necessidade de avaliação diagnóstica imediata.
    • Alta Médica (AM) — nos casos em que o paciente não apresenta risco clínico relevante, sendo possível encerrar o atendimento diretamente.
  • Consulta Ambulatorial (CA) deve contemplar:

    • Retorno à Triagem (TR) — quando a avaliação indicar necessidade de reclassificação, reavaliação ou ajuste no plano de cuidado.
    • Encaminhamento para Internação (ICD) — nos casos em que a gravidade clínica exige intervenção hospitalar.
    • Encaminhamento direto para Alta Médica (AM) — quando não há indicação de exames adicionais nem de internação.
  • Exames Complementares (EC) podem resultar em:

    • Retorno à Consulta Ambulatorial (CA) — para interpretação dos resultados e definição da conduta subsequente.
    • Encaminhamento para Internação (ICD) — quando os achados diagnósticos indicam necessidade de hospitalização.
    • Encaminhamento direto para Alta Médica (AM) — quando os resultados afastam qualquer hipótese de risco ou necessidade de seguimento.
  • Internação (ICD) deve possibilitar:

    • Retorno à Consulta Ambulatorial (CA) — para acompanhamento ambulatorial pós-alta ou reavaliação clínica.
    • Encaminhamento para Alta Médica (AM) — ao término do tratamento hospitalar.
  • Alta Médica (AM), a fim de garantir que a cadeia seja estritamente irreduzível, deve incluir a possibilidade de:

    • Retorno à Triagem (TR) — representando novos episódios assistenciais, recidivas, agravos ou reinício do ciclo de atendimento.


Com base nessas diretrizes, a nova matriz de transição \(P_{*}\) é: \[\begin{align}\\ P_{*} = \begin{bmatrix} \text{TR} & \text{CA} & \text{EC} & \text{ICD} & \text{AM}\\ \hline 0.3 & 0.4 & 0.2 & 0 & 0.1 \\ 0.2 & 0.4 & 0 & 0.3 & 0.1 \\ 0 & 0.3 & 0.3 & 0.3 & 0.1 \\ 0 & 0.4 & 0 & 0.4 & 0.2 \\ 0.3 & 0 & 0 & 0 & 0.7 \\ \end{bmatrix}\begin{matrix} \\ \text{TR} \\ \text{CA} \\ \text{EC} \\ \text{ICD} \\ \text{AM} \end{matrix}\\\\ \end{align}\] Nesta nova configuração:


  • Pacientes em triagem (estado 1) podem ser encaminhados para consulta ambulatorial (estado 2), exames complementares (estado 3) ou receber alta médica (estado 5), porém não são transferidos diretamente para internação (estado 4).

  • Pacientes em consulta ambulatorial (estado 2) podem retornar à triagem (estado 1), permanecer em consulta (estado 2), ser encaminhados para internação (estado 4) ou receber alta médica (estado 5), mas não são encaminhados diretamente para exames complementares (estado 3).

  • Pacientes em exames complementares (estado 3) podem retornar para consulta ambulatorial (estado 2), permanecer em exames complementares (estado 3), ser encaminhados para internação (estado 4) ou receber alta médica (estado 5), sem transição direta para triagem (estado 1).

  • Pacientes internados (estado 4) podem retornar para consulta ambulatorial (estado 2), permanecer em internação (estado 4) ou receber alta médica (estado 5), sem transições diretas para triagem (estado 1) ou exames (estado 3).

  • Pacientes com alta médica (estado 5) podem retornar à triagem (estado 1) ou permanecer em alta médica (estado 5).


A Figura 2.16 ilustra o dígrafo desse novo modelo, na qual os vértices representam os estados e as arestas orientadas indicam as transições com suas respectivas probabilidades.


Figura 2.16.. Dígrafo associado à nova cadeia de Markov refente ao sistema de atendimento hospitalar.


Embora não haja acessibilidade direta entre todos os pares de estados, existem conexões indiretas que podem ser exploradas por meio da dinâmica estocástica da cadeia. Para verificar se todos os estados se comunicam — direta ou indiretamente — é necessário analisar as potências da matriz de transição \(P_{*}^n\), pois, para quaisquer \(i, j \in \mathcal{S}\), se existirem inteiros positivos \(n, m\) tais que \(p_{ij}^{(n)} > 0\) e \(p_{ji}^{(m)} > 0\), então a cadeia é classificada como irredutível. Por exemplo, ao considerar \(n = 2\), as entradas de \(P_{*}^2\) são calculadas via a equação de Chapman-Kolmogorov, isto é,

\[\begin{align}\\ p^2_{*_{11}} &= (0.3 \times 0.3) + (0.4 \times 0.2) + (0.2 \times 0) + (0 \times 0) + (0.1 \times 0.3) = 0.20 \\\\ p^2_{*_{12}} &= (0.3 \times 0.4) + (0.4 \times 0.4) + (0.2 \times 0.3) + (0 \times 0.4) + (0.1 \times 0) = 0.34\\\\ P^2_{*_{13}} &= (0.3 \times 0.2) + (0.4 \times 0) + (0.2 \times 0.3) + (0 \times 0) + (0.1 \times 0) = 0.12\\\\ &\hspace{6cm}\vdots\\\\ p^2_{*_{55}} &= (0.3 \times 0.1) + (0 \times 0.1) + (0 \times 0.1) + (0 \times 0.2) + (0.7 \times 0.7) = 0.52\\\\ \end{align}\]

que nos leva a seguinte matriz \(P_{*}^2\):

\[\begin{align}\\ P_{*}^2 = \begin{bmatrix} \text{TR} & \text{CA} & \text{EC} & \text{ICD} & \text{AM}\\ \hline 0.20 & 0.34 & 0.12 & 0.18 & 0.16 \\ 0.17 & 0.36 & 0.04 & 0.24 & 0.19 \\ 0.09 & 0.33 & 0.09 & 0.30 & 0.19 \\ 0.14 & 0.32 & 0.00 & 0.28 & 0.26 \\ 0.30 & 0.12 & 0.06 & 0.00 & 0.52 \\ \end{bmatrix}\begin{matrix} \\ \text{TR} \\ \text{CA} \\ \text{EC} \\ \text{ICD} \\ \text{AM} \end{matrix}\\\\ \end{align}\]

Note que a condição \(n = m = 2\) (transição em exatamente dois passos) não implica que para todo par de estados \(i, j\) existam probabilidades positivas nas duas direções, isto é, \(p_{ij}^{(2)} > 0\) e \(p_{ji}^{(2)} > 0\). Especificamente:


  • Embora \(p_{34}^{(2)} = 0.30 > 0\), tem-se que \(p_{43}^{(2)} = 0\), o que indica que não há possibilidade de transitar da internação (estado 4) para os exames complementares (estado 3) em dois passos.
  • Embora \(p_{45}^{(2)} = 0.26 > 0\), tem-se que \(p_{54}^{(2)} = 0\), o que indica que não ocorre transição da alta médica (estado 5) para a internação (estado 4) em dois passos.


Essas restrições, em particular, refletem a lógica assistencial do sistema hospitalar modelado. Por exemplo, o retorno direto do estado de alta médica à internação não é usual, ocorrendo apenas mediante nova avaliação na triagem e posterior encaminhamento médico — o que envolve necessariamente múltiplas etapas no processo assistencial. De modo análogo, pacientes internados que venham a necessitar de exames complementares não os acessam diretamente a partir do leito hospitalar, mas sim após uma possível alta, reavaliação clínica e redirecionamento dentro do fluxo ambulatorial. Consequentemente, ao analisar a matriz de transição elevada ao quadrado, \(P_{*}^2\), observa-se que alguns estados permanecem inacessíveis entre si em dois passos, o que implica que, nesse horizonte temporal, a cadeia ainda não é irredutível, mantendo certa estrutura de redutibilidade parcial.


Contudo, essa limitação observada para \(n = m = 2\) não configura uma barreira estrutural definitiva na dinâmica do sistema. Ao se considerar potências superiores da matriz de transição, em particular quando \(n = m = 3\), verifica-se que todas as entradas tornam-se estritamente positivas — isto é, \(p_{ij}^{(3)} > 0\) e \(p_{ji}^{(3)} > 0\) para todo par \((i, j) \in \mathcal{S} \times \mathcal{S}\). De fato, a matriz \(P_{*}^3\) é dada por:

\[\begin{align}\\ P_{*}^3 = \begin{bmatrix} \text{TR} & \text{CA} & \text{EC} & \text{ICD} & \text{AM}\\ \hline 0.176 & 0.324 & 0.076 & 0.210 & 0.214\\ 0.180 & 0.320 & 0.046 & 0.216 & 0.238\\ 0.150 & 0.315 & 0.045 & 0.246 & 0.244\\ 0.184 & 0.296 & 0.028 & 0.208 & 0.284\\ 0.270 & 0.186 & 0.078 & 0.054 & 0.412\\ \end{bmatrix}\begin{matrix} \\ \text{TR} \\ \text{CA} \\ \text{EC} \\ \text{ICD} \\ \text{AM} \end{matrix}\\\\ \end{align}\]

Essa propriedade assegura que todos os estados são acessíveis entre si em um número finito de passos, ainda que tal acessibilidade não se concretize nos passos iniciais. Dessa forma, conclui-se formalmente que a cadeia de Markov que modela o sistema assistencial hospitalar é irredutível, no sentido de que não existem subconjuntos disjuntos e isolados de estados dentro do espaço de estados \(\mathcal{S}\). Por fim, o Código 2.17 apresenta, em linguagem R, a verificação da irredutibilidade dessa cadeia de Markov, cuja dinâmica é modelada pela matriz de transição \(P_{*}\). Para isso, o código calcula as potências sucessivas da matriz de transição — especificamente \(P_{}^2\) e \(P_{}^3\) — permitindo analisar a acessibilidade entre os estados em diferentes horizontes temporais. A irredutibilidade é, então, confirmada ao observar que, em \(P_{*}^3\), todas as entradas são estritamente positivas, indicando que, em até três passos, é possível transitar entre quaisquer pares de estados do sistema.


Código 2.17. Cálculo das potências da matriz de transição \(P_{*}\) para análise da irredutibilidade da cadeia de Markov do sistema hospitalar conforme as novas diretrizes assistenciais.

## ---------------------------------------------------------------------------------------------
## Análise da Irredutibilidade do Sistema Hospitalar Conforme as Novas Diretrizes Assistenciais
## ---------------------------------------------------------------------------------------------

# --- 0. Definição da Matriz de Transição P* ---

P_star    <- matrix(c(0.3, 0.4, 0.2, 0.0, 0.1,
                      0.2, 0.4, 0.0, 0.3, 0.1,
                      0.0, 0.3, 0.3, 0.3, 0.1,
                      0.0, 0.4, 0.0, 0.4, 0.2,
                      0.3, 0.0, 0.0, 0.0, 0.7), 
                    nrow = 5, byrow = TRUE)

estados   <- c("TR", "CA", "EC", "ICD", "AM")
rownames(P_star) <- estados
colnames(P_star) <- estados

# --- 1. Função para Cálculo de Potências da Matriz de Transição ---

matriz_potencia <- function(P, n)
{
  if (n == 1) return(P)
  
  P_n           <- P
  
  for (i in 2:n) 
  {
    P_n         <- P_n %*% P
  }
  
  return(P_n)
}

# --- 2. Cálculo das Potências P^2 e P^3 ---

P2              <- matriz_potencia(P_star, 2)
rownames(P2)    <- estados
colnames(P2)    <- estados

P3              <- matriz_potencia(P_star, 3)
rownames(P3)    <- estados
colnames(P3)    <- estados
# --- 3. Exibição das Matrizes Formatadas ---

list('Matriz de Transição P*' = P_star,
     'Potência P^2 da Matriz de Transição P*' = P2,
     'Potência P^3 da Matriz de Transição P*' = P3)
$`Matriz de Transição P*`
     TR  CA  EC ICD  AM
TR  0.3 0.4 0.2 0.0 0.1
CA  0.2 0.4 0.0 0.3 0.1
EC  0.0 0.3 0.3 0.3 0.1
ICD 0.0 0.4 0.0 0.4 0.2
AM  0.3 0.0 0.0 0.0 0.7

$`Potência P^2 da Matriz de Transição P*`
      TR   CA   EC  ICD   AM
TR  0.20 0.34 0.12 0.18 0.16
CA  0.17 0.36 0.04 0.24 0.19
EC  0.09 0.33 0.09 0.30 0.19
ICD 0.14 0.32 0.00 0.28 0.26
AM  0.30 0.12 0.06 0.00 0.52

$`Potência P^3 da Matriz de Transição P*`
       TR    CA    EC   ICD    AM
TR  0.176 0.324 0.076 0.210 0.214
CA  0.180 0.320 0.046 0.216 0.238
EC  0.150 0.315 0.045 0.246 0.244
ICD 0.184 0.296 0.028 0.208 0.284
AM  0.270 0.186 0.078 0.054 0.412
# --- 4. Verificação de Acessibilidade (Irredutibilidade) ---

irredutivel <- all(P3 > 0)
cat("A cadeia de Markov é irredutível? ", ifelse(irredutivel, "Sim", "Não"))
A cadeia de Markov é irredutível?  Sim

\[\small \begin{align} \tag*{$\blacksquare$}\\\\ \end{align}\]

Outra propriedade de interesse dos estados de uma cadeia de Markov é o período. Intuitivamente, o período está relacionado à estrutura temporal dos retornos a um estado específico, indicando a frequência com que a cadeia pode retornar a esse estado em múltiplos passos.


Definição 2.7 (Período de uma Cadeia de Markov). Seja \(\{X_n\}_{n \ \geqslant \ 0}\) uma cadeia de Markov com espaço de estados \(\mathcal{S}\). Para um estado arbitrário \(i \in \mathcal{S}\), define-se o período de \(i\) como: \[\begin{align}\\ d(i) = \mathrm{m.d.c.} \{ n \geqslant 1 : p_{ii}^{(n)} > 0 \}\\\\ \end{align}\] isto é, \(d(i)\) é o maior inteiro que divide a todos os \(n \geqslant 1\) tais que \(p_{ii}^{(n)} > 0\). Se para todo \(n \geqslant 1\) tivermos \(p_{ii}^{(n)} = 0\), então define-se \(d(i) = 0\). Estados para os quais \(d(i) = 1\) são denominados aperiódicos.


Exemplo 2.15 (Processo Cíclico de Produção). Considere uma fábrica cuja operação se alterna entre três fases produtivas bem definidas, associadas aos seguintes estados da cadeia de Markov:


  • Estado 1: Produção ativa — a máquina está operando normalmente;
  • Estado 2: Manutenção preventiva — a máquina é desligada para inspeção de rotina;
  • Estado 3: Reparo corretivo — a máquina está parada devido a uma falha e necessita de conserto.


O processo segue uma rotina operacional rigidamente cíclica, de modo que, ao final de cada turno, a máquina progride obrigatoriamente para a fase subsequente. As transições entre os estados ocorrem de maneira determinística, sendo descritas pela seguinte matriz de transição:

\[\begin{align}\\ P = \begin{bmatrix} \text{E1} & \text{E2} & \text{E3} \\ \hline 0 & 1 & 0 \\ 0 & 0 & 1 \\ 1 & 0 & 0 \end{bmatrix} \begin{matrix} \\ \text{E1} \\ \text{E2} \\ \text{E3} \end{matrix}\\\\ \end{align}\]

Essa matriz indica que, do estado 1 (produção ativa), a máquina sempre transita para o estado 2 (manutenção preventiva); do estado 2 (manutenção preventiva), transita para o estado 3 (reparo corretivo); e do estado 3 (reparo corretivo), retorna ao estado 1 (produção ativa). Portanto, o processo segue um percurso fechado e determinístico entre os três estados.


Suponha que nosso objetivo seja determinar o período do estado 1. De acordo com a Definição 2.7, o período de um estado \(i\) é definido como \(d(1) = \mathrm{m.d.c.}\{n \geqslant 1 : p_{11}^{(n)} > 0\}\), onde \(p_{ii}^{(n)}\) representa a probabilidade de retorno ao estado \(i\) em exatamente \(n\) passos. Para isso, analisemos as potências da matriz \(P\). Na primeira potência, \(P^1 = P\), verifica-se que \(p_{11}^{(1)} = 0\), ou seja, não é possível retornar ao estado 1 em um único passo. Na segunda potência, \(P^2 = P \cdot P\), obtém-se:

\[\begin{align}\\ P^2 = P \cdot P = \begin{matrix} \\ \text{E1} \\ \text{E2} \\ \text{E3} \end{matrix}\begin{bmatrix} \text{E1} & \text{E2} & \text{E3} \\ \hline 0 & 1 & 0 \\ 0 & 0 & 1 \\ 1 & 0 & 0 \end{bmatrix} \cdot \begin{bmatrix} \text{E1} & \text{E2} & \text{E3} \\ \hline 0 & 1 & 0 \\ 0 & 0 & 1 \\ 1 & 0 & 0 \end{bmatrix}\begin{matrix} \\ \text{E1} \\ \text{E2} \\ \text{E3} \end{matrix} = \begin{bmatrix} \text{E1} & \text{E2} & \text{E3} \\ \hline 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \end{bmatrix}\begin{matrix} \\ \text{E1} \\ \text{E2} \\ \text{E3} \end{matrix}\\\\ \end{align}\]

e observa-se que \(p_{11}^{(2)} = 0\), indicando que o retorno ao estado 1 também não é possível em dois passos. Por fim, ao calcular a terceira potência, \(P^3 = P^2 \cdot P\), obtém-se que:

\[\begin{align}\\ P^3 = P^2 \cdot P = \begin{matrix} \\ \text{E1} \\ \text{E2} \\ \text{E3} \end{matrix}\begin{bmatrix} \text{E1} & \text{E2} & \text{E3} \\ \hline 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \end{bmatrix} \cdot \begin{bmatrix} \text{E1} & \text{E2} & \text{E3} \\ \hline 0 & 1 & 0 \\ 0 & 0 & 1 \\ 1 & 0 & 0 \end{bmatrix}\begin{matrix} \\ \text{E1} \\ \text{E2} \\ \text{E3} \end{matrix} = \begin{bmatrix} \text{E1} & \text{E2} & \text{E3} \\ \hline 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}\begin{matrix} \\ \text{E1} \\ \text{E2} \\ \text{E3} \end{matrix}\\\\ \end{align}\]

isto é, a matriz identidade de ordem 3. Isso evidencia que \(p_{11}^{(3)} = 1\), ou seja, a cadeia retorna ao estado 1 com probabilidade 1 em exatamente três passos. De forma geral, por indução, conclui-se que, para todo \(m \geqslant 1\), \(P^{3m} = I_3\), de modo que \(p_{11}^{(3m)} = 1\), enquanto para qualquer \(n\) que não seja múltiplo de 3, \(p_{11}^{(n)} = 0\). Assim, o conjunto dos tempos possíveis de retorno ao estado 1 é:

\[\begin{align}\\ \{n \geqslant 1 : p_{11}^{(n)} > 0\} = \{3, 6, 9, \ldots\}\\\\ \end{align}\]

Portanto, o período do estado 1 é dado por:

\[\begin{align}\\ d(1) = \mathrm{m.d.c.}\{3, 6, 9, \ldots\} = 3\\\\ \end{align}\]

O mesmo raciocínio se aplica aos estados 2 e 3, uma vez que a estrutura cíclica da cadeia é perfeitamente simétrica, de modo que \(d(2) = d(3) = 3\). Isso nos leva a conclusão de que, apesar da natureza determinística e cíclica das transições, a cadeia é irredutível. Por definição, uma cadeia é irredutível se, para quaisquer pares de estados \(i, j\), existem inteiros positivos \(n, m \geqslant 1\) tais que \(p_{ij}^{(n)} > 0\) e \(p_{ji}^{(m)} > 0\). Neste exemplo, todos os pares de estados são acessíveis entre si em três passos: \(p_{ij}^{(3)} > 0\) e \(p_{ji}^{(3)} > 0\) para todo \(i, j \in \{1, 2, 3\}\). Isso garante que o espaço de estados forma uma única classe de comunicação, ou seja, não há fragmentação em subconjuntos isolados. Além disso, a cadeia é periódica, pois como todos os estados só são revisitados em múltiplos de três passos, cada estado possui período 3. Isso significa que o sistema apresenta um comportamento oscilatório regular, sem possibilidade de retorno em períodos arbitrários. O Código 2.18 apresenta, em linguagem R, o cálculo do período dos estados dessa cadeia de Markov, cuja dinâmica é regida pela matriz de transição \(P\).


Código 2.18. Cálculo do período dos estados da cadeia de Markov do Exemplo 2.15 com matriz de transição \(P\).

## --------------------------------------------------------------------------
## Cálculo do Período dos Estados no Processo Cíclico de Produção Industrial
## --------------------------------------------------------------------------

# --- 0. Definição da Matriz de Transição P ---

P           <- matrix(c(0, 1, 0,
                        0, 0, 1,
                        1, 0, 0), 
                      nrow = 3, byrow = TRUE)

estados     <- c("E1", "E2", "E3")
rownames(P) <- estados
colnames(P) <- estados

# --- 1. Função para Cálculo do Máximo Divisor Comum (MDC) ---

mdc         <- function(a, b)
{
  if (b == 0) return(a)
  return(mdc(b, a %% b))
}

# --- 2. Função para Determinação do Período de um Estado i ---

periodo_est <- function(P, i, max_n = 20)
{
  n         <- 1
  t_retorno <- c()
  P_n       <- P
  
  while (n <= max_n)
  {
    if (P_n[i, i] > 0) t_retorno <- c(t_retorno, n)
    n       <- n + 1
    P_n     <- P_n %*% P
  }
  
  if (length(t_retorno) == 0) return(NA)
  periodo   <- Reduce(mdc, t_retorno)
  
  return(periodo)
}

# --- 3. Cálculo do Período dos Estados ---

periodos        <- sapply(1:3, function(i) periodo_est(P, i))
names(periodos) <- estados

# --- 4. Exibição dos Resultados ---

periodos
E1 E2 E3 
 3  3  3 

\[\small \begin{align} \tag*{$\blacksquare$}\\\\ \end{align}\]

Exemplo 2.16 (Cadeia de Ehrenfest). Considere um sistema físico composto por \(N\) partículas distribuídas entre dois compartimentos, onde o número de partículas no primeiro compartimento determina o estado da cadeia de Markov, cujo espaço de estados é \(\mathcal{S} = \{0, 1, 2, \ldots, N\}\). O estado \(i \in \mathcal{S}\) representa que há exatamente \(i\) partículas no primeiro compartimento e, portanto, \(N - i\) partículas no segundo. A dinâmica do sistema consiste em que, a cada passo, uma partícula é selecionada aleatoriamente e transferida para o compartimento oposto, resultando em transições entre estados vizinhos. Assim, a matriz de transição \(P = \left[p_{ij}\right]\) da cadeia é definida por:

\[\begin{align}\\ p_{i, i+1} = \frac{N - i}{N}, \quad p_{i, i-1} = \frac{i}{N}, \qquad i = 1, \ldots, N-1\\\\ \end{align}\]

com condições de contorno \(p_{0,1} = 1, \quad p_{N, N-1} = 1\) e \(p_{ij} = 0\) para demais pares \((i,j)\). Assim, a matriz de transição \(P\) é da forma tridiagonal:

\[\begin{align}\\ P = \begin{bmatrix} S_0 & S_1 & S_2 & S_3 & \cdots & S_{N - 1} & S_N\\ \hline 0 & 1 & 0 & 0 & \cdots & 0 & 0 & | \hspace{0.8cm} S_0 \hspace{0.4cm}\\ \dfrac{1}{N} & 0 & \dfrac{N-1}{N} & 0 & \cdots & 0 & 0 & | \hspace{0.8cm} S_1 \hspace{0.4cm}\\ 0 & \dfrac{2}{N} & 0 & \dfrac{N-2}{N} & \cdots & 0 & 0 & | \hspace{0.8cm} S_2 \hspace{0.4cm}\\ 0 & 0 & \dfrac{3}{N} & 0 & \cdots & 0 & 0 & | \hspace{0.8cm} S_3 \hspace{0.4cm}\\ \vdots & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots & | \hspace{0.9cm} \vdots\hspace{0.6cm}\\ 0 & 0 & 0 & 0 & \cdots & 0 & \dfrac{1}{N} & | \hspace{0.4cm} S_{N-1} \hspace{0.3cm}\\ 0 & 0 & 0 & 0 & \cdots & 1 & 0 & | \hspace{0.7cm} S_N \hspace{0.4cm}\\ \end{bmatrix}\\\\ \end{align}\]

Note que, para quaisquer \(i, j \in \mathcal{S}\), podemos construir uma sequência de passos que leva de \(i\) a \(j\) transferindo partículas sucessivamente. Da mesma forma, a reversibilidade do movimento permite o retorno de \(j\) a \(i\). Portanto, a cadeia de Ehrenfest é irredutível. Por outro lado, em relação ao período do estado \(i\), tem-se, por definição, que:

\[\begin{align}\\ d(i) = \mathrm{m.d.c.}\left\{n \geqslant 1 : p_{ii}^{(n)} > 0\right\}\\\\ \end{align}\]

e, como as transições na cadeia de Ehrenfest só ocorrem entre estados vizinhos, o número de passos necessários para retornar ao mesmo estado deve ser par, visto que a cadeia alterna entre estados pares e ímpares. Logo,

\[\begin{align}\\ \left\{n \geqslant 1 : p_{ii}^{(n)} > 0\right\} = \left\{2, 4, 6, \ldots\right\}\\\\ \end{align}\]

e consequentemente, \(d(i) = 2\). O Código 2.19 apresenta, em linguagem R, o cálculo do período dos estados da cadeia de Ehrenfest para um sistema físico formado por \(N = 5\) partículas distribuídas entre dois compartimentos. A dinâmica do sistema, neste caso, é regida pela seguinte matriz de transição:

\[\begin{align}\\ P = \begin{bmatrix} S_0 & S_1 & S_2 & S_3 & S_4 & S_5\\ \hline 0 & 1 & 0 & 0 & 0 & 0 \\ 1/5 & 0 & 4/5 & 0 & 0 & 0 \\ 0 & 2/5 & 0 & 3/5 & 0 & 0 \\ 0 & 0 & 3/5 & 0 & 2/5 & 0 \\ 0 & 0 & 0 & 4/5 & 0 & 1/5 \\ 0 & 0 & 0 & 0 & 1 & 0 \end{bmatrix}\begin{matrix}\\ S_0 \\ S_1 \\ S_2 \\ S_3 \\ S_4 \\ S_5 \\\end{matrix}\\\\ \end{align}\]

Código 2.19. Cálculo do período dos estados na cadeia de Ehrenfest com \(N = 5\).

## ----------------------------------------------------------------
## Cálculo do Período dos Estados na Cadeia de Ehrenfest com N = 5
## ----------------------------------------------------------------

# --- 0. Definição da Matriz de Transição P ---

P           <- matrix(c(0,    1,      0,      0,      0,      0,
                        1/5,  0,      4/5,    0,      0,      0,
                        0,    2/5,    0,      3/5,    0,      0,
                        0,    0,      3/5,    0,      2/5,    0,
                        0,    0,      0,      4/5,    0,      1/5,
                        0,    0,      0,      0,      1,      0),
                      nrow = 6, byrow = TRUE)

estados     <- c("S0", "S1", "S2", "S3", "S4", "S5")
rownames(P) <- estados
colnames(P) <- estados

# --- 1. Função para Cálculo do Máximo Divisor Comum (MDC) ---

mdc         <- function(a, b)
{
  if (b == 0) return(a)
  return(mdc(b, a %% b))
}

# --- 2. Função para Determinação do Período de um Estado i ---

periodo_est <- function(P, i, max_n = 20)
{
  n         <- 1
  t_retorno <- c()
  P_n       <- P
  
  while (n <= max_n)
  {
    if (P_n[i, i] > 0) t_retorno <- c(t_retorno, n)
    n       <- n + 1
    P_n     <- P_n %*% P
  }
  
  if (length(t_retorno) == 0) return(NA)
  periodo   <- Reduce(mdc, t_retorno)
  
  return(periodo)
}

# --- 3. Cálculo do Período dos Estados ---

periodos        <- sapply(1:6, function(i) periodo_est(P, i))
names(periodos) <- estados

# --- 4. Exibição dos Resultados ---

periodos
S0 S1 S2 S3 S4 S5 
 2  2  2  2  2  2 

\[\small \begin{align} \tag*{$\blacksquare$}\\\\ \end{align}\]

Seja, agora, \(\{X_n\}_{n \ \geqslant \ 0}\) uma cadeia de Markov com espaço de estados \(\mathcal{E}\) e probabilidade de transição de um passo \(p_{ij}\), com \(i, j \in \mathcal{E}\). Então, para qualquer \(n = 1, 2, 3, \ldots\), define-se o tempo de primeira visita ao estado \(j\) por \(T_j = \min\{n > 0: X_n =j \}\). A partir dessa definição, tem-se que \(f_{ij}^{(n)} = P_i[T_j = n]\) representa a probabilidade de que a primeira visita a \(j\) ocorra exatamente no instante \(n\), e \[\begin{align}\\ F(i,j) = P_i[T_{j} < \infty] = \sum_{n=1}^\infty f_{ij}^{(n)}\\\\ \end{align}\] é chamada de função de retorno que corresponde a probabilidade de que a cadeia, partindo de \(i\), visite o estado \(j\) ao menos uma vez. Essa probabilidade, em particular, nos permite definir dois estados importantes de uma cadeia de Markov: os estados recorrentes, e os estados transitórios.


Definição 2.8 (Hinojosa e Milanés 2011). Seja \(j \in \mathcal{E}\) um estado de uma cadeia de Markov \(\{X_n\}_{n \ \geqslant \ 0}\) com espaço de estados \(\mathcal{E}\). Diz-se que:


  • O estado \(j\) é recorrente se \(F(j,j) = 1\), isto é, partindo de \(j\), a cadeia retorna ao estado \(j\) com probabilidade 1.
  • O estado \(j\) é transitório se \(F(j,j) < 1\), isto é, partindo de \(j\), a probabilidade de eventualmente a cadeia retornar ao estado \(j\) é estritamente menor que 1.


Exemplo 2.17. Considere uma cadeia de Markov \(\{X_n\}_{n \ \geqslant \ 0}\) com espaço de estados \(\mathcal{E} = {0, 1, 2}\), cuja matriz de transição \(P\) é dada por:

\[\begin{align}\\ P = \begin{bmatrix} \text{E0} & \text{E1} & \text{E2} \\ \hline 1 & 0 & 0 \\ 1/2 & 0 & 1/2 \\ 0 & 0 & 1 \end{bmatrix}\begin{matrix} \\ \text{E0} \\ \text{E1} \\ \text{E2} \\\end{matrix}\\\\ \end{align}\]

Nessa configuração, observa-se que:


  • Se a cadeia se encontra no estado \(0\), ela permanece nesse estado com probabilidade \(1\).

  • De forma análoga, se a cadeia se encontra no estado \(2\), ela também permanece ali com probabilidade \(1\).

  • Por outro lado, quando a cadeia se encontra no estado \(1\), ela realiza uma transição obrigatória no passo seguinte, movendo-se para o estado \(0\) com probabilidade \(1/2\) ou para o estado \(2\) com probabilidade \(1/2\), não havendo possibilidade de permanecer no estado \(1\).


Suponha que o objetivo seja classificar os estados como recorrentes ou transitórios. Neste caso, conforme a Definição 2.8, tem-se que:


  • Para o estado \(0\) que \(p_{00} = 1\). Isso significa que, uma vez que a cadeia atinge o estado \(0\), ela permanece indefinidamente nesse estado com probabilidade igual a \(1\). Consequentemente, \(F(0,0) = 1\) e, portanto, o estado \(0\) é classificado como recorrente. Além disso, trata-se de um estado recorrente absorvente, dado que, uma vez visitado, não há possibilidade de transição para qualquer outro estado.

  • O mesmo raciocínio aplica-se ao estado \(2\). Pela análise da matriz de transição, verifica-se que \(p_{22} = 1\), o que indica que, partindo de \(2\), o processo permanece indefinidamente nesse estado com probabilidade \(1\). Isso implica que \(F(2,2) = 1\), confirmando que o estado \(2\) é igualmente recorrente e, especificamente, absorvente, uma vez que não admite saída após ser alcançado.

  • Por sua vez, a análise do estado \(1\) revela uma dinâmica estrutural qualitativamente distinta. Nota-se que \(p_{11} = 0\), isto é, partindo de \(1\), não há possibilidade de o processo permanecer nesse estado no próximo instante. De fato, a transição a partir de \(1\) é determinística no sentido de que ocorre com probabilidade total no tempo seguinte, sendo igualmente provável a movimentação para o estado \(0\) ou para o estado \(2\), cada uma com probabilidade \(1/2\). Como ambos os estados de destino são absorventes, inexiste qualquer trajetória que permita, uma vez saindo do estado \(1\), um eventual retorno a ele. Isso implica que \(F(1,1) = 0 < 1\) e, consequentemente, o estado \(1\) é classificado como transitório, uma vez que a probabilidade de retorno a ele, partindo de si próprio, é estritamente menor que \(1\).

\[\small \begin{align} \tag*{$\blacksquare$}\\\\ \end{align}\]

Teorema 2.3 (Hinojosa e Milanés 2011). Seja \(\{X_n\}_{n \ \geqslant \ 0}\) uma cadeia de Markov com espaço de estados \(\mathcal{E}\). Defina o número total de visitas ao estado \(j \in \mathcal{E}\) por: \[\begin{align}\\ N_j = \sum_{n=0}^\infty \mathbb{I}_{\{X_n \ = \ j\}}\\\\ \end{align}\] onde \(\mathbb{I}_{{X_n = j}}\) é a função indicadora que vale 1 se \(X_n = j\) e 0 caso contrário. Seja também: \[\begin{align}\\ R(i,j) = E_i[N_j] = \sum_{n=0}^\infty P_i[X_n = j] = \sum_{n=0}^\infty p_{ij}^{(n)}\\\\ \end{align}\] o valor esperado do número de visitas ao estado \(j\) quando a cadeia inicia no estado \(i\). Então, as seguintes equivalências são válidas:


  • (I) O estado \(j\) é transitório se, e somente se, \[\begin{align}\\ P_j[N_j < \infty] = 1 \iff R(j,j) < \infty\\\\ \end{align}\] Além disso, para todo \(i \in \mathcal{E}\), \[\begin{align}\\ P_i[N_j < \infty] = 1 \qquad \text{e} \qquad R(i,j) = \dfrac{F(i,j)}{1 - F(j,j)}\\\\ \end{align}\]

  • (II) O estado \(j\) é recorrente se, e somente se, \[\begin{align}\\ P_j[N_j = \infty] = 1 \iff R(j,j) = \infty\\\\ \end{align}\] Além disso, para todo \(i \in \mathcal{E}\),

\[\begin{align}\\ F(i,j) &= P_i[T_j < \infty] = P_i[N_j = \infty] = 1 \\\\ R(i,j) &= \begin{cases} 0, & \text{se} \quad F(i,j) = 0, \\ \infty, & \text{se} \quad F(i,j) > 0. \end{cases}\\\\ \end{align}\]


Demonstração. Considere a seguinte decomposição: partindo de um estado \(i \in \mathcal{E}\), a cadeia pode ou não atingir o estado \(j\). Caso atinja, pode retornar sucessivamente a esse estado, em uma sequência de retornos. A propriedade de Markov garante que, a partir de cada visita ao estado \(j\), o comportamento futuro da cadeia é independente do passado, dependendo apenas do fato de estar atualmente no estado \(j\). Formalizando esse raciocínio, a distribuição do número total de visitas a \(j\) apresenta a seguinte estrutura:


  • A cadeia realiza a primeira visita ao estado \(j\) com probabilidade \(F(i,j)\). Caso contrário, se não atinge \(j\), o número total de visitas é zero.

  • Condicionalmente ao fato de que a cadeia atinge \(j\), o número de retornos subsequentes a \(j\) — após cada partida de \(j\) — segue uma distribuição geométrica, em que cada tentativa de retorno ocorre com probabilidade \(F(j,j)\).


Assim, a probabilidade de que haja pelo menos \(m\) visitas ao estado \(j\) é dada por:

\[\begin{align}\\ P_i[N_j \geqslant m] = F(i, j)F(j,j)^{m-1}, \qquad m = 1,2,3, \ldots\\\\ \end{align}\]

isto é, após a primeira visita a \(j\) — com probabilidade \(F(i,j)\) —, ocorrem \(m-1\) retornos bem-sucedidos, cada um com probabilidade \(F(j,j)\). Logo, tomando o limite quando \(m \to \infty\), temos:

\[\begin{align}\\ P_j[N_j = \infty] = \lim_{m \ \rightarrow \ \infty} P_i[N_j \geqslant m] = \lim_{m \ \rightarrow \ \infty} F(i, j)F(j,j)^{m-1}\\\\ \end{align}\]

Assim, (I) se o estado \(j\) é transitório, então \(P_j[N_j = \infty] = 0\), pois \(F(j,j) < 1\). Mas (II) se o estado \(j\) é recorrente, então \(P_j[N_j = \infty] = 1\), pois \(F(j,j) = 1\). Por outro lado, para o valor esperado do número total de visitas, tem-se que: \[\begin{align}\\ R(i,j) = E_i[N_j] = \sum_{m=1}^\infty mF(i, j)F(j,j)^{m-1}\left[1 - F(j,j)\right]\\\\ \end{align}\] que corresponde ao valor esperado de uma variável geométrica com parâmetro \((1 - F(j,j))\), multiplicada pela probabilidade \(F(i,j)\) de a cadeia alcançar \(j\). Reorganizando os termos, tem-se que: \[\begin{align}\\ R(i,j) = E_i[N_j] = F(i, j)\cdot \left[1 - F(j,j)\right] \sum_{m=1}^\infty m \ F(j,j)^{m-1}\\\\ \end{align}\] Uma vez que a soma de uma série geométrica é definida por: \[\begin{align}\\ \sum_{m=1}^\infty m \cdot r^{m-1} = \frac{1}{(1 - r)^2}, \qquad |r| < 1\\\\ \end{align}\] Tem-se que: \[\begin{align}\\ R(i,j) = F(i,j) \cdot \frac{1}{1 - F(j,j)}\\\\ \end{align}\]

Assim, (I) se o estado \(j\) é transitório, então \(R(j,j) < \infty\) se, e somente se, \(F(j,j) < 1\). Mas (II) se o estado \(j\) é recorrente, então \(R(j,j) = \infty\) se, e somente se, \(F(j,j) = 1\). Adicionalmente, se \(F(i,j) = 0\), então a cadeia nunca atinge \(j\) e, portanto, \(R(i,j) = 0\). Mas, se \(F(i,j) > 0\), então \(R(i,j) = \infty\). O teorema está, portanto, demonstrado.

\[\small \begin{align} \tag*{$\blacksquare$}\\\\ \end{align}\]

Corolário 2.1 (Hinojosa e Milanés 2011). Seja \(\{X_n\}_{n \ \geqslant \ 0}\) uma cadeia de Markov com espaço de estados \(\mathcal{E}\). Então, valem as seguintes propriedades:


  • (I) O estado \(j \in \mathcal{E}\) é transitório se, e somente se, \(\sum_{n=0}^\infty p_{jj}^{(n)} < \infty\).

  • (II) Se o estado \(j \in \mathcal{E}\) é transitório, então, para todo \(i \in \mathcal{E}\), é válido que:

    • \(\sum_{n=0}^\infty p_{ij}^{(n)} < \infty\);
    • \(\lim_{n \ \to \ \infty} p_{ij}^{(n)} = 0\).
  • (III) Se o estado \(j\) é recorrente e \(j \to k\), então:

    • \(k \to j\) e \(F(k,j) = 1\);
    • O estado \(k\) é recorrente.


Demonstração. Os itens (I) e (II) decorrem diretamente do Teorema 2.3. Para provar o item (III) assuma, primeiramente, que \(j \to k\). Neste caso, tem-se que \(F(j,k) > 0\). Mas como \(F(j,j) = 1\), a probabilidade de não voltar ao estado \(j\) é \(1-F(j,j) = 0\). Por outro lado, uma maneira de não voltar a \(j\) seria ir de \(j\) a \(k\) sem passar em \(j\) e depois nunca mais voltar em \(j\), portanto:

\[\begin{align}\\ 1 - F(j,j) \geqslant F(j,k)\left[1 - F(k,j)\right] \geqslant 0\\\\ \end{align}\]

Logo, \(1 - F(k,j) = 0\) que implica que \(F(k,j) = 1\) e \(k \to j\). Por fim, a demonstração de que \(k\) é recorrente decorre diretamente da equação de Chapman-Kolmogorov, e do fato de que a série \(\sum_{n=0}^\infty p_{jj}^{(n)}\) é divergente. O corolário está, portanto, demonstrado.

\[\small \begin{align} \tag*{$\blacksquare$}\\\\ \end{align}\]

Exemplo 2.18 (Passeio Aleatório Simples - Hinojosa e Milanés 2011). Considere um passeio aleatório simples com parâmetro \(p\) tal que \(0 < p < 1\), onde em cada passo a cadeia se move uma unidade para a direita com probabilidade \(p\) e para a esquerda com probabilidade \(1-p\). Denote por \(\{X_n\}_{n \ \geqslant \ 0}\) a cadeia de Markov correspondente, com espaço de estados \(\mathbb{Z}\). Como esta cadeia é irredutível, se mostrarmos que o estado \(0\) é transitório, então todos os seus estados também serão transitórios. Neste caso, pelo Corolário 2.1, basta mostrar que:

\[\begin{align}\\ \sum_{n=0}^\infty p^{(n)}_{00} < \infty\\\\ \end{align}\]

Como esta cadeia só pode retornar ao estado \(0\) após um número par de passos, na verdade, devemos mostrar que:

\[\begin{align}\\ \sum_{n=0}^\infty p^{(2n)}_{00} < \infty\\\\ \end{align}\]

Aqui, \(p_{00}^{(2n)}\) é a probabilidade de, partindo do estado zero, retornar a ele exatamente em \(2n\) transições. Isto ocorre ao realizar \(n\) passos para a esquerda e \(n\) para a direita, isto é, \(p_{00}^{(2n)}\) é a probabilidade de uma variável aleatória binomial com parâmetros \(2n\) e \(\rho\) assumir valor \(n\). Portanto,

\[\begin{align}\\ p^{(2n)}_{00} = \binom{2n}{n} \rho^n (1-\rho)^n = \dfrac{(2n)!}{(n!)^2}\rho^n (1-\rho)^n\\\\ \end{align}\]

Para analisar o comportamento assintótico dessa quantidade, utilizamos a fórmula de Stirling para aproximação do fatorial que, para \(n\) grande, é dada por:

\[\begin{align}\\ n! \approx \sqrt{2\pi n} n^n e^{-n}\\\\ \end{align}\]

Dessa forma,

\[\begin{align}\\ p^{(2n)}_{00} \approx \dfrac{[4\rho (1 - \rho)]^n}{\sqrt{\pi n}}\\\\ \end{align}\]

isto é, \[\begin{align}\\ \sum_{n=0}^\infty p^{(2n)}_{00} < \infty \iff \rho \neq 1/2\\\\ \end{align}\] Portanto, os estados do passeio aleatório simples serão recorrentes se, e somente se, ele for simétrico (\(\rho = 1/2\)). Caso contrário, os estados serão transitórios.

\[\small \begin{align} \tag*{$\blacksquare$}\\\\ \end{align}\]

Um estado recorrente \(i \in \mathcal{E}\) de uma cadeia de Markov satisfaz \(P_i[T_i < +\infty] = 1\). Quando, além disso, vale \(E_i[T_i] < +\infty\), o estado \(i\) é classificado como recorrente positivo. Se, por outro lado, \(E_i[T_i] = +\infty\), então o estado é dito recorrente nulo. Os estados recorrentes nulos são visitados infinitas vezes pela cadeia; contudo, o tempo médio entre duas visitas consecutivas cresce indefinidamente, o que faz com que, sob certo aspecto, esses estados se comportem de maneira semelhante aos estados transitórios. Esse fato está diretamente relacionado ao teorema ergódico, que será definido a seguir.


Teorema 2.4 (Teorema Ergódico - Tijms 2003). Seja \(\{X_n\}_{n \ \geqslant \ 0}\) uma cadeia de Markov irredutível e aperiódica (isto é, todos os estados são recorrentes positivos), com espaço de estados finito \(\mathcal{E}\), e seja \(f : \mathcal{E} \to \mathbb{R}\) uma função limitada. Então, para qualquer estado inicial \(i \in \mathcal{E}\), vale que: \[\begin{align}\\ \lim_{n \to \infty} \frac{1}{n} \sum_{k=1}^{n} E\left[f(X_k) \mid X_0 = i\right] = \sum_{j \ \in \ \mathcal{E}} f(j) \, \pi_j\\\\ \end{align}\] onde \(\pi = \{\pi_j\}_{j \ \in \ \mathcal{E}}\) é a distribuição estacionária da cadeia. Em particular, tomando \(f = \delta_j\), onde: \[\begin{align}\\ \delta_j(k) = \begin{cases} 1, & \text{se } k = j, \\ 0, & \text{se } k \neq j, \end{cases}\\\\ \end{align}\] obtém-se que \[\begin{align}\\ \lim_{n \to \infty} \frac{1}{n} \sum_{k=1}^{n} p^{(k)}_{ij} = \pi_j\\\\ \end{align}\] para todo \(i, j \in \mathcal{E}\). Portanto, a distribuição estacionária \(\pi\) existe, é única, e corresponde ao limite das médias temporais das probabilidades de transição da cadeia, independentemente do estado inicial.


Demonstração. Por definição da esperança condicional, tem-se que, para cada \(k \geqslant 1\),

\[\begin{align}\\ \mathbb{E}\left[f(X_k) \mid X_0 = i\right] = \sum_{j \in \mathcal{E}} f(j) \, p^{(k)}_{ij}\\\\ \end{align}\]

onde \(p^{(k)}_{ij}\) representa a probabilidade de transição do estado \(i\) para o estado \(j\) em \(k\) passos, ou seja, o elemento \((i,j)\) da matriz \(P^k\). Como \(\{X_n\}_{n \ \geqslant \ 0}\) é finita e irredutível, segue que \(\{X_n\}_{n \ \geqslant \ 0}\) é também positivamente recorrente e aperiódica. Nessas condições, vale a Lei dos Grandes Números para cadeias de Markov, a qual assegura que, para qualquer função \(f\) limitada,

\[\begin{align}\\ \frac{1}{n} \sum_{k=1}^{n} f(X_k) \xrightarrow{a.s.} \sum_{j \in \mathcal{E}} f(j) \, \pi_j \quad \text{quando} \ n \to \infty\\\\ \end{align}\]

independentemente do estado inicial \(X_0 = i\). Assim, ao tomar o valor esperado em ambos os lados, obtemos que:

\[\begin{align}\\ \lim_{n \to \infty} \frac{1}{n} \sum_{k=1}^{n} \mathbb{E}\left[f(X_k) \mid X_0 = i\right] = \sum_{j \ \in \ \mathcal{E}} f(j) \, \pi_j\\\\ \end{align}\]

Para verificar o resultado no caso particular em que \(f = \delta_j\), sendo \(\delta_j\) a função indicadora do estado \(j\), basta notar que:

\[\begin{align}\\ \mathbb{E}\left[\delta_j(X_k) \mid X_0 = i\right] = p^{(k)}_{ij}\\\\ \end{align}\]

Assim, aplicando diretamente o resultado anterior, segue que:

\[\begin{align}\\ \lim_{n \to \infty} \frac{1}{n} \sum_{k=1}^{n} p^{(k)}_{ij} = \pi_j \quad \text{para todo} \ i, j \in \mathcal{E}\\\\ \end{align}\]

Este resultado mostra que a frequência relativa de visitas ao estado \(j\) converge, quando \(n \to \infty\), para \(\pi_j\), independentemente do estado inicial \(i\). Assim, \(\pi_j\) representa a proporção de tempo que a cadeia passa, em média, no estado \(j\) ao longo do tempo, caracterizando o comportamento assintótico da cadeia. Portanto, a distribuição estacionária \(\pi\) não apenas existe e é única, como também descreve o limite das médias temporais das probabilidades de transição da cadeia, como queríamos demonstrar.

\[\small \begin{align} \tag*{$\blacksquare$}\\\\ \end{align}\]

Exemplo 2.19 (Sistema de Atendimento em um Caixa). No contexto da gestão de operações em serviços, é de interesse prático compreender o comportamento dinâmico de sistemas de atendimento, como caixas de supermercados. A análise da utilização de recursos — por exemplo, a proporção de tempo em que um caixa permanece ocupado — permite tomar decisões informadas sobre alocação de funcionários, dimensionamento de filas e níveis de serviço. Neste contexto, para ilustrar a aplicação do teorema ergódico, considere um modelo simplificado que descreve o funcionamento de um caixa de supermercado, cuja ocupação ao longo do tempo pode ser adequadamente representada por uma cadeia de Markov a tempo discreto. Para este modelo, assuma que o sistema pode estar em dois estados mutuamente exclusivos:


  • Estado 1: Caixa Livre (CL) — não há cliente em atendimento no caixa.
  • Estado 2: Caixa Ocupado (CO) — há um cliente em atendimento no caixa.


Suponha que a dinâmica do sistema, de um instante de tempo para o seguinte (por exemplo, a cada minuto), seja governada pelas seguintes probabilidades de transição:


  • Se o caixa está livre no tempo \(n\), então:
    • Permanece livre no tempo \(n+1\) com probabilidade 0.7 (não chega cliente).
    • Torna-se ocupado no tempo \(n+1\) com probabilidade 0.3 (chega um cliente e inicia o atendimento).
  • Se o caixa está ocupado no tempo \(n\), então:
    • Torna-se livre no tempo \(n+1\) com probabilidade 0.4 (o atendimento é finalizado).
    • Permanece ocupado no tempo \(n+1\) com probabilidade 0.6 (o atendimento continua).


A matriz de transição que descreve completamente a dinâmica do sistema é dada por:

\[\begin{align}\\ P = \begin{bmatrix} \text{CL} & \text{CO} \\ \hline 0.7 & 0.3 \\ 0.4 & 0.6 \end{bmatrix}\begin{matrix} \\ \text{CL} \\ \text{CO} \\ \end{matrix}\\\\ \end{align}\]

Note que a cadeia em questão é irredutível, pois é possível, com probabilidade positiva, transitar de qualquer estado para qualquer outro em um número finito de passos. De fato, as transições \(p_{12} = 0.3\) e \(p_{21} = 0.4\) são estritamente positivas, o que garante a conectividade dos estados. Além disso, pela definição de período, conclui-se que a cadeia é aperiódica, visto que:


  • \(p^{(1)}_{11} = 0.7 > 0\) — há retorno ao estado em 1 passo.
  • \(p^{(1)}_{22} = 0.6 > 0\) — também há retorno em 1 passo.


isto é, \(d(1) = d(2) = 1\), o que implica que a cadeia é aperiódica. Então, como a cadeia é finita (possui dois estados), irredutível e aperiódica, ela satisfaz as condições do teorema ergódico. Isso significa que a distribuição estacionária existe e é única. Para determiná-la, considere o sistema:

\[\begin{align}\\ \begin{cases} 0.7\pi_1 + 0.4\pi_2 = \pi_1 \\ 0.3\pi_1 + 0.6\pi_2 = \pi_2 \end{cases}\\\\ \end{align}\]

Logo, considerando a primeira equação:

\[\begin{align}\\ 0.7\pi_1 + 0.4\pi_2 = \pi_1 \implies 0.4\pi_2 = 0.3\pi_1 \implies \pi_2 = \frac{0.3}{0.4} \pi_1 = 0.75\pi_1\\\\ \end{align}\]

Aplicando a condição de normalização \(\pi_1 + \pi_2 = 1\):

\[\begin{align}\\ \pi_1 + 0.75\pi_1 = 1 \implies 1.75\pi_1 = 1 \implies \pi_1 = \frac{1}{1.75} = \frac{4}{7}\\\\ \end{align}\]

Logo:

\[\begin{align}\\ \pi_2 = 0.75\pi_1 = 0.75 \cdot \frac{4}{7} = \frac{3}{7}\\\\ \end{align}\]

Portanto, a distribuição estacionária é:

\[\begin{align}\\ \pi = \left( \frac{4}{7}, \frac{3}{7} \right)\\\\ \end{align}\]

Agora, seja \(f : \mathcal{E} \to \mathbb{R}\) uma função de interesse que mensura o nível de ocupação do caixa, definida por:

\[\begin{align}\\ f(1) &= 0 \quad \text{(caixa livre)}\\\\ f(2) &= 1 \quad \text{(caixa ocupado)}\\\\ \end{align}\]

Logo, pelo teorema ergódico, tem-se que:

\[\begin{align}\\ \lim_{n \to \infty} \frac{1}{n} \sum_{k=1}^{n} \mathbb{E}\left[ f(X_k) \mid X_0 = i \right] = \sum_{j \in \mathcal{E}} f(j) \pi_j = f(1)\pi_1 + f(2)\pi_2 = 0 \cdot \frac{4}{7} + 1 \cdot \frac{3}{7} = \frac{3}{7}\\\\ \end{align}\]

Isso significa que, no longo prazo, o caixa estará ocupado em aproximadamente 42.86% do tempo e livre em aproximadamente 57.14% do tempo, independentemente do estado inicial. O Código 2.20 apresenta, em linguagem R, a análise da cadeia de Markov que modela o sistema de atendimento de um caixa de supermercado, incluíndo o teorema ergódico.


Código 2.20. Implementação em R da cadeia de Markov para o Sistema de Atendimento em um Caixa, com cálculo da distribuição estacionária e períodos dos estados.

## -------------------------------------------------------
## Cadeia de Markov do Sistema de Atendimento em um Caixa
## -------------------------------------------------------

# --- 0. Definição da Matriz de Transição P ---

P           <- matrix(c(0.7, 0.3,
                        0.4, 0.6),
                      nrow = 2, byrow = TRUE)

estados     <- c("Livre", "Ocupado")
rownames(P) <- estados
colnames(P) <- estados

# --- 1. Cálculo da Distribuição Estacionária via solve ---

# Montar Sistema Linear Para pi Tais Que t(P) %*% pi = pi e soma(pi) = 1

A           <- t(P) - diag(2)
A[2, ]      <- c(1, 1)      # Substitui 2ª Equação Pela Normalização
b           <- c(0, 1)

pi          <- solve(A, b)
names(pi)   <- estados

# --- 2. Definição da Função f que Mede Ocupação ---

f           <- c(0, 1)  # 0 Para Livre, 1 Para Ocupado
names(f)    <- estados

# --- 3. Cálculo da Utilização Esperada do Caixa (Longo Prazo) ---

ocupacao_ergodica <- sum(f * pi)

# --- 4. Cálculo do Período dos Estados ---

# Função Para cálculo do Máximo Divisor Comum (MDC)

mdc <- function(a, b) 
{
  if (b == 0) return(a)
  mdc(b, a %% b)
}

# Função para Determinar o Período do Estado i

periodo_est <- function(P, i, max_n = 20)
{
  n         <- 1
  t_retorno <- c()
  P_n       <- P
  
  while (n <= max_n) 
  {
    if (P_n[i, i] > 0) t_retorno <- c(t_retorno, n)
    n       <- n + 1
    P_n     <- P_n %*% P
  }
  
  if (length(t_retorno) == 0) return(NA)
  periodo   <- Reduce(mdc, t_retorno)
  
  return(periodo)
}

periodos        <- sapply(1:2, function(i) periodo_est(P, i))
names(periodos) <- estados

# --- 5. Exibição dos Resultados ---

list("Matriz de Transição P" = P,
     "Distribuição Estacionária" = pi,
     "Utilização Esperada do Caixa (Ocupado a Longo Prazo)" = ocupacao_ergodica * 100,
     "Período dos Estados:" = periodos)
$`Matriz de Transição P`
        Livre Ocupado
Livre     0.7     0.3
Ocupado   0.4     0.6

$`Distribuição Estacionária`
    Livre   Ocupado 
0.5714286 0.4285714 

$`Utilização Esperada do Caixa (Ocupado a Longo Prazo)`
[1] 42.85714

$`Período dos Estados:`
  Livre Ocupado 
      1       1 

\[\small \begin{align} \tag*{$\blacksquare$}\\\\ \end{align}\]