I am trying to establish a lognormal distribution using Scipy. I have already done this using Matlab before, but due to the need to extend the application beyond statistical analysis, I am trying to reproduce the set values ββin Scipy.
The following is the Matlab code that I used for my data:
% Read input data (one value per line) x = []; fid = fopen(file_path, 'r'); % reading is default action for fopen disp('Reading network degree data...'); if fid == -1 disp('[ERROR] Unable to open data file.') else while ~feof(fid) [x] = [x fscanf(fid, '%f', [1])]; end c = fclose(fid); if c == 0 disp('File closed successfully.'); else disp('[ERROR] There was a problem with closing the file.'); end end [f,xx] = ecdf(x); y = 1-f; parmhat = lognfit(x); % MLE estimate mu = parmhat(1); sigma = parmhat(2);
And here is the established plot:

Now here is my Python code with the goal of achieving the same:
import math from scipy import stats from statsmodels.distributions.empirical_distribution import ECDF
Here's a fit using Python code.

As you can see, both sets of code are capable of creating good tricks, at least visually.
The problem is that there is a huge difference in the estimated parameters mu and sigma.
From Matlab: mu = 1.62 sigma = 1.29. From Python: mu = 2.78 sigma = 1.74.
Why is there such a difference?
Note. I double checked that both datasets are installed the same way. The same number of points, the same distribution.
Your help is much appreciated! Thanks in advance.
Additional Information:
import scipy import numpy import statsmodels scipy.__version__ '0.9.0' numpy.__version__ '1.6.1' statsmodels.__version__ '0.5.0.dev-1bbd4ca'
Matlab version is R2011b.
Edition:
As shown in the answer below, the error lies with Scipy 0.9. I can reproduce the results of mu and sigma from Matlab using Scipy 11.0.
Easy way to update your Scipy:
pip install
If you don't have pip (you should!):
sudo apt-get install pip