cdt15 / lingam

Python package for causal discovery based on LiNGAM.
https://sites.google.com/view/sshimizu06/lingam
MIT License
356 stars 54 forks source link

In VARLiNGAM, different behavior with the same data #131

Open kitahara-neut opened 4 months ago

kitahara-neut commented 4 months ago

I ran the following code and an error occurred:

rng = np.random.default_rng(seed=0)
x = rng.random(size=80)
y = 10 * x
df_x_y = pd.DataFrame({'x': x, 'y': y})
lingam.VARLiNGAM(random_state=0).fit(df_x_y)

However, no error occurred when I ran the following code:

df_y_x = pd.DataFrame({'y': y, 'x': x})
lingam.VARLiNGAM(random_state=0).fit(df_y_x)

The results were different even though the data seemed to be the same.

I think this is a bug, but please check it.

ikeuchi-screen commented 4 months ago

Hi @kitahara-neut, Thanks for your report. Please let me know what kind of error you get.

kitahara-neut commented 4 months ago

Hi @ikeuchi-screen, I got the following error:

numpy.linalg.LinAlgError: 2-th leading minor of the array is not positive definite
haraoka-screen commented 3 months ago

The API that raises the exception is statsmodels.tsa.vector_ar.var_model.VAR. The behavior depends on its implementation.

kitahara-neut commented 3 months ago

Hi @haraoka-screen, Thank you for your survey.

While I understand that the cause is not due to lingam, I think that the different behavior with the same data is a problem.

In this case, is it okay to trust the results obtained without any errors?

Or, is it expected that errors should occur with the above data?