Hello, I am very new to Stan so I hope this question is appropriate for this forum.
Main Question: How might I adjust the model below to capture the data I’ve generated?
I have a repeated measures problem whereby each discrete level between 1:15 has 100 repeated measurements. I’m hoping to do a simple regression except the noise on each level is log-normally distributed. The data is generated with code below and is plotted:
x <- rep(1:15, each=100)
y <- 1 + 2*x + rlnorm(length(x),mean=0,sd=1)
plot(x, y)
Things I’ve Tried
- I have tried the following snippet but I don’t believe this captures the log-normally distributed noise (which I believe would show up in the sampling of the intercept – that is, \alpha \sim \text{lognormal} or perhaps \sigma \sim \text{lognormal})
data {
int<lower=0> N; // Number of observations
int<lower=0> K;
matrix[N, K] X; // Predictor matrix
vector[N] y; // Response variable
}
parameters {
real alpha;
vector[K] beta; // Coefficients
real<lower=0> sigma; // Standard deviation of the normal distribution
}
model {
// Linear predictor
vector[N] mu;
mu = alpha + X * beta;
// Likelihood
y ~ lognormal(mu, sigma);
}
Running the model looked something like this:
test_data <- data.frame(x, y)
data <- list(
N = nrow(test_data),
K = ncol(test_data) - 1,
X = as.matrix(test_data[,1]), # Predictor variables
y = test_data$y # Response variable
)
stan_model <- stan_model(model_code = stan_model_code)
# Fit the model
fit <- sampling(stan_model, data = data, iter = 5000, chains = 4)
- Adding a lognormal prior on \alpha but this had major sampling issues with many divergences.
- Treating the 15 separate levels as random effects using (
stan_lmer
) but this didn’t seem to fit well for me either.
Final Thoughts
- I know this is quite a simple modeling question but it would help me learn to understand how to adjust this model and keep learning beyond this.
- I’m imagining many parallel lines that are along the general trend of the data but the distance between the lines for log-normally distributed.
Thanks for any insights! Glad to be part of the group (this is my first post).