Advertisement
Guest User

Untitled

a guest
Apr 24th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.55 KB | None | 0 0
  1. variable alpha is not defined in model or data set.
  2.  
  3. is.not <- apply( CH, 1, function(x) {
  4. # si de 1:11 el num de NAs es cero, pon 11
  5. ifelse( length((1:11)[is.na(x)]) == 0,
  6. 11,
  7. # si hay NAs, numeralos de 1:11 menos 1
  8. as.numeric((1:11)[is.na(x)])[1] - 1
  9. )
  10.  
  11. } )
  12.  
  13. is.not <- as.integer(is.not)
  14.  
  15. model{
  16.  
  17. #### Verosimilitud
  18.  
  19. for (i in 1:nind){
  20.  
  21. ### Definimos el valor de la variable latente en la primera recaptura
  22. z[i, 1] <- 1 # en el momento de anillamiento sabemos que esta vivo con probabilidad 1
  23. for (t in 2: is.not[i]){ # t vuelve a ser indicador de posicion, desde despues del anill hasta el total de columns
  24.  
  25. ###### State process
  26. z[i,t] ~ dbern (mu1[i,t]) # esto realmente es Z[i,t+1]|Z[i,t] ~ ber(psi[i,t] * z[i,t])
  27.  
  28. mu1[i,t] <- psi[i,t-1] * z[i,t-1] # t-1 corresponde al valor en la columna anterior para psi. Respecto a z, pone t-1 porque es la manera de expresar la condicionada
  29.  
  30. ###### Observation process
  31. y[i,t] ~ dbern (mu2[i,t]) # esto equivaldria a Y[i,t]|Z[i,t]~ber(z[i,t]p[i,t])
  32.  
  33. mu2[i,t] <- eta[i,t-1] * z[i,t] # La matriz de z esta en el mismo orden que la CH, pero la de p, esta atrasada, ademas de ser de 10 columnas (y no 11), por eso es t-1
  34. }
  35. }
  36.  
  37. #### Previas y limitaciones
  38.  
  39. for(i in 1:nind){
  40.  
  41. for (t in 1:(is.not[i]-1)) { # t es indicador de posicion, desde la columna 1 hasta maximo de 11-1
  42. psi[i,t] <- alpha[t] # efectos fijos con respecto al tpo en el estudio
  43. eta[i,t] <- beta[t] # efectos fijos con respecto al tpo en el estudio
  44. }
  45. }
  46.  
  47. for (t in 1:(n.occasions-1)){ # vuelve a ser indicador de posicion
  48.  
  49. beta[t] ~ dunif(0,1) # le damos una previa poco informativa alpha[t] ~ dunif(0,1) # le damos una previa poco informativa
  50. }
  51. }
  52.  
  53. known.state.cjs <- function(ch){
  54. state <- ch
  55. for (i in 1:dim(ch)[1]){
  56.  
  57. n1 <- min(which(ch[i,]==1)) # el primer 1
  58. n2 <- max(which(ch[i,]==1)) # el ultimo 1
  59. state[i, n1:n2] <- 1 # sabemos que esta vivo en el tiempo de en medio
  60. state[i, n1] <- NA # en el primer uno ponemos NA xq las variables latentes están en escala de 2 a 10
  61. }
  62.  
  63. state[state==0] <- NA # si esta muerto tb pongo un NA, es decir, la matriz sera de 1's y NA's
  64. return(state)
  65. }
  66.  
  67. #### Datos
  68.  
  69. bugs.data <- list(y=CH, is.not=is.not, nind=dim(CH)[1], n.occasions=dim(CH)[2], z=known.state.cjs(CH)) # todos los datos
  70.  
  71. ##### Funcion para crear valores iniciales para la variable latente z (aqui z es una matriz de ceros, relativos a los ceros reales, y NAs, relativos a los NA reales y a los 1s)
  72.  
  73. cjs.init.z <- function(ch, is.not){
  74.  
  75. for(i in 1: dim(ch)[1]){ # para todo el numero de filas
  76.  
  77. if(sum(ch[i,], na.rm=TRUE)==1) next # si solo hay un 1 (solo se ve en el anillamto) pasa al siguiente paso, le pongo na.rm=true xq tengo NA's y si no no corre
  78. n2 <- max(which(ch[i,]==1)) # el ultimo 1
  79. ch[i, 1:n2] <- NA # donde hay 1's, es decir, sabemos q esta vivo, damos valor inicial de NA
  80. }
  81.  
  82. for (i in 1: dim(ch)[1]){ # tengo que darle unas iniciales a los NAs si no peta
  83. #if(any(is.na(ch[i,]))==TRUE) { lo quito xq en el calendario esto no lo indica
  84.  
  85. ch[i, is.not[i]: n.occasions] <- NA # le doy NAs a cuando no esta el individ en el estudio
  86. #}
  87. }
  88. return(ch)
  89. }
  90.  
  91.  
  92.  
  93. #### Valores iniciales
  94.  
  95. inits <- function(){list(z=cjs.init.z(CH, is.not), alpha=runif(10,0,1), beta=runif(10,0,1))}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement