Cốt truyện phân phối phần trăm python

Trục hoặc các trục dọc theo đó phần trăm được tính toán. Giá trị mặc định là tính toán (các) phần trăm dọc theo phiên bản phẳng của mảng

Đã thay đổi trong phiên bản 1. 9. 0. Bộ trục được hỗ trợ

ra ndarray, tùy chọn

Mảng đầu ra thay thế để đặt kết quả. Nó phải có cùng hình dạng và độ dài bộ đệm như đầu ra dự kiến, nhưng loại (của đầu ra) sẽ được truyền nếu cần

overwrite_input bool, tùy chọn

Nếu True, thì cho phép sửa đổi mảng đầu vào a bằng các phép tính trung gian, để tiết kiệm bộ nhớ. Trong trường hợp này, nội dung của đầu vào a sau khi chức năng này hoàn thành là không xác định

phương pháp str, tùy chọn

Tham số này chỉ định phương pháp sử dụng để ước tính phần trăm. Có nhiều phương pháp khác nhau, một số phương pháp duy nhất cho NumPy. Xem các ghi chú để giải thích. Các tùy chọn được sắp xếp theo loại R của chúng như được tóm tắt trong bài báo H&F là

  1. 'đảo ngược_cdf'

  2. 'trung bình_inverted_cdf'

  3. 'quan sát gần nhất'

  4. 'nội suy_inverted_cdf'

  5. 'khói'

  6. 'weibull'

  7. 'tuyến tính' (mặc định)

  8. 'trung vị_không thiên vị'

  9. 'bình thường_không thiên vị'

Ba phương pháp đầu tiên là không liên tục. NumPy xác định thêm các biến thể không liên tục sau đây của 'tuyến tính' mặc định (7. ) quyền mua

  • 'thấp hơn'

  • 'cao hơn',

  • 'trung điểm'

  • 'gần nhất'

Đã thay đổi trong phiên bản 1. 22. 0. Đối số này trước đây được gọi là "nội suy" và chỉ cung cấp tùy chọn "tuyến tính" mặc định và bốn tùy chọn cuối cùng.

keepdims bool, tùy chọn

Nếu điều này được đặt thành True, các trục bị giảm sẽ được để lại trong kết quả dưới dạng kích thước với kích thước một. Với tùy chọn này, kết quả sẽ phát chính xác so với mảng ban đầu a

Mới trong phiên bản 1. 9. 0

nội suy str, tùy chọn

Tên không dùng nữa cho đối số từ khóa phương thức

Không dùng nữa kể từ phiên bản 1. 22. 0

Trả về . phân vị vô hướng hoặc ndarray

Nếu q là một phân vị đơn và trục=Không, thì kết quả là một đại lượng vô hướng. Nếu nhiều phần trăm được đưa ra, trục đầu tiên của kết quả tương ứng với phần trăm. Các trục khác là các trục còn lại sau khi giảm một. Nếu đầu vào chứa số nguyên hoặc số float nhỏ hơn float64, kiểu dữ liệu đầu ra là float64. Mặt khác, kiểu dữ liệu đầu ra giống với kiểu dữ liệu đầu vào. Nếu out được chỉ định, thay vào đó mảng đó được trả về

Xem thêm

tương đương với percentile(..., 50)

tương đương với phân vị, ngoại trừ q trong phạm vi [0, 1]

ghi chú

Cho trước một vectơ

