1

現在、この問題が発生しています。2Dの正方形があり、その中に一連のポイント、たとえば1000ポイントがあります。正方形内の点の分布が広がっている(またはほぼ均一に分布している)か、正方形内のあるスポット領域に集まる傾向があるかを確認する方法が必要です。

これを決定するには、数学的/統計的(プログラミングではない)方法が必要です。私はグーグルで、適合度、コルモゴロフのようなものを見つけました...そしてこれを達成するための他のアプローチがあるかどうかだけ疑問に思います。クラスペーパーにこれが必要です。

つまり、入力:2Dの正方形、および1000ポイント。出力:はい/いいえ(はい=均等に分散し、いいえ=いくつかの場所に集まっています)。

任意のアイデアをいただければ幸いです。ありがとう

4

1 に答える 1

2

ポイントが独立している場合は、各次元の分布を個別に確認できます。Kolmogorov-Smirnov検定 (2 つの分布間の距離の尺度) は、これに対する適切な検定です。最初に、いくつかのガウス分布のポイントを生成してプロットして、KS 検定 (統計) を使用して不均一な分布を検出する方法を確認します。

>>> import numpy as np
>>> from matplotlib.pyplot import plt
>>> X = np.random.gauss(1000, 2)  # 1000 2-D points, normally distributed
>>> from sklearn.preprocessing import MinMaxScaler
>>> scaler = MinMaxScaler()
>>> X = scaler.fit_transform(X)  # fit to default uniform dist range 0-1
>>> X
array([[ 0.46169481,  0.7444449 ],
       [ 0.49408692,  0.5809512 ],
       ..., 
       [ 0.60877526,  0.59758908]])
>>> plt.scatter(*list(X))

2D ガウス散布図

>>> from scipy import stats
>>> from sklearn.preprocessing import StandardScaler, MinMaxScaler
>>> stats.kstest(MinMaxScaler().fit_transform(X[:,0]), 'uniform')
KstestResult(statistic=0.24738043186386116, pvalue=0.0)

低い p 値と高い KS 統計量 (一様分布からの距離) は、ほぼ確実に 0 と 1 の間の一様分布に由来しないことを示しています。

>>> stats.kstest(StandardScaler().fit_transform(X[:,0]), 'norm')
KstestResult(statistic=0.028970945967462303, pvalue=0.36613946547024456)

しかし、p 値が高く、KS 距離が低いため、それらはおそらく平均 0 と標準偏差 1 の正規分布に由来します。

次に、2 番目の次元 (Y) に対して KS-Tests を繰り返すだけです。

于 2017-05-01T22:42:49.793 に答える