@@ -137,10 +137,14 @@ end
137
137
# Default priors
138
138
_prior (prior:: Prior , y, :: Type{<:UnivariateDistribution} ) = prior
139
139
function _prior (:: DefaultPrior , y, :: Type{Normal} )
140
- return CustomPrior (TDist (3 ), median (y) + mad (y) * TDist (3 ), nothing )
140
+ m = median (y)
141
+ return CustomPrior (TDist (3 ), m + mad (y; center= m, normalize= true ) * TDist (3 ), nothing )
141
142
end
142
143
function _prior (:: DefaultPrior , y, :: Type{TDist} )
143
- return CustomPrior (TDist (3 ), median (y) + mad (y) * TDist (3 ), Gamma (2 , 0.1 ))
144
+ m = median (y)
145
+ return CustomPrior (
146
+ TDist (3 ), m + mad (y; center= m, normalize= true ) * TDist (3 ), Gamma (2 , 0.1 )
147
+ )
144
148
end
145
149
function _prior (:: DefaultPrior , y, :: Type{Bernoulli} )
146
150
return CustomPrior (TDist (3 ), 2.5 * TDist (3 ), nothing )
@@ -174,13 +178,14 @@ function _model(μ_X, σ_X, prior, intercept_ranef, idx, ::Type{Normal})
174
178
σ_X= σ_X,
175
179
prior= prior,
176
180
residual= 1 / std (y),
181
+ mad_y= mad (y; normalize= true ),
177
182
)
178
183
α ~ prior. intercept
179
184
β ~ filldist (prior. predictors, predictors)
180
185
σ ~ Exponential (residual)
181
186
μ = α .+ X * β
182
187
if ! isempty (intercept_ranef)
183
- τ ~ mad (y) * truncated (TDist (3 ); lower= 0 )
188
+ τ ~ mad_y * truncated (TDist (3 ); lower= 0 )
184
189
zⱼ ~ filldist (Normal (), n_gr)
185
190
αⱼ = zⱼ .* τ
186
191
μ .+ = αⱼ[idxs]
@@ -215,14 +220,15 @@ function _model(μ_X, σ_X, prior, intercept_ranef, idx, ::Type{TDist})
215
220
σ_X= σ_X,
216
221
prior= prior,
217
222
residual= 1 / std (y),
223
+ mad_y= mad (y; normalize= true ),
218
224
)
219
225
α ~ prior. intercept
220
226
β ~ filldist (prior. predictors, predictors)
221
227
σ ~ Exponential (residual)
222
228
ν ~ prior. auxiliary
223
229
μ = α .+ X * β
224
230
if ! isempty (intercept_ranef)
225
- τ ~ 0 + mad (y) * truncated (TDist (3 ); lower= 0 )
231
+ τ ~ mad_y * truncated (TDist (3 ); lower= 0 )
226
232
zⱼ ~ filldist (Normal (), n_gr)
227
233
αⱼ = zⱼ .* τ
228
234
μ .+ = αⱼ[idxs]
@@ -257,12 +263,13 @@ function _model(μ_X, σ_X, prior, intercept_ranef, idx, ::Type{Bernoulli})
257
263
μ_X= μ_X,
258
264
σ_X= σ_X,
259
265
prior= prior,
266
+ mad_y= mad (y; normalize= true ),
260
267
)
261
268
α ~ prior. intercept
262
269
β ~ filldist (prior. predictors, predictors)
263
270
μ = α .+ X * β
264
271
if ! isempty (intercept_ranef)
265
- τ ~ mad (y) * truncated (TDist (3 ); lower= 0 )
272
+ τ ~ mad_y * truncated (TDist (3 ); lower= 0 )
266
273
zⱼ ~ filldist (Normal (), n_gr)
267
274
αⱼ = zⱼ .* τ
268
275
μ .+ = αⱼ[idxs]
@@ -295,12 +302,13 @@ function _model(μ_X, σ_X, prior, intercept_ranef, idx, ::Type{Poisson})
295
302
μ_X= μ_X,
296
303
σ_X= σ_X,
297
304
prior= prior,
305
+ mad_y= mad (y; normalize= true ),
298
306
)
299
307
α ~ prior. intercept
300
308
β ~ filldist (prior. predictors, predictors)
301
309
μ = α .+ X * β
302
310
if ! isempty (intercept_ranef)
303
- τ ~ mad (y) * truncated (TDist (3 ); lower= 0 )
311
+ τ ~ mad_y * truncated (TDist (3 ); lower= 0 )
304
312
zⱼ ~ filldist (Normal (), n_gr)
305
313
αⱼ = zⱼ .* τ
306
314
μ .+ = αⱼ[idxs]
@@ -333,14 +341,15 @@ function _model(μ_X, σ_X, prior, intercept_ranef, idx, ::Type{NegativeBinomial
333
341
μ_X= μ_X,
334
342
σ_X= σ_X,
335
343
prior= prior,
344
+ mad_y= mad (y; normalize= true ),
336
345
)
337
346
α ~ prior. intercept
338
347
β ~ filldist (prior. predictors, predictors)
339
348
ϕ⁻ ~ prior. auxiliary
340
349
ϕ = 1 / ϕ⁻
341
350
μ = α .+ X * β
342
351
if ! isempty (intercept_ranef)
343
- τ ~ mad (y) * truncated (TDist (3 ); lower= 0 )
352
+ τ ~ mad_y * truncated (TDist (3 ); lower= 0 )
344
353
zⱼ ~ filldist (Normal (), n_gr)
345
354
αⱼ = zⱼ .* τ
346
355
μ .+ = αⱼ[idxs]
0 commit comments