0

我正在使用 rstanarm 包中的贝叶斯逻辑回归(概率)来训练默认事件的模型。作为输入,模型接受一些财务比率和一些定性数据。有没有一种方法可以让我真正正则化系数,仅针对定性数据,始终为正?

例如,当我对所有内容使用单个先验时,我会得到这些结果(我使用 MCMC 校准模型,使用set.seed(12345)):

prior <- rstanarm::normal(location = 0, scale = NULL, autoscale = TRUE)

model.formula <-
  formula(paste0('default_events ~ fin_ratio_1 + ',
                 'fin_ratio_2 + fin_ratio_3 +',
                 'fin_ratio_4 + fin_ratio_5 +',
                 'fin_ratio_6 + fin_ratio_7 +',
                 'fin_ratio_8 + Qual_1 + Qual_2 +',
                 'Qual_3 + Qual_4'))

bayesian.model <- rstanarm::stan_glm(model.formula,
                                     family = binomial(link = "probit"),
                                     data = as.data.frame(ds), prior = prior,
                                     prior_intercept = NULL,
                                     init_r = .1, iter=600, warmup=200)

系数如下:

summary(bayesian.model)

Estimates:
               mean    sd      2.5%    25%     50%     75%     97.5%
(Intercept)    -2.0     0.4    -2.7    -2.3    -2.0    -1.7    -1.3
fin_ratio_1    -0.7     0.1    -0.9    -0.8    -0.7    -0.6    -0.4
fin_ratio_2    -0.3     0.1    -0.5    -0.4    -0.3    -0.2    -0.1
fin_ratio_3     0.4     0.1     0.2     0.4     0.4     0.5     0.6
fin_ratio_4     0.3     0.1     0.1     0.2     0.3     0.3     0.4
fin_ratio_5     0.2     0.1     0.1     0.2     0.2     0.3     0.4
fin_ratio_6    -0.2     0.1    -0.4    -0.2    -0.2    -0.1     0.0
fin_ratio_7    -0.3     0.1    -0.5    -0.3    -0.3    -0.2    -0.1
fin_ratio_8    -0.2     0.1    -0.5    -0.3    -0.2    -0.1     0.0
Qual_1         -0.2     0.1    -0.3    -0.2    -0.2    -0.1    -0.1
Qual_2          0.0     0.1    -0.1    -0.1     0.0     0.0     0.1
Qual_3          0.2     0.0     0.1     0.1     0.2     0.2     0.3
Qual_4          0.0     0.2    -0.3    -0.1     0.0     0.1     0.3

问题是,我可以使用两种不同的分布吗?就像fin_ratio_x变量使用正态变量和Qual_x变量使用指数或狄利克雷一样?

4

1 回答 1

1

rstanarm包提供的模型既不能使用不同的先验族,也不能对系数进行不平等限制。使用brms包或编写您自己的 Stan 程序很容易实现其中一个或两个。

于 2019-07-27T04:34:50.837 回答