Suppose there is a random variable with Lomax (Pareto Type II) probability density
$$ P(x; c) = \frac{c}{(1 + x )^{c + 1}}, \quad x \ge 0, c > 0. $$
Let's draw n_samples=30000 samples of length sample_len=500 and compute mean in each sample. For a distribution with finite mean and variance, a distribution of sample means should be close to normal due to a central limit theorem. But for Lomax with $c \le 2$ variance is not finite, and sample means distribution is not normal (see a plot below):
Are there any likelihoods that can be used to model such distribution of central means?
Looks like an inverse-gamma model can provide a decent fit (see the plot), but is there any theoretical justification for this? I've seen there is a generalized central limit theorem that applies to a sum of Pareto random variables, but have not seen any simple closed-form expressions for a limiting distribution.
Thanks!
Code to reproduce the plot:
import numpy as np
import scipy.stats as stats
import plotly.graph_objects as go
np.random.seed(7)
c = 1.7
sample_len = 500
n_samples = 30000
exact_dist = stats.lomax(c=c)
samp = exact_dist.rvs(size=(n_samples, sample_len))
means = np.array([x.mean() for x in samp])
clt_like_mean = samp.mean()
clt_like_stdev = means.std()
invgamma_alpha = (means.mean()**2 / means.std()**2 + 2)
invgamma_beta = means.mean() * (means.mean()**2 / means.std()**2 + 1)
#arbitrary corrections for better fit
invgamma_beta = invgamma_beta / 2
invgamma_loc = 0.7
x = np.linspace(0.001, 30, 10000)
fig = go.Figure()
fig.add_trace(go.Scatter(x=x, y=exact_dist.pdf(x),
mode='lines', line_dash='dash', name='Original Distribution'))
fig.add_vline(exact_dist.mean(), name='Original Distribution Mean')
fig.add_trace(go.Histogram(x=means, histnorm='probability density', name='Sample Means'))
fig.add_trace(go.Scatter(x=x, y=stats.norm.pdf(x, loc=clt_like_mean, scale=clt_like_stdev),
mode='lines', name='CLT-like Normal'))
fig.add_trace(go.Scatter(x=x, y=stats.invgamma.pdf(x, a=invgamma_alpha, loc=invgamma_loc, scale=invgamma_beta),
mode='lines', name='InvGamma'))
fig.update_layout(title='Sample Means Distribution',
xaxis_title='x',
yaxis_title='Prob Density',
hovermode="x",
height=550)
fig.update_layout(xaxis_range=[0, 5])
fig.show()