1

我正在 stan(使用 rstan)中制作多级逻辑回归模型以适应大型数据集。我的数据集是一个 2000 x 100100 矩阵,包含 2000 个个体基因组 (SNP) 中 100100 个位置的模拟测序数据。该模型的目标是估计每个 SNP 对结果变量 0 或 1(健康或生病)的影响。

我想估计 100100 个斜率,每个 SNP 一个。我在 STAN 中编写了以下模型,我能够适应 2000 x 101 的裁剪数据集,Rhat = 1 和非常高的 n_eff 值。

data{
  int<lower=1> N; // Rows
  int<lower=1> M; // Columns

  int<lower=0, upper=1> y[N]; // Outcome variable
  matrix[N, M] x; // Predictor variable
}

parameters{
  // Hyper priors
  real mu;
  real<lower=0> sigma;

  // Priors
  real a;
  vector[M] b;
}

model{
  // Hyper-priors
  mu ~ normal(0, 10);
  sigma ~ cauchy(0, 10);

  // Priors
  a ~ normal( 0 , 10 );
  b ~ normal(mu, sigma);

  // Likelihood
  y ~ bernoulli_logit(a + x * b);
}

当我尝试使用 rstan 函数 sampling() 将模型拟合到大型数据集时,R 没有响应。模型的编译工作正常。你知道我做错了什么吗?

R 代码如下所示:

model <- stan_model("mult_predictor.stan")
fit <- sampling(model, list(N=2000, 
                            M=100100, 
                            y=y, 
                            x=x),
                iter=2000, chains=4)

4

0 回答 0