Hướng dẫn how does python calculate ecdf? - python tính toán ecdf như thế nào?

Hướng dẫn how does python calculate ecdf? - python tính toán ecdf như thế nào?
Hướng dẫn how does python calculate ecdf? - python tính toán ecdf như thế nào?

Hướng dẫn how does python calculate ecdf? - python tính toán ecdf như thế nào?

Xuất bản ngày 26 tháng 2 năm 2018 được cập nhật ngày 22 tháng 5 năm 2018

ECDF: Chức năng phân phối tích lũy thần kinh: Hàm phân phối thực nghiệm là hàm liên quan đến thước đo thực nghiệm của một mẫu. Hàm phân phối tích lũy này là một hàm bước nhảy lên 1/N tại mỗi điểm dữ liệu N. Giá trị của nó ở bất kỳ giá trị được chỉ định nào của biến đo được là phần quan sát của biến đo được nhỏ hơn hoặc bằng giá trị được chỉ định. Đặt (x1,,, xn) là độc lập, các biến ngẫu nhiên thực được phân phối giống hệt với hàm phân phối tích lũy chung F (t). Sau đó, hàm phân phối thực nghiệm được định nghĩa là: Nguồn: Emperical Cumulative Distribution Function:
An empirical distribution function is the function associated with the empirical measure of a sample. This cumulative distribution function is a step function that jumps up by 1/n at each of the n data points. Its value at any specified value of the measured variable is the fraction of observations of the measured variable that are less than or equal to the specified value.
Let (x1, …, xn) be independent, identically distributed real random variables with the common cumulative distribution function F(t). Then the empirical distribution function is defined as:Source

Đến quan điểm của tôi, thật khó để tìm một giải pháp thay thế cho chức năng ecdf () của r trong python. Có một vài mã trực tuyến có sẵn, nhưng điều này được xác minh là phù hợp nhất có thể với hàm ECDF () của R. Nó tuân theo thuật toán đằng sau việc tính toán ECDF của một dữ liệu nhất định.

Nếu bạn muốn tự mình tính toán nó, thì đó không phải là một chức năng lớn (về mặt LỘC).

Giả sử chúng tôi được cung cấp một mảng 1-D mà chúng tôi đặt tên là dữ liệu.

  data = [101, 118, 121, 103, 142, 111, 119, 122, 128, 112, 117,157]

Trước tiên chúng tôi sẽ chuyển đổi nó thành một mảng numpy.

  raw_data = np.array(data)

Bây giờ chúng tôi sẽ tìm thấy các giá trị x và y tương ứng đại diện cho CDF thực tế của dữ liệu.

  # create a sorted series of unique data
    cdfx = np.sort(data.unique())
  # x-data for the ECDF: evenly spaced sequence of the uniques
  		x_values = np.linspace(start=min(cdfx),
  			stop=max(cdfx),num=len(cdfx))
    
    # size of the x_values
    	size_data = raw_data.size
    # y-data for the ECDF:
        y_values = []
      	for i in x_value:
        # all the values in raw data less than the ith value in x_values
            temp = raw_data[raw_data <= i]
        # fraction of that value with respect to the size of the x_values
            value = temp.size / size_data
        # pushing the value in the y_values
            y_values.append(value)
    # return both x and y values    
      	return x_values,y_values

Câu trả lời có thể là hai mảng đại diện cho các giá trị x và y của ECDF.

"cdf_x": [101, 106.090909090909, 111.181818181818, 116.272727272727, 121.363636363636, 126.454545454545, 131.545454545455, 136.636363636364, 141.727272727273, 146.818181818182, 151.909090909091, 157]

"cdf_y": [0.0833333333333333, 0.166666666666667, 0.25, 0.333333333333333, 0.666666666666667, 0.75, 0.833333333333333, 0.833333333333333, 0.833333333333333, 0.916666666666667, 0.916666666666667, 1]
      

Những kết quả này được xác minh với chức năng sau trong r:

x <- c(101, 118, 121, 103, 142, 111, 119, 122, 128, 112, 117,157)
ecdf(x)

Sử dụng đầu ra bạn nhận được trong mã R ở trên, bạn có thể tìm thấy các giá trị x và y tương ứng.

Thưởng thức bài viết này? Cung cấp cho Kripanshu Bhargava như nếu nó hữu ích.Kripanshu Bhargava a like if it's helpful.

Hướng dẫn how does python calculate ecdf? - python tính toán ecdf như thế nào?

Đăng lại

Nhà phát triển phần mềm thực tập tại Harvard | Sinh viên tốt nghiệp tại UT Dallas

Khám phá và đọc thêm bài viết từ Kripanshu BhargavaKripanshu Bhargava

Thưởng thức bài viết này?

Để lại một cái tương tự và bình luận cho KripanshuKripanshu

Hướng dẫn how does python calculate ecdf? - python tính toán ecdf như thế nào?

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 does python calculate ecdf? - python tính toán ecdf như thế nào?
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 does python calculate ecdf? - python tính toán ecdf như thế nào?
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.

  raw_data = np.array(data)
0

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

  raw_data = np.array(data)
1

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

  raw_data = np.array(data)
2

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 does python calculate ecdf? - python tính toán ecdf như thế nào?
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 để tính toán cdf?

Approach..
Nhập mô -đun ..
Khai báo số điểm dữ liệu ..
Khởi tạo các giá trị ngẫu nhiên ..
Biểu đồ biểu đồ bằng cách sử dụng dữ liệu trên ..
Nhận dữ liệu biểu đồ ..
Tìm PDF bằng dữ liệu biểu đồ ..
Tính CDF ..
Âm mưu CDF ..

ECDF trong thống kê là gì?

Trong thống kê, hàm phân phối thực nghiệm (thường được gọi là hàm phân phối tích lũy theo kinh nghiệm, ECDF) là hàm phân phối liên quan đến thước đo thực nghiệm của mẫu.Hàm phân phối tích lũy này là một hàm bước nhảy lên 1/N tại mỗi điểm dữ liệu N.the distribution function associated with the empirical measure of a sample. This cumulative distribution function is a step function that jumps up by 1/n at each of the n data points.

Sự khác biệt giữa CDF và ECDF là gì?

Tuy nhiên, định nghĩa chức năng phân phối thực nghiệm, trong khi CDF là mô hình giả thuyết của phân phối, các mô hình ECDF theo kinh nghiệm (tức là quan sát) dữ liệu.Nói cách khác, ECDF là phân phối xác suất bạn sẽ nhận được nếu bạn lấy mẫu từ mẫu của mình, thay vì dân số.while a CDF is a hypothetical model of a distribution, the ECDF models empirical (i.e. observed) data. To put this another way, the ECDF is the probability distribution you would get if you sampled from your sample, instead of the population.

Một cốt truyện ECDF nói với bạn điều gì?

ECDF là gì?ECDF là công cụ ước tính chức năng phân phối tích lũy.ECDF về cơ bản cho phép bạn vẽ một tính năng của dữ liệu của mình theo thứ tự từ ít nhất đến lớn nhất và xem toàn bộ tính năng như thể được phân phối trên tập dữ liệu.allows you to plot a feature of your data in order from least to greatest and see the whole feature as if is distributed across the data set.