giá trị p từ các hàm phân phối tích lũy¶
>>> import numpy as np >>> np.set_printoptions(precision=4) # print arrays to 4 decimal places >>> import matplotlib.pyplot as plt
Dấu
Nếu chạy trong bảng điều khiển IPython, hãy cân nhắc chạy %matplotlib để bật các biểu đồ tương tác. Nếu chạy trong Jupyter Notebook, hãy sử dụng %matplotlib inline
Hãy tưởng tượng tôi có một thống kê t với 20 bậc tự do
Scipy cung cấp một lớp phân phối t mà chúng ta có thể sử dụng để lấy các giá trị từ hàm mật độ xác suất thống kê t (PDF)
Để bắt đầu, chúng tôi vẽ sơ đồ PDF cho thống kê t với 20 bậc tự do
>>> import scipy.stats >>> # Make a t distribution object for t with 20 degrees of freedom >>> t_dist = scipy.stats.t(20) >>> # Plot the PDF >>> t_values = np.linspace(-4, 4, 1000) >>> plt.plot(t_values, t_dist.pdf(t_values)) [...] >>> plt.xlabel('t value') <...> >>> plt.ylabel('probability for t value') <...> >>> plt.title('PDF for t distribution with df=20') <...>
(png, thuê. png, pdf)
Đối tượng phân phối t t_dist cũng có thể cung cấp cho chúng ta hàm phân phối tích lũy (CDF). CDF đưa ra diện tích dưới đường cong của PDF tại và bên trái của giá trị t đã cho
>>> # Plot the CDF >>> plt.plot(t_values, t_dist.cdf(t_values)) [...] >>> plt.xlabel('t value') <...> >>> plt.ylabel('probability for t value <= t') <...> >>> plt.title('CDF for t distribution with df=20') <...>
(png, thuê. png, pdf)
Giả sử tôi có giá trị t \(x\) được rút ra từ phân phối t với 20 bậc tự do. PDF cung cấp xác suất cho các giá trị đã cho của \(x\) . Bởi vì nó là mật độ xác suất, tổng xác suất của tất cả các giá trị có thể có cho \(x\) . \(\infty < x < \infty\) phải là 1. Do đó, tổng diện tích dưới đường cong PDF là 1 và giá trị tối đa của CDF là 1.
CDF cho chúng ta diện tích bên dưới đường cong PDF tại và bên trái của một giá trị t đã cho \(x\) . Do đó, xác suất chúng tôi sẽ quan sát thấy một giá trị \(x nếu chúng tôi lấy mẫu một giá trị \(x\) from a t distribution of (here) 20 degrees of freedom.
# Show relationship of PDF and CDF for three example t values. example_values = (-1.5, 0, 1.5) pdf_values = t_dist.pdf(t_values) cdf_values = t_dist.cdf(t_values) fill_color = (0, 0, 0, 0.1) # Light gray in RGBA format. line_color = (0, 0, 0, 0.5) # Medium gray in RGBA format. fig, axes = plt.subplots(2, len(example_values), figsize=(10, 6)) for i, x in enumerate(example_values): cdf_ax, pdf_ax = axes[:, i] cdf_ax.plot(t_values, cdf_values) pdf_ax.plot(t_values, pdf_values) # Fill area at and to the left of x. pdf_ax.fill_between(t_values, pdf_values, where=t_values <= x, color=fill_color) pd = t_dist.pdf(x) # Probability density at this value. # Line showing position of x on x-axis of PDF plot. pdf_ax.plot([x, x], [0, pd], color=line_color) cd = t_dist.cdf(x) # Cumulative distribution value for this x. # Lines showing x and CDF value on CDF plot. x_ax_min = cdf_ax.axis()[0] # x position of y axis on plot. cdf_ax.plot([x, x, x_ax_min], [0, cd, cd], color=line_color) cdf_ax.set_title('x = {:.1f}, area = {:.2f}'.format(x, cd)) # Hide top and right axis lines and ticks to reduce clutter. for ax in (cdf_ax, pdf_ax): ax.spines['right'].set_visible(False) ax.spines['top'].set_visible(False) ax.yaxis.set_ticks_position('left') ax.xaxis.set_ticks_position('bottom')
(png, thuê. png, pdf)
Ví dụ: giả sử tôi đã rút ngẫu nhiên một giá trị t \(x\) từ phân phối t với 20 bậc tự do. Xác suất mà \(x là.
>>> # Area of PDF at and to the left of 1.5 >>> t_dist.cdf(1.5) 0.9253...
Tổng diện tích dưới PDF là 1 và giá trị tối đa cho CDF là 1. Do đó diện tích của PDF ở bên phải của 1. 5 phải là