我正在 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)