Хотя я не видел проблемы +
при просмотре вашего кода, вы неправильно моделируете наблюдаемые данные, и внутри вашей функции был объект p
, которому не был передан аргумент. Вы создали логитный линейный предиктор для psi
, используя alpha.psi
и beta.psi
, однако вам не хватает логитного линейного предиктора для вероятности обнаружения вида, если он существует с использованием alpha.p
и beta.p
. Предполагая, что ковариат X
используется как для скрытого состояния занятости, так и для модели наблюдения, код должен стать.
data.fn <- function(R = 39, T = 14, xmin= 0, xmax= 1, alpha.psi = 0.4567,
beta.psi = 0.0338, alpha.p = 0.4, beta.p = 0.4) {
y <- array(dim = c(R,T)) #This creates an array for counts
#Ecological Process
#Covariate values
X <- sort(runif(n=R, min = xmin, max = xmax))
#Expected occurence-covariate relationship
psi <- plogis(alpha.psi + beta.psi *X) #this applies the inverse logit
#Add Bernoulli Noise - drawing indicator of occurence (z) from bernoulli psi
z<- rbinom(n = R, size = 1, prob = psi)
occ.fs <- sum(z) #"Finite Sample Occupancy"
# Linear predictor for detection,
# assuming the same covariate is used for detection
p.eff <- plogis(alpha.p + beta.p * X)
for (i in 1:T) {
y[,i] <- rbinom(n=R, size = 1, prob = p.eff * z)
}
return(list(y = y, z = z, X = X, occ.fs = occ.fs))
}
В этом коде предполагается, что вы передаете параметры логит-масштаба в данные, поэтому, если вы пытаетесь смоделировать данные таким образом, чтобы X
оказал очень незначительное и положительное влияние на занятость, то вы, так сказать, не участвуете в гонках. , Если вы ищете более выраженный эффект, чем вы должны увеличить размер эффекта. Наконец, 39 сайтов - это очень мало для анализа занятости, учитывая, что двоичные данные обнаружения / отсутствия обнаружения весьма бедны информацией. Не удивляйтесь, если ваши апостериорные оценки, полученные при анализе набора данных, на самом деле не возвращают параметры, использованные для моделирования данных.