次の3つのデータセットがあります。
data_a=[0.21,0.24,0.36,0.56,0.67,0.72,0.74,0.83,0.84,0.87,0.91,0.94,0.97]
data_b=[0.13,0.21,0.27,0.34,0.36,0.45,0.49,0.65,0.66,0.90]
data_c=[0.14,0.18,0.19,0.33,0.45,0.47,0.55,0.75,0.78,0.82]
data_aは実際のデータで、他の2つはシミュレーションされたデータです。ここでは、data_bまたはdata_cのいずれがdata_aに最も近いか、または似ているかを確認しようとしています。現在、私は視覚的にks_2sampテスト(python)でそれを行っています。
視覚的に
実際のデータの累積分布関数とシミュレーションデータの累積分布関数をグラフにして、どれが最も近いかを視覚的に確認しようとしました。
上記はdata_aのcdfとdata_cのcdfです。
したがって、それを視覚的に見ると、data_cはdata_aよりdata_aに近いと言えますが、それでも正確ではありません。
KSテスト
2番目の方法はKSテストで、data_aをdata_bで、data_aをdata_cでテストしました。
>>> stats.ks_2samp(data_a,data_b)
Ks_2sampResult(statistic=0.5923076923076923, pvalue=0.02134674813035231)
>>> stats.ks_2samp(data_a,data_c)
Ks_2sampResult(statistic=0.4692307692307692, pvalue=0.11575018162481227)
上記から、data_aをdata_cでテストした場合、統計値が低いことがわかります。したがって、data_cはdata_bよりもdata_aに近いはずです。仮説検定として考えるのは適切でなく、得られたp値を使用するのは適切ではないので、p値を考慮しませんでした。この検定は、帰無仮説が事前に決定されて設計されているためです。
だから私のここでの質問は、私がこれを正しくやっているのなら、それを行う他のより良い方法があるのかということです??? ありがとうございました
x_points=np.asarray(list(range(0,len(data_a)))) >>> x_points=x_points/len(data_a) >>> plt.plot(x_points,data_a) >>> x_points=np.asarray(list(range(0,len(data_b)))) >>> x_points=np.asarray(list(range(0,len(data_c)))) >>> x_points=x_points/len(data_c) >>> plt.plot(x_points,data_c)
これがコードです。しかし、私の質問は、2つのデータセットの間の近さをどのように見つけることができるかです