# Calculating median or geometric mean from the posterior samples of a lognormal model

How to calculate y variable median or geometric mean from the posterior samples of a lognormal model? I’ll provide a simple example.

Data

``````set.seed(0)
pi <- 0
mu_log <- 2
sigma_log <- 0.99
N = 1000
y = (1 - rbinom(N, 1, prob = pi)) * rlnorm(N, mu_log, sigma_log)
df = data.frame(y=y)
``````

Distribution of y variable

Crude geometric mean was calculated as follows: exp(mean(log(df\$y)))

Model

``````    m = brm(y ~ 1, data = df, family = lognormal)
``````

Automatic posterior transformation functions
Seem to be based on arithmetic mean, which is not suitable for reporting with such distribution (being almost two times higher compared to the median, therefore biasing the “reality” or actual life (more dependent on extreme values))

``````    fitted(m)
posterior_epred(m)
``````

Estimate = 11.87025
Estimate = 11.87025

Posterior samples

``````    posterior_samples(m)
``````

Transforming posterior samples values manually
I am not sure if this is correct. I have seen that some times exponentiation gives median and sometimes geometric mean.

``````    posterior_samples(m) %>%
mutate(transformed = exp(b_Intercept)) %>%
posterior_summary() %>% as.data.frame()
``````

QUESTION
Is the underlined value the median or geometric mean of y, or something else? If something else, how can I calculate a median and/or a geometric mean?

``````Gmedian::Gmedian(exp(as.data.frame(m)\$b_Intercept))
``````
1 Like