首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ETAS模型的stan规划

ETAS模型的stan规划
EN

Stack Overflow用户
提问于 2016-05-04 16:42:19
回答 1查看 500关注 0票数 0

我在斯坦是新来的。我正在研究时间ETAS模型,这是一种用于在地震发生时模拟earthquakes.The烈度的模型。

代码语言:javascript
复制
h(t[i]|p,c,mu)=mu+sum((p-1)*(c^(p-1))*(1/((t[i]-t[1:(i-1)]+c)^(p-1))));

其中t是时间,p,c,mu是三个参数。我用的是Rstan。我为模型编写了以下stan代码:

代码语言:javascript
复制
stan_etas="
data{
  int<lower=0> N;
  real<lower=0> t;
}
parameters{
  real<lower=0> mu;
  real<lower=1.005> p;
  real<lower=0> c;
}

我知道我没有把时间指定为矢量。你能帮我把可能性写在模型部分吗?我正面临着写作强度的问题。我认为,我过去在R中写强度的方式,并不是用斯坦来写的方法。

数据的一小部分(仅包含20次)如下: dat=list(0.0000,310.1907,948.4677,1007.2617,1029.7996,1065.7343,1199.8650,1234.6809,1298.0234,1316.0350,1381.8400,1413.4311,1546.2059,1591.1326,1669.5084,1738.9363,1745.5503,1797.9980,1895.6705,1936.3146)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-04 18:25:09

pow函数目前不对向量或数组进行操作,因此您必须循环来构造强度。此外,我认为您打算将t声明为一个真正的长度N数组,它看起来类似于real<lower=0> t[N];。然后,在模型块中,您将得到如下内容:

代码语言:javascript
复制
y[1] <- pow(c, -(p-1));
for (j in 2:N) {
  y[j] <- mu;
  for (i in 1:(j-1))
    y[j] <- y[j] + (p - 1) * c^(p-1) * 
            1 / (t[j]-t[i]+c)^(p-1);
 }

但是,您最终必须使用increment_log_prob()函数来注册日志可能性。虽然我不熟悉ETAS模型,但ETAS R 套餐的文档声称它涉及一个积分,目前无法在Stan中进行数值逼近。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37033535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档