Hướng dẫn how do you find the empirical cumulative distribution in python? - làm thế nào để bạn tìm thấy phân phối tích lũy theo kinh nghiệm trong python?

Bạn đang ở đây: Trang chủ/R/Trực quan hóa dữ liệu/ECDF/Chức năng phân phối tích lũy theo kinh nghiệm (ECDF) trong PythonHome / R / Data Visualization / ECDF / Empirical cumulative distribution function (ECDF) in Python

Biểu đồ là một cách tuyệt vời để hình dung một biến duy nhất. Một trong những vấn đề với biểu đồ là người ta phải chọn kích thước thùng. Với kích thước thùng sai của bạn, phân phối dữ liệu của bạn có thể trông rất khác nhau. Ngoài kích thước bin, biểu đồ có thể không phải là một lựa chọn tốt để trực quan hóa phân phối của nhiều biến cùng một lúc.

Một giải pháp thay thế tốt hơn cho biểu đồ là vẽ các hàm phân phối tích lũy thực nghiệm (ECDFS). ECDFS don lồng có vấn đề về Binning và rất tuyệt vời để trực quan hóa nhiều bản phân phối cùng nhau.

ECDF là gì?

Nó là kinh nghiệm, bởi vì nó được tính toán từ dữ liệu. Đó là hàm phân phối tích lũy vì nó cho chúng ta xác suất biến sẽ có giá trị nhỏ hơn hoặc bằng giá trị cụ thể của biến.

Trong ECDF, trục x tương ứng với phạm vi giá trị cho các biến và trên trục y, chúng tôi vẽ tỷ lệ các điểm dữ liệu nhỏ hơn bằng giá trị trục x tương ứng.

Hãy cho chúng tôi xem các ví dụ về tính toán ECDF trong Python và hình dung chúng trong Python. Trước tiên chúng ta hãy tải các gói mà chúng ta có thể sử dụng.

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

Hãy để chúng tôi mô phỏng một số dữ liệu bằng mô -đun ngẫu nhiên Numpy. Chúng ta hãy tạo ra các số ngẫu nhiên từ phân phối bình thường với giá trị trung bình và sigma được chỉ định.

# mean and standard deviation
mu, sigma = 5, 1 
# generate random data for ECDF
rand_normal = np.random.normal(mu, sigma, 100)
# use seaborn to make histogram
ax = sns.distplot(rand_normal,
                  bins=10,
                  kde=False,
                  color='dodgerblue',
                  hist_kws={"linewidth": 15,'alpha':1})
ax.set(xlabel='Normal', ylabel='Frequency')

Đây là cách biểu đồ sẽ trông như thế nào với 10 thùng. Phân phối sẽ trông hoàn toàn khác nhau nếu chúng ta sử dụng số lượng thùng khác nhau.

Hướng dẫn how do you find the empirical cumulative distribution in python? - làm thế nào để bạn tìm thấy phân phối tích lũy theo kinh nghiệm trong python?
Trực quan hóa phân phối bằng biểu đồ

