# Cadenas de Markov en R --------------------------------------------------

#Estados
estados = c(1:5)

#Inicializar la matriz

mat1 = matrix(data = 0,nrow = 5, ncol = 5)
filas = estados
columnas = estados

#Llenar la matriz
for (i in filas) {
  for (j in columnas) {
    if (j == i + 1 & i < 5) {
      mat1[i,j] = 0.5
    }
    if (j == i & 1 < i & i < 5) {
      mat1[i,j] = 0.3
    }
    if (j == i - 1 & i > 1) {
      mat1[i,j] = 0.2
    }
    if (j == i & i == 1) {
      mat1[i,j] = 0.5
    }
    if (j == i & i == 5) {
      mat1[i,j] = 0.8
    }
  }
}
print(mat1)
rowSums(mat1)


# Cadena de markov --------------------------------------------------------

library(markovchain)

cmtd = new(Class = "markovchain", states = as.character(estados), transitionMatrix = mat1) 

#Para visualizar la cadena de markov
plot(cmtd)


# Analisis transitorio
alpha = c(0,1,0,0,0) 
probs2pasos = alpha * (cmtd^2)
probs2pasos


#Matriz en tiempo continuo

estados2 = c(0:15)

#Inicializar la matriz

mat2 = matrix(data = 0,nrow = length(estados2), ncol = length(estados2))
dimnames(mat2) = list(estados2,estados2)
filas2 = estados2
columnas2 = estados2


#Llenar la matriz
for (i in filas2) {
  for (j in columnas2) {
    if (j == i + 1 & i < 15 ) {
      mat2[i+1,j+1] = 5
    }
    if (j == i - 1 & i > 0) {
      mat2[i+1,j+1] = 9*i
    }
  }
}

#Para hacer que la suma de la filas de 0, debemos llenar la diagonal

for (i in 1:16) {
  mat2[i,i]=-sum(mat2[i,])
}


#Definir la cadena de markov

cmtc = new(Class = "ctmc", states = as.character(estados2), byrow = TRUE, 
           generator = mat2)


library(expm)

#Definir el vector de condiciones iniciales
alpha2 = c(rep(0,10),1,rep(0,5))

#Analisis transitorio
probs = alpha2%*%expm(mat2*(72))
probs

Add a new chunk by clicking the Insert Chunk button on the toolbar or by pressing Ctrl+Alt+I.

When you save the notebook, an HTML file containing the code and output will be saved alongside it (click the Preview button or press Ctrl+Shift+K to preview the HTML file).

The preview shows you a rendered HTML copy of the contents of the editor. Consequently, unlike Knit, Preview does not run any R code chunks. Instead, the output of the chunk when it was last run in the editor is displayed.