>>> m = np.percentile(a, 50, axis=0)
>>> out = np.zeros_like(m)
>>> np.percentile(a, 50, axis=0, out=out)
array([6.5, 4.5, 2.5])
>>> m
array([6.5, 4.5, 2.5])
1 có độ dài
>>> m = np.percentile(a, 50, axis=0)
>>> out = np.zeros_like(m)
>>> np.percentile(a, 50, axis=0, out=out)
array([6.5, 4.5, 2.5])
>>> m
array([6.5, 4.5, 2.5])
2, phân vị thứ q của
>>> m = np.percentile(a, 50, axis=0)
>>> out = np.zeros_like(m)
>>> np.percentile(a, 50, axis=0, out=out)
array([6.5, 4.5, 2.5])
>>> m
array([6.5, 4.5, 2.5])
1 là giá trị
>>> m = np.percentile(a, 50, axis=0)
>>> out = np.zeros_like(m)
>>> np.percentile(a, 50, axis=0, out=out)
array([6.5, 4.5, 2.5])
>>> m
array([6.5, 4.5, 2.5])
4 trên khoảng cách từ nhỏ nhất đến lớn nhất trong một bản sao được sắp xếp của
>>> m = np.percentile(a, 50, axis=0)
>>> out = np.zeros_like(m)
>>> np.percentile(a, 50, axis=0, out=out)
array([6.5, 4.5, 2.5])
>>> m
array([6.5, 4.5, 2.5])
1. Các giá trị và khoảng cách của hai hàng xóm gần nhất cũng như tham số phương pháp sẽ xác định phần trăm nếu xếp hạng chuẩn hóa không khớp chính xác với vị trí của
>>> m = np.percentile(a, 50, axis=0)
>>> out = np.zeros_like(m)
>>> np.percentile(a, 50, axis=0, out=out)
array([6.5, 4.5, 2.5])
>>> m
array([6.5, 4.5, 2.5])
6. Hàm này giống như trung vị nếu
>>> m = np.percentile(a, 50, axis=0)
>>> out = np.zeros_like(m)
>>> np.percentile(a, 50, axis=0, out=out)
array([6.5, 4.5, 2.5])
>>> m
array([6.5, 4.5, 2.5])
7, giống như mức tối thiểu nếu
>>> m = np.percentile(a, 50, axis=0)
>>> out = np.zeros_like(m)
>>> np.percentile(a, 50, axis=0, out=out)
array([6.5, 4.5, 2.5])
>>> m
array([6.5, 4.5, 2.5])
8 và giống như mức tối đa nếu
>>> m = np.percentile(a, 50, axis=0)
>>> out = np.zeros_like(m)
>>> np.percentile(a, 50, axis=0, out=out)
array([6.5, 4.5, 2.5])
>>> m
array([6.5, 4.5, 2.5])
9

Tham số phương thức tùy chọn chỉ định phương thức sẽ sử dụng khi phân vị mong muốn nằm giữa hai chỉ mục

>>> b = a.copy()
>>> np.percentile(b, 50, axis=1, overwrite_input=True)
array([7.,  2.])
>>> assert not np.all(a == b)
0 và
>>> b = a.copy()
>>> np.percentile(b, 50, axis=1, overwrite_input=True)
array([7.,  2.])
>>> assert not np.all(a == b)
1. Trong trường hợp đó, trước tiên chúng tôi xác định
>>> b = a.copy()
>>> np.percentile(b, 50, axis=1, overwrite_input=True)
array([7.,  2.])
>>> assert not np.all(a == b)
2, một chỉ số ảo nằm giữa
>>> b = a.copy()
>>> np.percentile(b, 50, axis=1, overwrite_input=True)
array([7.,  2.])
>>> assert not np.all(a == b)
0 và
>>> b = a.copy()
>>> np.percentile(b, 50, axis=1, overwrite_input=True)
array([7.,  2.])
>>> assert not np.all(a == b)
4, trong đó
>>> b = a.copy()
>>> np.percentile(b, 50, axis=1, overwrite_input=True)
array([7.,  2.])
>>> assert not np.all(a == b)
0 là giá sàn và
>>> b = a.copy()
>>> np.percentile(b, 50, axis=1, overwrite_input=True)
array([7.,  2.])
>>> assert not np.all(a == b)
6 là phần lẻ của chỉ số. Sau đó, kết quả cuối cùng là phép nội suy của
>>> b = a.copy()
>>> np.percentile(b, 50, axis=1, overwrite_input=True)
array([7.,  2.])
>>> assert not np.all(a == b)
7 và
>>> b = a.copy()
>>> np.percentile(b, 50, axis=1, overwrite_input=True)
array([7.,  2.])
>>> assert not np.all(a == b)
8 dựa trên
>>> b = a.copy()
>>> np.percentile(b, 50, axis=1, overwrite_input=True)
array([7.,  2.])
>>> assert not np.all(a == b)
6. Trong quá trình tính toán của
>>> b = a.copy()
>>> np.percentile(b, 50, axis=1, overwrite_input=True)
array([7.,  2.])
>>> assert not np.all(a == b)
6,
>>> b = a.copy()
>>> np.percentile(b, 50, axis=1, overwrite_input=True)
array([7.,  2.])
>>> assert not np.all(a == b)
0 và
>>> b = a.copy()
>>> np.percentile(b, 50, axis=1, overwrite_input=True)
array([7.,  2.])
>>> assert not np.all(a == b)
4 được sửa đổi bằng cách sử dụng các hằng số hiệu chỉnh
import matplotlib.pyplot as plt

