Cách vẽ biểu đồ phân phối xác suất trong Python
Trong bài đăng này, tôi sẽ chỉ cho bạn cách làm việc với phân phối xác suất bằng cách sử dụng normal.rvs(size=10,random_state=143) 5. Chúng tôi sẽ bắt đầu bằng cách nhập các gói có liên quan Show import scipy.stats as stats Mô-đun normal.rvs(size=10,random_state=143) 6 của normal.rvs(size=10,random_state=143) 7 cung cấp nhiều bản phân phối để bạn nhất định tìm thấy những gì bạn đang tìm kiếm. Chúng được tổ chức thành ba loại. Liên tục, rời rạc và đa biến. Đây là danh sách đầy đủ. Trong bài đăng trên blog này, chúng tôi sẽ tập trung vào (hai) phân phối liên tục và (hai) phân phối rời rạcPhân phối liên tụcChúng ta sẽ bắt đầu với bản phân phối được cho là nổi tiếng nhất. Phân phối bình thường (Gaussian) Chúng ta bắt đầu với việc tạo một thể hiện của lớp normal.rvs(size=10,random_state=143) 8 và khởi tạo đối tượng này để có giá trị trung bình là 100 và độ lệch chuẩn là 15normal.rvs(size=10,random_state=143) 9Tiếp theo, chúng ta có thể tạo một mẫu ngẫu nhiên bằng cách gọi phương thức normal_sample = normal.rvs(size=1000,random_state=123) 0 trên đối tượng này để tạo 10 số ngẫu nhiênnormal.rvs(size=10,random_state=143) normal_sample = normal.rvs(size=1000,random_state=123) 1 chỉ để kết quả có thể lặp lại được. Nếu bạn bao gồm điều này, kết quả này sẽ luôn giống nhau. Nếu bạn muốn lặp lại và nhận được kết quả khác, chỉ cần bỏ qua phần này để mã của bạn đọc là normal_sample = normal.rvs(size=1000,random_state=123) 2Điều đó thật dễ dàng. Bây giờ kẻo tạo ra 1000 số ngẫu nhiên từ phân phối này và tạo biểu đồ normal_sample = normal.rvs(size=1000,random_state=123) Đây là kết quả Biểu đồ gồm 1000 số ngẫu nhiên được tạo từ phân phối chuẩnBây giờ hãy tập trung vào PDF, hàm mật độ xác suất. Sử dụng cùng một đối tượng (phân phối) mà chúng tôi đã tạo, chúng tôi có thể truy cập PDF thông qua phương thức normal_sample = normal.rvs(size=1000,random_state=123) 3. Đối số đầu tiên có thể là vô hướng của một mảng giá trịprint(normal.pdf(120)) Tiếp theo, hãy xem cách vẽ đồ thị PDF. Đầu tiên tạo một số giá trị cho trục hoành. Chúng tôi sẽ sử dụng normal_sample = normal.rvs(size=1000,random_state=123) 4 để tạo ra các số ____6_______5 cách đều nhau giữa ____6_______6 và ____6_______7. Các giá trị có liên quan cho trường hợp của chúng tôi dường như nằm trong khoảng từ 50 đến 150. normal_sample = normal.rvs(size=1000,random_state=123) 8. Chúng sẽ đóng vai trò là giá trị ngang (x) cho cốt truyệnĐể có được các giá trị dọc (y), chúng ta có thể tính toán PDF trên các giá trị này. normal_sample = normal.rvs(size=1000,random_state=123) 9. Dưới đây, chúng tôi có mã kết hợp tất cả những thứ này lại với nhau và cung cấp cho chúng tôi một biểu đồ PDF bình thườngt = np.linspace(50,150,100) Một cốt truyện của một PDF bình thườngCuối cùng, chúng ta có thể phủ biểu đồ này lên trên biểu đồ để xem trình tạo số ngẫu nhiên đã hoạt động tốt như thế nào Biểu đồ của một mẫu từ phân phối chuẩn và biểu đồ tương ứng của PDFĐiều đó có vẻ khá tốt Một bản phân phối phổ biến khác là bản phân phối Beta. Đây cũng là một phân phối liên tục và được sử dụng để mô hình hóa các biến ngẫu nhiên trong khoảng từ 0 đến 1. Vì vậy, ví dụ, nếu biến ngẫu nhiên là xác suất thành công, thì đây có thể là một phân phối tốt để sử dụng. Bản phân phối Beta có hai tham số, a và b. Do đó, để tạo một đối tượng phân phối beta trong print(normal.pdf(120)) 0, chúng tôi đặt print(normal.pdf(120)) 1. Mã bên dưới tạo một mẫu ngẫu nhiên từ phân phối nàybeta=stats.beta(a=2,b=5) Như trước đây, hãy lấy 1000 số từ phân phối này, tạo biểu đồ và phủ tệp PDF của nó beta_sample=beta.rvs(size=1000,random_state=133) Biểu đồ của một mẫu từ bản phân phối beta và biểu đồ tương ứng của PDFPhân phối rời rạcĐôi khi, chúng ta cần làm việc với các bản phân phối rời rạc. Chúng tôi sẽ chứng minh hai. Nhị thức và Poisson. Phân phối nhị thức được sử dụng để mô hình hóa số lần thành công với thử nghiệm lặp lại trong đó mỗi thử nghiệm có thể dẫn đến “thành công” hoặc “thất bại”, xác suất thành công không đổi từ thử nghiệm này sang thử nghiệm khác, các thử nghiệm độc lập với nhau và . Một ví dụ điển hình là số lần tung đồng xu cố định. Đây là cách chúng tôi lấy các đối tượng phân phối nhị thức trong print(normal.pdf(120)) 0 và tạo một số số ngẫu nhiênbinomial=stats.binom(n=10,p=0.4) Hãy nhớ rằng một bản phân phối rời rạc không có PDF. Hàm tương ứng là Hàm khối lượng xác suất hoặc PMF. Trong print(normal.pdf(120)) 0, chúng ta có thể truy cập chức năng này cho một đối tượng phân phối như sau. print(normal.pdf(120)) 4. Giống như đối với PDF, chúng ta có thể tính toán PMF của một số hoặc cho một danh sách các sốbinomial.pmf(2) Tiếp theo, hãy vẽ sơ đồ PMF. Vì nó rời rạc nên chúng ta sẽ sử dụng print(normal.pdf(120)) 5 thay vì print(normal.pdf(120)) 6. Ngoài ra, PMF bằng 0 ngoại trừ sự hỗ trợ của phân phối này xảy ra là 0, 1, 2, …, 10. Thay vì print(normal.pdf(120)) 7 được sử dụng để tạo các số từ một phạm vi liên tục, chúng tôi sẽ sử dụng print(normal.pdf(120)) 8 để tạo các giá trị theo một tập hợp rời rạc. Đối với chúng tôi, đây sẽ làt=np.arange(0,11) Lưu ý cách chúng ta phải đặt print(normal.pdf(120)) 9 thay vì t = np.linspace(50,150,100) 0 vì nó không trả về số cuối cùng. Bây giờ, bằng cách sử dụng các giá trị này, chúng ta có thể vẽ đồ thị PMF của phân phối nhị thức của chúng tanormal.rvs(size=10,random_state=143) 0Bây giờ chúng tôi sẽ tạo 1000 số ngẫu nhiên từ phân phối này t = np.linspace(50,150,100) 1và tạo một biểu đồ. Vì chúng tôi đang xử lý các số rời rạc, chúng tôi phải thêm một số tùy chọn để kiểm soát cách tính toán biểu đồ
Đây là mã đầy đủ normal.rvs(size=10,random_state=143) 1Biểu đồ của 1000 số ngẫu nhiên từ phân phối nhị thứcCuối cùng, đây là mã đặt PMF và biểu đồ cùng nhau normal.rvs(size=10,random_state=143) 2Biểu đồ của một mẫu ngẫu nhiên từ phân phối nhị thức và biểu đồ của PMF liên quanPhân phối Poisson cũng được sử dụng rất phổ biến trong thực tế. Nó được sử dụng để mô hình hóa số lượng các sự kiện (chẳng hạn như tai nạn xe hơi) xảy ra trong một khoảng thời gian (hoặc không gian) cố định. Các giá trị mà biến ngẫu nhiên này có thể nhận là 0,1,2,… (nó kéo dài mãi mãi). Trong print(normal.pdf(120)) 0, chúng ta có thể thiết lập một đối tượng phân phối Poisson bằng cách t = np.linspace(50,150,100) 8. Tạo số ngẫu nhiên giống như các bản phân phối khácnormal.rvs(size=10,random_state=143) 3Dựa trên mọi thứ chúng tôi đã thực hiện ở trên, chúng tôi có thể tạo 1000 số ngẫu nhiên từ phân phối này, vẽ biểu đồ và PMF cùng nhau trên cùng một biểu đồ. Cố gắng tự làm điều này trước khi xem mã bên dưới. Để khuyến khích bạn, trước tiên tôi sẽ hiển thị kết quả cuối cùng và sau đó là mã Biểu đồ của một mẫu ngẫu nhiên từ phân phối Poisson và đồ thị của PMF liên quan_______0_______4Một phần khó khăn ở đây là vì sự hỗ trợ của biến ngẫu nhiên Poisson không có điểm kết thúc, chúng ta phải quyết định nơi dừng tính toán. Đối với chúng tôi, đây sẽ là giá trị lớn nhất của dữ liệu mẫu của chúng tôi; Phân phối xác suất trong Python là gì?Phân phối xác suất mô tả xác suất của các giá trị mà một biến ngẫu nhiên có thể nhận . Đây là một khái niệm quan trọng trong thống kê và lý thuyết xác suất, và mọi cuốn sách về chủ đề này đều thảo luận về phân phối xác suất cùng với các thuộc tính của chúng.
Đồ thị phân phối xác suất là gì?Về mặt đồ họa, hàm phân phối xác suất được biểu thị bằng biểu đồ thanh , với trục x biểu thị các giá trị mà biến ngẫu nhiên có thể nhận . |