Professional Documents
Culture Documents
Buenos das,
Me ha surgido una duda acerca de cmo simular la cadena de Markov en el caso prctico 3. Segn lo que encontr por internet, se
puede inicializar un vector inicial, en este caso [1,0,0] ya que partimos del estado 1, e ir multiplicando dicho vector por la matriz de
transiciones el nmero de veces que especi que el enunciado, 1000 en nuestro caso. Al nal del bucle tendremos el resultado que
ser el comportamiento estacionario del sistema.
Sin embargo, el resultado siempre ser el mismo ya que no hay ningn elemento aleatorio. No consigo averiguar dnde hay que
introducir dicho elemento. Si alguien ha tenido la misma duda, agradecera alguna sugerencia.
Hola Atanas,
Yo lo he planteado de una manera diferente. El resultado ha de ser un vector, de dimension 1, en el que cada posicion indica el estado
en el que se encuentra el sistema, de este modo en la posicion 1 tendra el valor 1 (o "estado1" si lo dejas mas "bonito"), segun nos
dice el enunciado. Has de generar una v.a. que, partiendo del estado actual, determinara cual va ser el siguiente estado, a partir de la
matriz transiciones, aadir este nuevo estado en el vector de resultados y comenzar la siguiente iteracion en el estado que acabas de
calcular... y asi repites el proceso las n veces.
La cadena de Markov te dice que estas en un estado, ocurre algo (la v.a. que has de generar) y te lleva a otro estado desde el que se
repite el proceso.
Un saludo,
Fernando
Enlace permanente | Mostrar mensaje anterior | Responder
Hola a todos,
Tenemos la matriz de transicin que escribir as: P= ( la 1= c(p11, p12, p13), la 2= c(p21,p22,p23), la 3=c(p31,p32,p33))
Transiciones MCMC: 1000, es decir tiempo va de 1:1000, repetir esto 100 veces.
Del material al respecto he entendido: siendo el estado de inicio el estado i, el estado en el tiempo siguiente, estado j (j va de 1 a 3
aqu) , es escogido segn la isima la de la matriz de transicin P.
#primer estado es X1, por tanto para saber el estado que ocurrir en tiempo t siguiente hara:
[1]
[1] 0
[2] 1
[3] 0
Yo he puesto dentro de la funcinrmultinom(1,1, prob=P[1, ] ), n=1 y size=1, pensando: donde caiga el 1, en este caso en la
posicin 2, entonces para esta corrida ha ganado X2.
Suponiendo que lo he entendido bien, durante mi primera ejecucin he obtenido que: empezando con X1, obtuve en el siguiente t :
X2, por tanto, en el proximo t sera:
Y as sucesivamente hasta que lo halla hecho 1000 veces, al nal tendra un vector:
ESTADOS <- c( X1, X2, X2, X1, X3...........................) de mil entradas que van de X1 a X3, asignara por ejemplo si es X1 el numero 1 y
si es X2 2, X3 3.
Saludos a todos
Hola Vanessa,
Yo lo he hecho con una Uniforme y considerando la matriz con probabilidades acumuladas ... de esta manera, al generar un valor
entre 0 y 1, lo "busco" entre cualquiera de las 3 columnas del estado correspondiente para obtener el siguiente estado...
Un saludo,
Fernando
Muchas gracias, Fernando y Vanessa, por vuestras respuestas, me habis ayudado mucho a aclarar esta duda.
Por cierto Fernando, yo tena la misma idea que t en utilizar la matriz de probabilidades acumuladas. De esta manera el cdigo es
ms e ciente ya que, por lo menos en mi diseo, se evita un bucle interno que si utilizara la matriz de probabilidades a secas, se
ejecutara 1e5 veces en total...
Atanas
Hola a todos
Muchas gracias por vuestras intervenciones, que van bastante bien encaminadas. Tan slo un par de comentarios:
A la hora de generar de un CMTD, recordad que es mucho ms e ciente generar primero el tiempo hasta la siguiente transicin
(con una v.a. geometrica), y, luego, una vez que ya sabemos cundo se va a producir el siguiente salto, generamos el siguiente
destino (que ya no puede ser el propio estado inicial, as que tendris que eliminar--podis usar la funcin setdiff--esa entrada
de la la correspondiente de la matriz de transicin, posiblemente normalizando de nuevo las probabilidades restantes, aunque
eso ya se suele encargar de hacerlo R internamente, mirad la ayuda de las funciones que utilicis).
Aunque ambas aproximaciones que habis comentado son correctas, yo pre ero que hagis la implementacin lo ms bsica
posible, usando las funciones ms sencillas posibles (idealmente, slo rgeom y con la funcin sample es su ciente para hacer un
cdigo razonablemente e ciente).
Al margen de esto, voy a ampliar unos das las entregas de los ltimos casos, por si an queris darles alguna vuelta ms.
Un saludo y nimo
Javier