首页 > 解决方案 > 敏感性分析:如何生成多个数据集并对每个数据集进行贝叶斯回归分析?

问题描述

这是我的原始模型。

  library(rjags)
  library(R2jags)
  cat("model{
for(i in 1 :N){
y[i] ~ dnorm(theta[i],tau)
theta[i] <- beta[1] + beta[2]*x1[i] + beta[3]*x2[i]
}
for(j in 1:3){
beta[j] ~ dnorm(0,0.001)}
sigma ~ dgamma(0.001,0.001)
tau <- pow(sigma,-2)
    }",file="m1.txt")

set.seed(123)
dd <- data.frame(y=rnorm(20,0,1),
            v=sample(seq(0, 50, by=5),size=20,replace = T),
            m=sample(seq(2,48,by=3),size=20,replace = T))
d <- with(dd,list(N=length(y),y=y,x1=v,x2=m))

 model1 <- jags(data=d,inits=NULL,
               parameters.to.save=c("beta","tau"),
               n.chains=3,n.iter=10000,n.burnin=5000,n.thin=10,
               model.file="m1.txt")

我正在尝试使用上面的回归模型进行敏感性分析。我有两个自变量 v 和 m。

其中 v 取值介于 0 和 50 之间,m 取值介于 2 和 48 之间

我想生成单位增量为 v 和 m 的新数据集,这样:

数据集 1:我设置 v =0 和 m=2

数据集 2:v = 1 和 m= 2

. . .

. . .

. . .

数据集 51:v =51 和 m=2

数据集 52:v=0 和 m=3

数据集 53:v = 1 和 m= 3

. . .

. . .

. . .

数据集 102:v =51 和 m=3

. . .

. . .

. . .

数据集 153:v =0 和 m=4

. . .

. . .

. . .

数据集 2448:v =51 和 m=48 注意:数据集每个应该有 20 行,y 应该是一个随机数。

然后,我将使用 2000 plus 数据集和 beta[s] 的系数来预测 ys,因此对于每个数据集,我应该预测 20 个 y 值。我有一个 y 的基准值。因此,在每个预测值中,我将绘制符合 v 和 m 值的每个组合的基准值的 y 的数量。

请问我如何将上述内容合并到我的原始模型中?

标签: rregressionlapplybayesianrjags

解决方案


这是创建具有 m 和 v 的所有可能组合的数据帧的方法:

library(tidyverse)

data_frames <-
  expand_grid(
  v = seq(0, 50, by = 5),
  m = seq(2, 48, by = 3)
) %>%
  mutate(
    data = v %>% map2(m, ~ {
      data.frame(
        y = rnorm(20, 0, 1),
        v = .x,
        m = .y
      )
    })
  )
data_frames
#> # A tibble: 176 x 3
#>        v     m data         
#>    <dbl> <dbl> <list>       
#>  1     0     2 <df [20 × 3]>
#>  2     0     5 <df [20 × 3]>
#>  3     0     8 <df [20 × 3]>
#>  4     0    11 <df [20 × 3]>
#>  5     0    14 <df [20 × 3]>
#>  6     0    17 <df [20 × 3]>
#>  7     0    20 <df [20 × 3]>
#>  8     0    23 <df [20 × 3]>
#>  9     0    26 <df [20 × 3]>
#> 10     0    29 <df [20 × 3]>
#> # … with 166 more rows
data_frames$data[[1]]
#>              y v m
#> 1   0.04844153 0 2
#> 2  -0.39136686 0 2
#> 3  -1.20848091 0 2
#> 4  -0.52041488 0 2
#> 5  -1.97372954 0 2
#> 6  -0.49918332 0 2
#> 7  -0.65153827 0 2
#> 8   0.61465528 0 2
#> 9  -0.63446048 0 2
#> 10  1.67354439 0 2
#> 11  0.31279567 0 2
#> 12  0.10422302 0 2
#> 13  0.14853823 0 2
#> 14 -0.60451679 0 2
#> 15  1.79470355 0 2
#> 16  0.39043583 0 2
#> 17 -0.12879205 0 2
#> 18 -0.26973252 0 2
#> 19 -2.32701504 0 2
#> 20 -0.84522199 0 2

reprex 包于 2021-09-09 创建(v2.0.1)


推荐阅读