Hi,
I’m trying to use the generated quantities block to recapture original parameters from a model I fit with standardized parameters. Everything works fine when I comment out the first two lines of the generated quantities block. It’s a simple example, but I can’t seem to figure out what I’m doing wrong.
Here’s a simplified model:
data {
// Dimensions
int<lower=0> N;
// Variables
vector[N] fert;
vector[N] y;
}
transformed data {
// Define standardized variables
vector[N] fert_std;
// Standardize variables
fert_std = (fert - mean(fert)) / (2*sd(fert));
}
parameters {
// Define standardized parameters
real alpha_std;
real beta_std;
real<lower=0> sigma_std;
}
model {
alpha_std ~ normal(0,10);
beta_std ~ normal(0,10);
sigma_std ~ cauchy(0,5);
y ~ lognormal(fert_std*beta_std + alpha_std,sigma_std);
}
generated quantities {
// Generate natural parameter
real beta_fert;
beta_fert = beta_std * sd(y) / sd(fert);
// Predict data
vector[N] y_tilde;
for (n in 1:N)
y_tilde[n] = lognormal_rng(fert_std[n]*beta_std + alpha_std,sigma_std);
}
Sample data are:
$N
19
$fert
c(36.9, 45.6, 25.6, 6.7, 49.5, 2.3, 26.9, 43.2, 63.9, 35.9, 25.2, 62.0, 40.5, 36.6, 12.4, 19.8, 33.9, 5.2, 7.6)
$y
c(3380.783, 1836.104, 2052.786, 1542.258, 2091.062, 1325.479, 1817.238, 1996.406, 2347.418, 4793.289, 1876.380, 1245.219, 3692.308, 1717.033, 2032.520, 2125.850, 2383.790, 1328.904, 6403.415)
Thank you!
-Steve