Thực hiện bài kiểm tra Kolmogorov-Smirnov [một mẫu hoặc hai mẫu] để phù hợp.
Thử nghiệm một mẫu so sánh phân phối cơ bản f [x] của một mẫu so với phân phối g [x] nhất định. Thử nghiệm hai mẫu so sánh các phân phối cơ bản của hai mẫu độc lập. Cả hai bài kiểm tra chỉ có giá trị cho phân phối liên tục.
Tham sốRVSSTR, mảng_Lhe hoặc có thể gọi đượcrvsstr, array_like, or callableNếu một mảng, nó phải là một loạt các quan sát 1-D của các biến ngẫu nhiên. Nếu một người có thể gọi, nó phải là một hàm để tạo các biến ngẫu nhiên; Nó được yêu cầu để có một kích thước đối số từ khóa. Nếu một chuỗi, nó phải là tên của một phân phối trong scipy.stats
, sẽ được sử dụng để tạo các biến ngẫu nhiên.
Nếu Array_like, đó phải là một loạt các quan sát 1-D của các biến ngẫu nhiên và thử nghiệm hai mẫu được thực hiện [và RV phải là Array_Like]. Nếu một người có thể gọi, đó có thể gọi được được sử dụng để tính toán CDF. Nếu một chuỗi, nó phải là tên của một phân phối trong scipy.stats
, sẽ được sử dụng làm hàm CDF.
Các tham số phân phối, được sử dụng nếu RV hoặc CDF là chuỗi hoặc ứng dụng gọi.
Nint, tùy chọnint, optionalKích thước mẫu nếu RV là chuỗi hoặc có thể gọi được. Mặc định là 20.
thay thế {‘hai mặt,’ Ít hơn, ’lớn hơn}, tùy chọn{‘two-sided’, ‘less’, ‘greater’}, optionalXác định các giả thuyết null và thay thế. Mặc định là ‘hai mặt. Vui lòng xem giải thích trong các ghi chú dưới đây.
Phương thức {’auto,’ chính xác, ‘xấp xỉ,‘ asymp,}, tùy chọn{‘auto’, ‘exact’, ‘approx’, ‘asymp’}, optionalXác định phân phối được sử dụng để tính toán giá trị p. Các tùy chọn sau có sẵn [mặc định là ‘Auto,]:
ReturnSstatisticFloatstatisticfloat
‘Tự động: Chọn một trong các tùy chọn khác.
Chính xác, sử dụng phân phối chính xác của thống kê kiểm tra.
‘Xấp xỉ: xấp xỉ xác suất hai mặt với xác suất một chiều
ASYMP, sử dụng phân phối tiệm cận của thống kê kiểm tra
Thống kê kiểm tra KS, D, D+ hoặc D-.
PvalueFloatfloatGiá trị P một đuôi hoặc hai đuôi.
Ghi chú
Có ba tùy chọn cho NULL và giả thuyết thay thế tương ứng có thể được chọn bằng tham số thay thế.
Hai mặt: Giả thuyết null là hai phân phối giống hệt nhau, f [x] = g [x] cho tất cả x; Sự thay thế là chúng không giống nhau.
Ít hơn: giả thuyết null là f [x]> = g [x] cho tất cả x; Thay thế là f [x] g [x] cho tất cả x, các giá trị trong x1 có xu hướng nhỏ hơn so với trong x2.
Ví dụ
Giả sử chúng ta muốn kiểm tra giả thuyết null rằng một mẫu được phân phối theo tiêu chuẩn bình thường. Chúng tôi chọn mức độ tin cậy là 95%; Đó là, chúng tôi sẽ bác bỏ giả thuyết null có lợi cho giải pháp thay thế nếu giá trị p nhỏ hơn 0,05.
Khi kiểm tra dữ liệu phân phối đồng đều, chúng tôi sẽ hy vọng giả thuyết null sẽ bị từ chối.
>>> from scipy import stats >>> rng = np.random.default_rng[] >>> stats.kstest[stats.uniform.rvs[size=100, random_state=rng], ... stats.norm.cdf] KstestResult[statistic=0.5001899973268688, pvalue=1.1616392184763533e-23]
Thật vậy, giá trị p thấp hơn ngưỡng 0,05 của chúng tôi, vì vậy chúng tôi từ chối giả thuyết null có lợi cho sự thay thế hai mặt mặc định của các mặt hàng: dữ liệu không được phân phối theo tiêu chuẩn bình thường.
Khi kiểm tra các biến thể ngẫu nhiên từ phân phối bình thường tiêu chuẩn, chúng tôi hy vọng dữ liệu sẽ phù hợp với giả thuyết null hầu hết thời gian.
>>> x = stats.norm.rvs[size=100, random_state=rng] >>> stats.kstest[x, stats.norm.cdf] KstestResult[statistic=0.05345882212970396, pvalue=0.9227159037744717]
Đúng như dự đoán, giá trị p là 0,92 không dưới ngưỡng của chúng tôi là 0,05, vì vậy chúng tôi không thể bác bỏ giả thuyết khống.
Tuy nhiên, giả sử rằng các biến thể ngẫu nhiên được phân phối theo phân phối bình thường được chuyển sang các giá trị lớn hơn. Trong trường hợp này, hàm mật độ tích lũy [CDF] của phân phối cơ bản có xu hướng nhỏ hơn CDF của tiêu chuẩn bình thường. Do đó, chúng tôi hy vọng giả thuyết khống sẽ bị từ chối với
alternative='less'
:>>> x = stats.norm.rvs[size=100, loc=0.5, random_state=rng] >>> stats.kstest[x, stats.norm.cdf, alternative='less'] KstestResult[statistic=0.17482387821055168, pvalue=0.001913921057766743]
Và thực sự, với giá trị p nhỏ hơn ngưỡng của chúng tôi, chúng tôi từ chối giả thuyết khống có lợi cho sự thay thế.
Để thuận tiện, thử nghiệm trước đó có thể được thực hiện bằng cách sử dụng tên của phân phối làm đối số thứ hai.
>>> stats.kstest[x, "norm", alternative='less'] KstestResult[statistic=0.17482387821055168, pvalue=0.001913921057766743]
Các ví dụ trên đều là các thử nghiệm một mẫu giống hệt với các ví dụ được thực hiện bởi
ks_1samp
. Lưu ý rằngkstest
cũng có thể thực hiện các thử nghiệm hai mẫu giống hệt với các thử nghiệm được thực hiện bởi>>> x = stats.norm.rvs[size=100, random_state=rng] >>> stats.kstest[x, stats.norm.cdf] KstestResult[statistic=0.05345882212970396, pvalue=0.9227159037744717]
0. Ví dụ, khi hai mẫu được rút ra từ cùng một phân phối, chúng tôi hy vọng dữ liệu sẽ phù hợp với giả thuyết null hầu hết thời gian.>>> sample1 = stats.laplace.rvs[size=105, random_state=rng] >>> sample2 = stats.laplace.rvs[size=95, random_state=rng] >>> stats.kstest[sample1, sample2] KstestResult[statistic=0.11779448621553884, pvalue=0.4494256912629795]
Đúng như dự đoán, giá trị p là 0,45 không dưới ngưỡng của chúng tôi là 0,05, vì vậy chúng tôi không thể bác bỏ giả thuyết khống.