a = np.arange(4)
p = np.linspace(0, 100, 6001)
ax = plt.gca()
lines = [
    ('linear', '-', 'C0'),
    ('inverted_cdf', ':', 'C1'),
    # Almost the same as `inverted_cdf`:
    ('averaged_inverted_cdf', '-.', 'C1'),
    ('closest_observation', ':', 'C2'),
    ('interpolated_inverted_cdf', '--', 'C1'),
    ('hazen', '--', 'C3'),
    ('weibull', '-.', 'C4'),
    ('median_unbiased', '--', 'C5'),
    ('normal_unbiased', '-.', 'C6'),
    ]
for method, style, color in lines:
    ax.plot(
        p, np.percentile(a, p, method=method),
        label=method, linestyle=style, color=color)
ax.set(
    title='Percentiles for different methods and data: ' + str(a),
    xlabel='Percentile',
    ylabel='Estimated percentile value',
    yticks=a)
ax.legend()
plt.show()
3 và
import matplotlib.pyplot as plt

a = np.arange(4)
p = np.linspace(0, 100, 6001)
ax = plt.gca()
lines = [
    ('linear', '-', 'C0'),
    ('inverted_cdf', ':', 'C1'),
    # Almost the same as `inverted_cdf`:
    ('averaged_inverted_cdf', '-.', 'C1'),
    ('closest_observation', ':', 'C2'),
    ('interpolated_inverted_cdf', '--', 'C1'),
    ('hazen', '--', 'C3'),
    ('weibull', '-.', 'C4'),
    ('median_unbiased', '--', 'C5'),
    ('normal_unbiased', '-.', 'C6'),
    ]
for method, style, color in lines:
    ax.plot(
        p, np.percentile(a, p, method=method),
        label=method, linestyle=style, color=color)
ax.set(
    title='Percentiles for different methods and data: ' + str(a),
    xlabel='Percentile',
    ylabel='Estimated percentile value',
    yticks=a)
ax.legend()
plt.show()
4 mà các lựa chọn của chúng phụ thuộc vào
import matplotlib.pyplot as plt

a = np.arange(4)
p = np.linspace(0, 100, 6001)
ax = plt.gca()
lines = [
    ('linear', '-', 'C0'),
    ('inverted_cdf', ':', 'C1'),
    # Almost the same as `inverted_cdf`:
    ('averaged_inverted_cdf', '-.', 'C1'),
    ('closest_observation', ':', 'C2'),
    ('interpolated_inverted_cdf', '--', 'C1'),
    ('hazen', '--', 'C3'),
    ('weibull', '-.', 'C4'),
    ('median_unbiased', '--', 'C5'),
    ('normal_unbiased', '-.', 'C6'),
    ]
for method, style, color in lines:
    ax.plot(
        p, np.percentile(a, p, method=method),
        label=method, linestyle=style, color=color)
ax.set(
    title='Percentiles for different methods and data: ' + str(a),
    xlabel='Percentile',
    ylabel='Estimated percentile value',
    yticks=a)