Hãy để chúng tôi tính toán các giá trị X và Y để tạo biểu đồ ECDF. Các giá trị X của chúng tôi chỉ đơn giản là dữ liệu được sắp xếp, đó là dữ liệu ngẫu nhiên chúng tôi tạo. Và các giá trị y tương ứng với tỷ lệ của các điểm dữ liệu nhỏ hơn mỗi điểm dữ liệu. `

x = np.sort(rand_normal)
n = x.size
y = np.arange(1, n+1) / n

Bây giờ chúng tôi có cả giá trị x và y được tính toán từ dữ liệu của chúng tôi. Chúng ta có thể tạo ra một sơ đồ phân tán đơn giản của x và y bằng cách sử dụng matplotlib.

plt.scatter(x=x, y=y);
plt.xlabel('x', fontsize=16)
plt.ylabel('y', fontsize=16)

Biểu đồ ECDF dưới đây là giải pháp thay thế cho biểu đồ. Một điều nổi bật là âm mưu ECDF hiển thị tất cả các điểm dữ liệu. Ví dụ, chúng ta có thể thấy rằng dữ liệu của chúng ta dao động từ khoảng 2 đến khoảng 7. Chúng ta có thể thấy rằng khoảng 18% dữ liệu nhỏ hơn hoặc bằng 4. và khoảng 90% dữ liệu nhỏ hơn hoặc bằng 6.

Hướng dẫn how do you find the empirical cumulative distribution in python? - làm thế nào để bạn tìm thấy phân phối tích lũy theo kinh nghiệm trong python?
ECDF: Trực quan hóa phân phối bằng ECDF

Để chuyển đổi mã để tính toán ECDF như một hàm chức năng và sử dụng nó để trực quan hóa nhiều phân phối.

def ecdf(data):
    """ Compute ECDF """
    x = np.sort(data)
    n = x.size
    y = np.arange(1, n+1) / n
    return(x,y)

CẬP NHẬT: Nhờ Phiên bản Seaborn 0.11.0, bây giờ chúng tôi có chức năng đặc biệt để thực hiện cốt truyện ECDF một cách dễ dàng. Kiểm tra bài đăng này để tìm hiểu cách sử dụng chức năng Seaborn ECDFPLOT () để thực hiện cốt truyện ECDF. Thanks to Seaborn version 0.11.0, now we have special function to make ecdf plot easily. Check out this post to learn how to use Seaborn’s ecdfplot() function to make ECDF plot.

Chúng ta hãy tạo ra các số ngẫu nhiên từ phân phối bình thường, nhưng với ba bộ trung bình và sigma khác nhau. Và tính toán ECDF bằng cách sử dụng hàm trên cho ECDF. Hãy để chúng tôi vẽ từng tập dữ liệu trên cùng một biểu đồ phân tán.

Phân phối đầu tiên có trung bình = 4 và sigma = 0,5.

mu1, sigma1 = 4, 0.5 
rand_normal1 = np.random.normal(mu1, sigma1, 100)
x,y = ecdf(rand_normal1)
plt.scatter(x=x, y=y);

Phân phối thứ hai có cùng ý nghĩa = 4, nhưng với sigma = 1.

mu2, sigma2= 4, 1 
rand_normal2 = np.random.normal(mu2, sigma2, 100)
x,y = ecdf(rand_normal2)
plt.scatter(x=x, y=y);

Tương tự, phân phối thứ ba cũng có cùng ý nghĩa = 4, nhưng với sigma = 2.

mu3, sigma3 = 4, 2 
rand_normal3 = np.random.normal(mu3, sigma3, 100)
x,y = ecdf(rand_normal3)
plt.scatter(x=x, y=y);
plt.xlabel('x', fontsize=16)
plt.ylabel('y', fontsize=16)

Và chúng tôi nhận được ECDF hiển thị ba phân phối. Chúng ta có thể dễ dàng nhìn thấy các điểm dữ liệu và sự lây lan của chúng tương ứng với mỗi phân phối.

Hướng dẫn how do you find the empirical cumulative distribution in python? - làm thế nào để bạn tìm thấy phân phối tích lũy theo kinh nghiệm trong python?
ECDF: Hình dung nhiều bản phân phối

Thông thường ECDF cũng có thể hữu ích khi dữ liệu là một loại hỗn hợp của nhiều bản phân phối.

Làm thế nào để bạn tạo một CDF trong Python?

Matplotlib với Python..
Đặt kích thước hình và điều chỉnh phần đệm giữa và xung quanh các ô phụ ..
Khởi tạo một biến N cho số lượng dữ liệu mẫu ..
Tạo dữ liệu ngẫu nhiên bằng cách sử dụng Numpy ..
Tính biểu đồ của một tập hợp dữ liệu với dữ liệu và thùng = 10 ..
Tìm hàm phân phối xác suất (PDF) ..

Làm thế nào để Python tính toán ECDF?

Instructions..
Tính toán số lượng điểm dữ liệu, n, sử dụng hàm Len () ..
Giá trị là dữ liệu được sắp xếp ..
Dữ liệu của ECDF đi từ 1/N đến 1 theo mức tăng cách đều nhau.Bạn có thể xây dựng điều này bằng NP.Arange ().Tuy nhiên, hãy nhớ rằng giá trị cuối cùng trong NP.....
Hàm trả về các giá trị x và y ..

Làm thế nào để bạn tìm thấy sự phân phối thực nghiệm?

EDF được định nghĩa là: fˆn (x) = số lượng phần tử trong mẫu ≤xn = 1n∑i = 1ni (xi≤x), trong đó IA là chỉ báo của sự kiện A.Fˆn(x)=number of elements in the sample ≤xn=1n∑i=1nI(Xi≤x),where IA is the indicator of event A.

Làm thế nào để bạn tìm thấy phân phối tích lũy?

Hàm phân phối tích lũy (CDF) của biến ngẫu nhiên x được ký hiệu là f (x) và được định nghĩa là f (x) = pr (x ≤ x) ...
Pr (x ≤ 1) = 1/6 ..
Pr (x ≤ 2) = 2/6 ..
Pr (x 3) = 3/6 ..
Pr (x ≤ 4) = 4/6 ..
Pr (x ≤ 5) = 5/6 ..
Pr (x ≤ 6) = 6/6 = 1 ..