Suposição de Markov diz que desde que o estado atual seja conhecido os estados anteriores são irrelevantes para calcular o proximo estado.
A Cadeia de Markov é um processo estocástico onde dada uma sequencia de estados X1, X2, X3, ... de variáveis aleatórias, a probabilidade do estado Xn+1 pode ser calculada apenas baseada no estado Xn.
Ou seja para calcular um determinado estado Xn+1 na cadeia de markov basta que tenhamos o estado anterior (Xn) conhecido e conhecer as probabilidades de transição entre os estados dessa cadeia.
Para o codigo desse exemplo foi usada a biblioteca pomegranate
Para o exemplo Sol e Chuva temos que a probabilidade de um dia de sol ser sucedido por um dia chuva é de 10% e a probabilidade de um dia de chuva ser sucedido por um dia de sol é de 60%.
Com essas probabilidades é possivel definir o modelo de transição entre os estados:
Modelo de Transição
| Sol | Chuva | |
|---|---|---|
| Sol | 0.9 | 0.1 |
| Chuva | 0.6 | 0.4 |
Que no codigo é definido como:
modeloTransicao = ConditionalProbabilityTable([['sol', 'sol', 0.9],
['sol', 'chuva', 0.1],
['chuva', 'sol', 0.6],
['chuva', 'chuva', 0.4]], [estadoInicial])Com essas possibilidades basta definir o Estado Inicial, que será o primeiro valor da cadeia. No codigo foi usado 50% de chance de ser sol e 50% de ser chuva.
estadoInicial = DiscreteDistribution({'sol': 0.5, 'chuva': 0.5})| Sol | Chuva |
|---|---|
| 0.5 | 0.5 |
Com essas informações é possivel criar uma cadeia de markov.
model = MarkovChain([d1, d2])Amostra
Para criar uma amostra basta usar o metodo sample() e passar como parametro o tamanho da cadeia que deseja gerar.
model.sample(10)Por exemplo com 10 amostras uma das possiveis cadeias geradas é:
| Sol | Chuva | Chuva | Sol | Sol | Sol | Sol | Sol | Chuva | Sol |
|---|