ax.legend()
plt.show()
5 được sử dụng. Cuối cùng, lưu ý rằng vì Python sử dụng lập chỉ mục dựa trên 0, nên mã sẽ trừ 1 khác khỏi chỉ mục bên trong

Công thức sau xác định chỉ số ảo

>>> b = a.copy()
>>> np.percentile(b, 50, axis=1, overwrite_input=True)
array([7.,  2.])
>>> assert not np.all(a == b)
2, vị trí của phân vị trong mẫu được sắp xếp

\[i + g = (q / 100) * ( n - alpha - beta + 1 ) + alpha\]

Các phương pháp khác nhau sau đó hoạt động như sau

inverted_cdf

phương pháp 1 của H&F. Phương pháp này cho kết quả không liên tục

  • nếu g > 0 ;

  • nếu g = 0 ;

trung bình_inverted_cdf

phương pháp 2 của H&F. Phương pháp này cho kết quả không liên tục

  • nếu g > 0 ;

  • nếu g = 0 ;

closes_observation

phương pháp 3 của H&F. Phương pháp này cho kết quả không liên tục

  • nếu g > 0 ;

  • nếu g = 0 và chỉ số là số lẻ;

  • nếu g = 0 và chỉ số chẵn;

nội suy_inverted_cdf

phương pháp 4 của H&F. Phương pháp này cho kết quả liên tục bằng cách sử dụng

  • alpha = 0

  • beta = 1

sương mù

phương pháp 5 của H&F. Phương pháp này cho kết quả liên tục bằng cách sử dụng

  • alpha = 1/2

  • hệ số bêta = 1/2

con bò mộng

phương pháp 6 của H&F. Phương pháp này cho kết quả liên tục bằng cách sử dụng

  • alpha = 0

  • hệ số thử nghiệm = 0

tuyến tính

phương pháp 7 của H&F. Phương pháp này cho kết quả liên tục bằng cách sử dụng

  • alpha = 1

  • beta = 1

median_unbiased

phương pháp 8 của H&F. Phương pháp này có lẽ là phương pháp tốt nhất nếu hàm phân phối mẫu chưa biết (xem tài liệu tham khảo). Phương pháp này cho kết quả liên tục bằng cách sử dụng

  • alpha = 1/3

  • hệ số bêta = 1/3

normal_unbiased

phương pháp 9 của H&F. Phương pháp này có lẽ là phương pháp tốt nhất nếu biết hàm phân phối mẫu là chuẩn tắc. Phương pháp này cho kết quả liên tục bằng cách sử dụng

  • alpha = 3/8

  • hệ số thử nghiệm = 3/8

thấp hơn

Phương thức NumPy được giữ để tương thích ngược. Lấy

>>> b = a.copy()
>>> np.percentile(b, 50, axis=1, overwrite_input=True)
array([7.,  2.])
>>> assert not np.all(a == b)
0 làm điểm nội suy

cao hơn

Phương thức NumPy được giữ để tương thích ngược. Lấy

>>> b = a.copy()
>>> np.percentile(b, 50, axis=1, overwrite_input=True)
array([7.,  2.])
>>> assert not np.all(a == b)
4 làm điểm nội suy

gần nhất

Phương thức NumPy được giữ để tương thích ngược. Mất

>>> b = a.copy()
>>> np.percentile(b, 50, axis=1, overwrite_input=True)
array([7.,  2.])
>>> assert not np.all(a == b)
0 hoặc
>>> b = a.copy()
>>> np.percentile(b, 50, axis=1, overwrite_input=True)
array([7.,  2.])
>>> assert not np.all(a == b)
4, tùy theo giá trị nào gần nhất

trung điểm

Phương thức NumPy được giữ để tương thích ngược. Sử dụng float641

Người giới thiệu

[ 1 ] (,,,,,,,,,)

R. J. Hyndman và Y. Fan, “Các phân vị mẫu trong các gói thống kê,” The American Statistician, 50(4), trang. 361-365, 1996