Trong kiểm định ANOVA, thay vì so sánh F với giá trị tới hạn tra bảng, người ta thường tính trực tiếp p-value:
p=P(X>F)
trong đó X tuân theo phân phối F với d1 bậc tự do tử số và d2 bậc tự do mẫu số. Hàm phân phối tích lũy của F liên hệ với hàm beta không đầy đủ được chuẩn hoá (regularized incomplete beta function) Ix(a,b) như sau:
P(X≤f)=Ix(2d1,2d2),x=d1f+d2d1f
nên p=P(X>f)=1−Ix(2d1,2d2).
Hãy viết chương trình Python thuần túy (không dùng scipy/numpy) tự cài đặt hàm beta không đầy đủ được chuẩn hoá (ví dụ bằng phân số liên tục - continued fraction, hoặc tích phân số với sai số đủ nhỏ) để tính p-value ứng với F, d1, d2 cho trước.
Ví dụ: với F=4.96, d1=1, d2=10, ta có p≈0.050088 (giá trị F tới hạn quen thuộc ở α=0.05).
Một dòng duy nhất chứa 3 số: F, d1, d2 cách nhau bởi khoảng trắng, trong đó F≥0 là thống kê F quan sát được, d1,d2 là các số nguyên dương (bậc tự do).
In ra một số thực duy nhất là p-value =P(X>F), làm tròn và hiển thị với đúng 6 chữ số sau dấu thập phân.
Ví dụ với input mẫu ở đề bài (4.96 1 10), output là:
0.050088
Ví dụ:
Đầu vào:
1 5 10
Đầu ra:
0.465119
Đầu vào:
4.96 1 10
Đầu ra:
0.050088
Đang tải editor...