Tôi có ba bộ dữ liệu sau đây.
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 là dữ liệu thực và hai dữ liệu còn lại là dữ liệu mô phỏng. Ở đây tôi đang cố gắng kiểm tra xem cái nào (data_b hoặc data_c) gần nhất hoặc gần giống với data_a. Hiện tại tôi đang thực hiện nó một cách trực quan và với bài kiểm tra ks_2samp (python).
Trực quan
Tôi đã vẽ đồ thị của cdf dữ liệu thực so với cdf của dữ liệu mô phỏng và thử xem trực quan cái nào gần nhất.
Trên đây là cdf của data_a so với cdf của data_b
Trên đây là cdf của data_a so với cdf của data_c
Vì vậy, bằng cách nhìn trực quan, người ta có thể nói rằng data_c gần với data_a hơn data_b nhưng nó vẫn không chính xác.
Kiểm tra KS
Phương pháp thứ hai là kiểm tra KS nơi tôi đã kiểm tra data_a với data_b cũng như data_a với 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)
Từ trên chúng ta có thể thấy rằng số liệu thống kê thấp hơn khi chúng tôi kiểm tra data_a với data_c vì vậy data_c nên gần data_a hơn data_b. Tôi đã không xem xét giá trị vì sẽ không phù hợp khi nghĩ về nó như một thử nghiệm giả thuyết và sử dụng giá trị p thu được vì thử nghiệm được thiết kế với giả thuyết null được xác định trước.
Vì vậy, câu hỏi của tôi ở đây là nếu tôi đang làm điều này một cách chính xác và cũng có cách nào khác tốt hơn để làm điều đó ??? Cảm ơn bạn
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)
Đây là mã. Nhưng câu hỏi của tôi là làm thế nào người ta có thể tìm thấy sự gần gũi giữa hai bộ dữ liệu