Use a line or lines with independent normal errors to model a main effect or interaction. Typically used with time.
Arguments
- s
Scale for the prior for the errors. Default is
1
. Can be0
.- mean_slope
Mean in prior for slope of line. Default is 0.
- sd_slope
Standard deviation in prior for slope of line. Default is 1.
- along
Name of the variable to be used as the 'along' variable. Only used with interactions.
- zero_sum
If
TRUE
, values must sum to 0 within each combination of the 'by' variables. Default isFALSE
.
Details
If Lin()
is used with an interaction,
then separate lines are constructed along
the 'along' variable, within each combination
of the 'by' variables.
Argument s
controls the size of the errors.
Smaller values tend to give smoother estimates.
s
can be zero.
Argument sd_slope
controls the size of the slopes of
the lines. Larger values can give more steeply
sloped lines.
Mathematical details
When Lin()
is used with a main effect,
$$\beta_j = \alpha + j \eta + \epsilon_j$$ $$\alpha \sim \text{N}(0, 1)$$ $$\epsilon_j \sim \text{N}(0, \tau^2),$$
and when it is used with an interaction,
$$\beta_{u,v} \sim \alpha_u + v \eta_u + \epsilon_{u,v}$$ $$\alpha_u \sim \text{N}(0, 1)$$ $$\epsilon_{u,v} \sim \text{N}(0, \tau^2),$$
where
\(\pmb{\beta}\) is the main effect or interaction;
\(j\) denotes position within the main effect;
\(v\) denotes position within the 'along' variable of the interaction; and
\(u\) denotes position within the 'by' variable(s) of the interaction.
The slopes have priors $$\eta \sim \text{N}(\text{mean_slope}, \text{sd_slope}^2)$$ and $$\eta_u \sim \text{N}(\text{mean_slope}, \text{sd_slope}^2).$$
Parameter \(\tau\) has a half-normal prior $$\tau \sim \text{N}^+(0, \text{s}^2).$$
See also
Lin_AR()
Linear with AR errorsLin_AR1()
Linear with AR1 errorsRW2()
Second-order random walkpriors Overview of priors implemented in bage
set_prior()
Specify prior for intercept, main effect, or interaction
Examples
Lin()
#> Lin()
#> s: 1
#> mean_slope: 0
#> sd_slope: 1
#> along: NULL
#> zero_sum: FALSE
Lin(s = 0.5, sd_slope = 2)
#> Lin(s=0.5,sd_slope=2)
#> s: 0.5
#> mean_slope: 0
#> sd_slope: 2
#> along: NULL
#> zero_sum: FALSE
Lin(s = 0)
#> Lin(s=0)
#> s: 0
#> mean_slope: 0
#> sd_slope: 1
#> along: NULL
#> zero_sum: FALSE
Lin(along = "cohort")
#> Lin(along="cohort")
#> s: 1
#> mean_slope: 0
#> sd_slope: 1
#> along: cohort
#> zero_sum: FALSE