LS0tDQp0aXRsZTogImNhZGVuYXMgZGUgbWFya292IGVuIFIiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQogDQoNCmBgYHtyfQ0KDQoNCiMgQ2FkZW5hcyBkZSBNYXJrb3YgZW4gUiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojRXN0YWRvcw0KZXN0YWRvcyA9IGMoMTo1KQ0KDQojSW5pY2lhbGl6YXIgbGEgbWF0cml6DQoNCm1hdDEgPSBtYXRyaXgoZGF0YSA9IDAsbnJvdyA9IDUsIG5jb2wgPSA1KQ0KZmlsYXMgPSBlc3RhZG9zDQpjb2x1bW5hcyA9IGVzdGFkb3MNCg0KI0xsZW5hciBsYSBtYXRyaXoNCmZvciAoaSBpbiBmaWxhcykgew0KICBmb3IgKGogaW4gY29sdW1uYXMpIHsNCiAgICBpZiAoaiA9PSBpICsgMSAmIGkgPCA1KSB7DQogICAgICBtYXQxW2ksal0gPSAwLjUNCiAgICB9DQogICAgaWYgKGogPT0gaSAmIDEgPCBpICYgaSA8IDUpIHsNCiAgICAgIG1hdDFbaSxqXSA9IDAuMw0KICAgIH0NCiAgICBpZiAoaiA9PSBpIC0gMSAmIGkgPiAxKSB7DQogICAgICBtYXQxW2ksal0gPSAwLjINCiAgICB9DQogICAgaWYgKGogPT0gaSAmIGkgPT0gMSkgew0KICAgICAgbWF0MVtpLGpdID0gMC41DQogICAgfQ0KICAgIGlmIChqID09IGkgJiBpID09IDUpIHsNCiAgICAgIG1hdDFbaSxqXSA9IDAuOA0KICAgIH0NCiAgfQ0KfQ0KcHJpbnQobWF0MSkNCnJvd1N1bXMobWF0MSkNCg0KDQojIENhZGVuYSBkZSBtYXJrb3YgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KbGlicmFyeShtYXJrb3ZjaGFpbikNCg0KY210ZCA9IG5ldyhDbGFzcyA9ICJtYXJrb3ZjaGFpbiIsIHN0YXRlcyA9IGFzLmNoYXJhY3Rlcihlc3RhZG9zKSwgdHJhbnNpdGlvbk1hdHJpeCA9IG1hdDEpIA0KDQojUGFyYSB2aXN1YWxpemFyIGxhIGNhZGVuYSBkZSBtYXJrb3YNCnBsb3QoY210ZCkNCg0KDQojIEFuYWxpc2lzIHRyYW5zaXRvcmlvDQphbHBoYSA9IGMoMCwxLDAsMCwwKSANCnByb2JzMnBhc29zID0gYWxwaGEgKiAoY210ZF4yKQ0KcHJvYnMycGFzb3MNCg0KDQojTWF0cml6IGVuIHRpZW1wbyBjb250aW51bw0KDQplc3RhZG9zMiA9IGMoMDoxNSkNCg0KI0luaWNpYWxpemFyIGxhIG1hdHJpeg0KDQptYXQyID0gbWF0cml4KGRhdGEgPSAwLG5yb3cgPSBsZW5ndGgoZXN0YWRvczIpLCBuY29sID0gbGVuZ3RoKGVzdGFkb3MyKSkNCmRpbW5hbWVzKG1hdDIpID0gbGlzdChlc3RhZG9zMixlc3RhZG9zMikNCmZpbGFzMiA9IGVzdGFkb3MyDQpjb2x1bW5hczIgPSBlc3RhZG9zMg0KDQoNCiNMbGVuYXIgbGEgbWF0cml6DQpmb3IgKGkgaW4gZmlsYXMyKSB7DQogIGZvciAoaiBpbiBjb2x1bW5hczIpIHsNCiAgICBpZiAoaiA9PSBpICsgMSAmIGkgPCAxNSApIHsNCiAgICAgIG1hdDJbaSsxLGorMV0gPSA1DQogICAgfQ0KICAgIGlmIChqID09IGkgLSAxICYgaSA+IDApIHsNCiAgICAgIG1hdDJbaSsxLGorMV0gPSA5KmkNCiAgICB9DQogIH0NCn0NCg0KI1BhcmEgaGFjZXIgcXVlIGxhIHN1bWEgZGUgbGEgZmlsYXMgZGUgMCwgZGViZW1vcyBsbGVuYXIgbGEgZGlhZ29uYWwNCg0KZm9yIChpIGluIDE6MTYpIHsNCiAgbWF0MltpLGldPS1zdW0obWF0MltpLF0pDQp9DQoNCg0KI0RlZmluaXIgbGEgY2FkZW5hIGRlIG1hcmtvdg0KDQpjbXRjID0gbmV3KENsYXNzID0gImN0bWMiLCBzdGF0ZXMgPSBhcy5jaGFyYWN0ZXIoZXN0YWRvczIpLCBieXJvdyA9IFRSVUUsIA0KICAgICAgICAgICBnZW5lcmF0b3IgPSBtYXQyKQ0KDQoNCmxpYnJhcnkoZXhwbSkNCg0KI0RlZmluaXIgZWwgdmVjdG9yIGRlIGNvbmRpY2lvbmVzIGluaWNpYWxlcw0KYWxwaGEyID0gYyhyZXAoMCwxMCksMSxyZXAoMCw1KSkNCg0KI0FuYWxpc2lzIHRyYW5zaXRvcmlvDQpwcm9icyA9IGFscGhhMiUqJWV4cG0obWF0MiooNzIpKQ0KcHJvYnMNCg0KDQpgYGANCg0KQWRkIGEgbmV3IGNodW5rIGJ5IGNsaWNraW5nIHRoZSAqSW5zZXJ0IENodW5rKiBidXR0b24gb24gdGhlIHRvb2xiYXIgb3IgYnkgcHJlc3NpbmcgKkN0cmwrQWx0K0kqLg0KDQpXaGVuIHlvdSBzYXZlIHRoZSBub3RlYm9vaywgYW4gSFRNTCBmaWxlIGNvbnRhaW5pbmcgdGhlIGNvZGUgYW5kIG91dHB1dCB3aWxsIGJlIHNhdmVkIGFsb25nc2lkZSBpdCAoY2xpY2sgdGhlICpQcmV2aWV3KiBidXR0b24gb3IgcHJlc3MgKkN0cmwrU2hpZnQrSyogdG8gcHJldmlldyB0aGUgSFRNTCBmaWxlKS4NCg0KVGhlIHByZXZpZXcgc2hvd3MgeW91IGEgcmVuZGVyZWQgSFRNTCBjb3B5IG9mIHRoZSBjb250ZW50cyBvZiB0aGUgZWRpdG9yLiBDb25zZXF1ZW50bHksIHVubGlrZSAqS25pdCosICpQcmV2aWV3KiBkb2VzIG5vdCBydW4gYW55IFIgY29kZSBjaHVua3MuIEluc3RlYWQsIHRoZSBvdXRwdXQgb2YgdGhlIGNodW5rIHdoZW4gaXQgd2FzIGxhc3QgcnVuIGluIHRoZSBlZGl0b3IgaXMgZGlzcGxheWVkLg0K