2017-01-15 25 views
5

Tôi sử dụng các bản phân phối liên tục khác nhau từ scipy.stats (ví dụ: tiêu chuẩn). Vì vậy, nếu tôi muốn tìm P (Z < 0.5) tôi sẽ làm:Python scipy - chỉ định phân phối riêng lẻ tùy chỉnh

from scipy.stats import norm 
norm(0, 1).cdf(0.5) # Z~N(0,1) 

Có một công cụ (scipy.stats hoặc statsmodels hoặc khác) mà tôi có thể sử dụng để mô tả sự phân bố rời rạc và sau đó tính toán CDF/CMF vv trên đó? Tôi có thể tự viết mã nhưng tôi đã tự hỏi nếu có điều gì đó tồn tại, ví dụ:

pdf (x) = 1/3 cho x = 1,2,3; else 0

Sau đó, tôi có thể tạo 2 vectơ x = [1,2,3], p = [1/3, 1/3, 1/3] và nhập chúng vào lớp thư viện sau đó sẽ cung cấp .cdf() vv?

Trả lời

4

Tôi đoán bạn đang tìm kiếm scipy.stats.rv_discrete tại đây. Từ docs:

rv_discrete là một lớp cơ sở để xây dựng các lớp phân phối cụ thể và các trường hợp cho các biến ngẫu nhiên rời rạc. Nó cũng có thể được sử dụng để xây dựng một phân phối tùy ý được xác định bởi danh sách hỗ trợ điểm và xác suất tương ứng.

Ví dụ từ tài liệu:

from scipy import stats 
xk = np.arange(7) 
pk = (0.1, 0.2, 0.3, 0.1, 0.1, 0.0, 0.2) 
custm = stats.rv_discrete(name='custm', values=(xk, pk)) 

Và ví dụ của bạn:

In [1]: import numpy as np 

In [2]: from scipy import stats 

In [3]: custm = stats.rv_discrete(name='custm', values=((1, 2, 3), (1./3, 1./3, 1./3))) 

In [4]: custm.cdf(2.5) 
Out[4]: 0.66666666666666663 
Các vấn đề liên quan