def test_lognormal(rnd, mu, sigma, loc): #lognormal random variate generator lognormal_dist = RVGs.LogNormal(mu=mu, sigma=sigma, loc=loc) # obtain samples samples = get_samples(lognormal_dist, rnd) # report mean and variance print_test_results('LogNormal', samples, expectation=np.exp(mu + 0.5 * sigma**2) + loc, variance=(np.exp(sigma**2) - 1.0) * np.exp(2 * mu + sigma**2))
def test_fitting_lognormal(): print("\nTesting LogNormal with mu=0.2, sigma=0.1, loc=1") dist = RVGs.LogNormal(mu=0.2, sigma=0.1, loc=1) print(' percentile interval: ', dist.get_percentile_interval(alpha=0.05)) data = np.array(get_samples(dist, np.random)) dict_mm_results = RVGs.LogNormal.fit_mm(mean=np.average(data), st_dev=np.std(data), fixed_location=1) dict_ml_results = RVGs.LogNormal.fit_ml(data=data, fixed_location=1) print(" Fit:") print(" MM:", dict_mm_results) print(" ML:", dict_ml_results) # plot the fitted distributions Plot.plot_lognormal_fit(data=data, fit_results=dict_mm_results, title='Method of Moment') Plot.plot_lognormal_fit(data=data, fit_results=dict_mm_results, title='Maximum Likelihood')