这里有新的stan用户。这个特定的模型(基本上是一个混合效应逻辑回归)有时会运行,但通常会得到错误“以下变量有未定义的值:log_lik [182]”等。“dev”或“log_lik”值始终存在问题。它被捕获的索引有时是在区域之间的过渡,但也在某些运行中的随机位置。
stan model:
Year Area.ID DayIndex S n Area1 Area2 Area3
1 1 1 19 1 1 1 0 0
2 1 1 22 0 2 1 0 0
3 1 1 23 2 5 1 0 0
4 1 1 24 1 3 1 0 0
5 1 1 26 3 3 1 0 0
6 1 1 28 1 3 1 0 0
数据看起来像这样(数据帧“SDF”):
Dlist <- list ("nObs"=dim(SDF)[1], "S"=SDF$S, "n"=SDF$n,
"Area2"= SDF$Area2,"Area3"= SDF$Area3, "Julian_Day"=SDF$DayIndex,
"Year"=SDF$Year,"nYears"=length(unique(SDF$Year)))
# Fit intercept model using stan
fit_ints <- stan(file='STAN/Logistic_Diff_Slope_SN.stan',data = Dlist, iter=5000, chains=3)
这些调用用于R:
{{1}}
答案 0 :(得分:0)
当某些生成的数量计算为NaN
时,会出现此错误消息,通常是由于数字下溢或溢出。
在您的情况下,您可以通过使用数字更稳定的binomial_logit_log
函数而不是binomial_log
函数来避免它(出于与binomial_logit
model
中使用binomial
相同的原因1}}阻止而不是
log_lik[i] <- binomial_logit_log( S[i] , n[i] , y[i]);
)。换句话说,它应该是
log_lik[i] <- binomial_log( S[i] , n[i] , inv_logit(y[i]));
而不是
p <- inv_logit(y[i]);
if (is_nan(p)) y_pred[i] <- y[i] > 0;
else if (p >= 1) y_pred[i] <- 1;
else if (p <= 0) y_pred[i] <- 0;
else y_pred[i] <- binomial_rng(100, inv_logit(y[i]));
另外,当从后验预测分布中绘制时,你可以做类似的事情
binomial_logit_rng
不幸的是,目前斯坦没有o = {};
o.map = function() {
//log10(likes+comments) / elapsed hours from the post creation
emit(Math.log(this.likes + this.comments + 1) / Math.LN10 / Math.abs((now - this.createdAt) / 6e7 + 1), this);
};
o.reduce = function(key, values) {
//sort the values, when they have the same score
values.sort(function(a, b) {
a.createdAt - b.createdAt;
});
//serialize the values, because mongoose does not support multiple returned values
return JSON.stringify(values);
};
o.scope = {now: new Date()};
o.limit = 15;
Posts.mapReduce(o, function(err, results) {
if (err) return console.log(err);
console.log(results);
});
功能。