在 stan 中进行数据增强的概率回归

Posted

技术标签:

【中文标题】在 stan 中进行数据增强的概率回归【英文标题】:Probit regression with data augmentation in stan 【发布时间】:2015-08-05 16:53:24 【问题描述】:

我正在尝试使用 stan 进行数据增强的概率模型。这就是我们有结果y 或 0/1 的地方,它告诉我们潜在变量 ystar 的符号。这是我到目前为止所拥有的,但我不确定如何在model 部分中添加有关y 的信息。有什么想法吗?

data 
  int<lower=0> N; // number of obs
  int<lower=0> K; // number of predictors
  int<lower=0,upper=1> y[N]; // outcomes
  matrix[N, K] x; // predictor variables

parameters 
  vector[K] beta; // beta coefficients
  vector[N] ystar; // latent variable

model 
  vector[N] mu; 
  beta ~ normal(0, 100);
  mu <- x*beta;
  ystar ~ normal(mu, 1);

【问题讨论】:

【参考方案1】:

你可以 data int<lower=0> N; // number of obs int<lower=0> K; // number of predictors vector<lower=-1,upper=1> sign; // y = 0 -> -1, y = 1 -> 1 matrix[N, K] x; // predictor variables parameters vector[K] beta; // beta coefficients vector<lower=0>[N] abs_ystar; // latent variable model beta ~ normal(0, 100); // ignore the warning about a Jacobian from the parser sign .* abs_ystar ~ normal(x * beta, 1);

也就是说,没有理由在 Stan 中为二元概率模型进行数据增强,除非某些结果丢失或其他原因。这样做更直接(并将参数空间减少到 K 而不是 K + N) data int<lower=0> N; // number of obs int<lower=0> K; // number of predictors int<lower=0,upper=1> y[N]; // outcomes matrix[N, K] x; // predictor variables parameters vector[K] beta; // beta coefficients model vector[N] mu; beta ~ normal(0, 100); mu <- x*beta; for (n in 1:N) mu[n] <- Phi(mu[n]); y ~ bernoulli(mu); 如果您真的关心潜在实用程序,您可以通过generated quantities 块中的拒绝采样来生成它,就像这样 generated quantities vector[N] ystar; vector[N] mu; mu <- x * beta; for (n in 1:N) real draw; draw <- not_a_number(); if (sign[n] == 1) while(!(draw > 0)) draw <- normal_rng(mu[n], 1); else while(!(draw < 0)) draw <- normal_rng(mu[n], 1); ystar[n] <- draw;

【讨论】:

谢谢,这就是我想要的。如果可能,减少参数空间是有意义的。不过,我对潜在效用很感兴趣。我将如何使用generated quantities 计算?看来我必须生成一个类似于您建议的第一个模型的模型,此时我将返回对 K+N 进行采样。是这样吗,还是有更有效的方法来做到这一点? 你在generated quantities中定义的东西不影响采样,所以只是一个小存储问题。 @BenGoodrich 嗨 Ben,draw &lt;- not_a_number(); 和 while 循环在生成数量中的含义是什么?我们不能简单地使用ystar[n]&lt;-normal_rng(mu[n],1)吗?

以上是关于在 stan 中进行数据增强的概率回归的主要内容,如果未能解决你的问题,请参考以下文章

使用python在高斯过程回归中训练数据集的数据增强

Stata中的治疗效果:RA:回归调整 IPW:逆概率加权 IPWRA AIPW|附代码数据

在生产中实现梯度增强回归树 - 以数学方式描述学习模型

DL中图像数据增强

图像增强

增强学习贪心算法与Softmax算法