Hướng dẫn normal probability plot python - con trăn âm mưu xác suất bình thường

Nội dung chính

  • Sự chậm trễ của chuyến bay là trong vài phút và các giá trị âm có nghĩa là chuyến bay sớm [hóa ra các chuyến bay thường có xu hướng đến sớm, không bao giờ khi chúng tôi đi trên chúng!] Có hơn 300.000 chuyến bay với độ trễ tối thiểu là -60 phút và Độ trễ tối đa là 120 phút. Cột khác trong DataFrame là tên của hãng hàng không mà chúng ta có thể sử dụng để so sánh.
  • Khi biểu đồ thất bại
  • Giải pháp số 1: Biểu đồ bên cạnh
  • Giải pháp số 2: Thanh xếp chồng
  • Sơ đồ mật độ
  • Các lô mật độ trong Seaborn
  • Solution #3 Density Plot
  • Shaded Density Plots
  • Conclusions
  • Làm thế nào để bạn vẽ phân phối xác suất trong Python?
  • Làm thế nào để bạn vẽ đồ thị phân phối xác suất?
  • Làm thế nào để bạn vẽ một phân phối dữ liệu?

Nội phân chính

  • Khi biểu đồ thất bại
  • Giải pháp số 1: Biểu đồ bên cạnh
  • Giải pháp số 2: Thanh xếp chồng
  • Sơ đồ mật độ
  • Các lô mật độ trong Seaborn
  • Solution #3 Density Plot
  • Shaded Density Plots
  • Conclusions
  • Làm thế nào để bạn vẽ phân phối xác suất trong Python?
  • Làm thế nào để bạn vẽ đồ thị phân phối xác suất?
  • Làm thế nào để bạn vẽ một phân phối dữ liệu?

Nội phân chính

  • Khi biểu đồ thất bại
  • Giải pháp số 1: Biểu đồ bên cạnh
  • Giải pháp số 2: Thanh xếp chồng
  • Sơ đồ mật độ
  • Các lô mật độ trong Seaborn
  • Solution #3 Density Plot
  • Shaded Density Plots
  • Conclusions
  • Làm thế nào để bạn vẽ phân phối xác suất trong Python?
  • Làm thế nào để bạn vẽ đồ thị phân phối xác suất?
  • Làm thế nào để bạn vẽ một phân phối dữ liệu?

Conclusions

Làm thế nào để bạn vẽ phân phối xác suất trong Python?

Làm thế nào để bạn vẽ đồ thị phân phối xác suất?

Làm thế nào để bạn vẽ một phân phối dữ liệu?

Nội phân chính

Sự chậm trễ của chuyến bay là trong vài phút và các giá trị âm có nghĩa là chuyến bay sớm [hóa ra các chuyến bay thường có xu hướng đến sớm, không bao giờ khi chúng tôi đi trên chúng!] Có hơn 300.000 chuyến bay với độ trễ tối thiểu là -60 phút và Độ trễ tối đa là 120 phút. Cột khác trong DataFrame là tên của hãng hàng không mà chúng ta có thể sử dụng để so sánh.

Giải pháp số 3 Biểu đồ mật độ

Sơ đồ mật độ bóng mờ

Kết luận

Trực quan hóa dữ liệu một chiều trong Python

Vẽ một biến duy nhất có vẻ như nó sẽ dễ dàng. Chỉ với một chiều, làm thế nào khó có thể hiển thị dữ liệu một cách hiệu quả? Trong một thời gian dài, tôi đã nhận được bằng cách sử dụng biểu đồ đơn giản cho thấy vị trí của các giá trị, sự lây lan của dữ liệu và hình dạng của dữ liệu [bình thường, sai lệch, lưỡng kim, v.v.] Một biểu đồ thất bại và tôi biết rằng đã đến lúc mở rộng kiến ​​thức âm mưu của tôi. Tôi đã tìm thấy một cuốn sách trực tuyến miễn phí tuyệt vời về trực quan hóa dữ liệu và thực hiện một số kỹ thuật. Thay vì giữ mọi thứ tôi học được với bản thân, tôi quyết định nó sẽ hữu ích [cho bản thân và cho người khác] để viết một hướng dẫn Python về biểu đồ và một giải pháp thay thế đã được chứng minh là vô cùng hữu ích, mật độ.

Làm thế nào tôi nghĩ ra 5 phút cho binwidth? Cách duy nhất để tìm ra một binwidth tối ưu là thử nhiều giá trị! Dưới đây là mã để tạo ra cùng một con số trong matplotlib với một loạt các binwidths. Cuối cùng, không có câu trả lời đúng hay sai cho binwidth, nhưng tôi chọn 5 phút vì tôi nghĩ rằng nó đại diện tốt nhất cho phân phối.

Biểu đồ với các binwidths khác nhau

Khi biểu đồ thất bại

Biểu đồ là một cách tuyệt vời để bắt đầu khám phá một biến duy nhất được rút ra từ một danh mục. Tuy nhiên, khi chúng tôi muốn so sánh các phân phối của một biến trên nhiều loại, biểu đồ có vấn đề với khả năng đọc. Ví dụ: nếu chúng ta muốn so sánh các phân phối độ trễ đến giữa các hãng hàng không, một cách tiếp cận không hoạt động tốt là tạo biểu đồ cho mỗi hãng hàng không trên cùng một lô:

Biểu đồ chồng chéo với nhiều hãng hàng không

.

Cốt truyện này không hữu ích lắm! Tất cả các thanh chồng chéo làm cho gần như không thể so sánh giữa các hãng hàng không. Hãy cùng xem xét một vài giải pháp khả thi cho vấn đề phổ biến này.

Giải pháp số 1: Biểu đồ bên cạnh

Thay vì chồng chéo các biểu đồ của hãng hàng không, chúng ta có thể đặt chúng cạnh nhau. Để làm điều này, chúng tôi tạo một danh sách độ trễ đến cho mỗi hãng hàng không, sau đó chuyển điều này vào lệnh gọi chức năng

# Stacked histogram with multiple airlines
plt.hist[[x1, x2, x3, x4, x5], bins = int[180/15], stacked=True,
normed=True, color = colors, label=names]
0 dưới dạng danh sách danh sách. Chúng tôi phải chỉ định các màu khác nhau để sử dụng cho mỗi hãng hàng không và một nhãn để chúng tôi có thể phân biệt chúng. Mã, bao gồm việc tạo danh sách cho mỗi hãng hàng không dưới đây:

Theo mặc định, nếu chúng ta chuyển trong danh sách các danh sách, Matplotlib sẽ đặt các thanh cạnh nhau. Ở đây, tôi đã thay đổi binwidth thành 15 phút vì nếu không, cốt truyện quá lộn xộn, nhưng ngay cả với sửa đổi này, đây không phải là một con số hiệu quả. Có quá nhiều thông tin để xử lý cùng một lúc, các thanh không phù hợp với các nhãn và nó vẫn khó so sánh các phân phối giữa các hãng hàng không. Khi chúng tôi tạo ra một cốt truyện, chúng tôi muốn nó dễ dàng hiểu người xem càng tốt, và con số này thất bại bởi tiêu chí đó! Hãy cùng xem xét một giải pháp tiềm năng thứ hai.

Giải pháp số 2: Thanh xếp chồng

Thay vì vẽ các thanh cho mỗi hãng hàng không cạnh nhau, chúng ta có thể xếp chúng bằng cách chuyển tham số

# Stacked histogram with multiple airlines
plt.hist[[x1, x2, x3, x4, x5], bins = int[180/15], stacked=True,
normed=True, color = colors, label=names]
1 cho cuộc gọi biểu đồ:

# Stacked histogram with multiple airlines
plt.hist[[x1, x2, x3, x4, x5], bins = int[180/15], stacked=True,
normed=True, color = colors, label=names]

Vâng, đó chắc chắn không tốt hơn! Ở đây, mỗi hãng hàng không được đại diện như một phần của toàn bộ cho mỗi thùng, nhưng nó gần như không thể so sánh được. Ví dụ, ở độ trễ từ -15 đến 0 phút, United Air Lines hoặc JetBlue Airlines có kích thước lớn hơn của thanh? Tôi có thể nói với người xem và người xem đã giành chiến thắng. Tôi thường không phải là người ủng hộ các thanh xếp chồng lên nhau vì chúng có thể khó diễn giải [mặc dù có những trường hợp sử dụng như khi trực quan hóa tỷ lệ]. Cả hai giải pháp chúng tôi đã thử sử dụng biểu đồ đều không thành công, và vì vậy, thời gian để chuyển sang biểu đồ mật độ.

Sơ đồ mật độ

Đầu tiên, âm mưu mật độ là gì? Một biểu đồ mật độ là một phiên bản được làm mịn, liên tục của biểu đồ được ước tính từ dữ liệu. Hình thức ước tính phổ biến nhất được gọi là ước tính mật độ hạt nhân. Trong phương pháp này, một đường cong liên tục [hạt nhân] được vẽ tại mọi điểm dữ liệu riêng lẻ và tất cả các đường cong này sau đó được thêm vào với nhau để thực hiện một ước tính mật độ trơn tru duy nhất. Hạt nhân thường được sử dụng là Gaussian [tạo ra đường cong chuông Gaussian tại mỗi điểm dữ liệu]. Nếu, giống như tôi, bạn thấy mô tả đó hơi khó hiểu, hãy xem cốt truyện sau:

Ước tính mật độ hạt nhân [nguồn]

Ở đây, mỗi đường thẳng đứng màu đen nhỏ trên trục X đại diện cho một điểm dữ liệu. Các hạt nhân riêng lẻ [Gaussian trong ví dụ này] được hiển thị được vẽ theo các đường màu đỏ đứt nét phía trên mỗi điểm. Đường cong màu xanh rắn được tạo ra bằng cách tổng hợp các Gaussian riêng lẻ và tạo thành biểu đồ mật độ tổng thể.

Trục X là giá trị của biến giống như trong biểu đồ, nhưng chính xác thì trục y đại diện cho điều gì? Trục Y trong biểu đồ mật độ là hàm mật độ xác suất để ước tính mật độ hạt nhân. Tuy nhiên, chúng ta cần cẩn thận để xác định đây là mật độ xác suất và không phải là xác suất. Sự khác biệt là mật độ xác suất là xác suất trên mỗi đơn vị trên trục x. Để chuyển đổi thành xác suất thực tế, chúng ta cần tìm khu vực dưới đường cong cho một khoảng cụ thể trên trục x. Một cách khó hiểu, bởi vì đây là mật độ xác suất và không phải là xác suất, trục y có thể lấy các giá trị lớn hơn một. Yêu cầu duy nhất của biểu đồ mật độ là tổng diện tích dưới đường cong tích hợp thành một. Tôi thường có xu hướng nghĩ về trục y trên một biểu đồ mật độ chỉ là một giá trị chỉ để so sánh tương đối giữa các loại khác nhau.

Các lô mật độ trong Seaborn

Để tạo các lô mật độ trong Seaborn, chúng ta có thể sử dụng hàm distplot hoặc

# Stacked histogram with multiple airlines
plt.hist[[x1, x2, x3, x4, x5], bins = int[180/15], stacked=True,
normed=True, color = colors, label=names]
1. Tôi sẽ tiếp tục sử dụng chức năng distplot vì nó cho phép chúng tôi thực hiện nhiều bản phân phối với một cuộc gọi chức năng. Ví dụ: chúng ta có thể tạo ra một biểu đồ mật độ hiển thị tất cả sự chậm trễ đến trên đầu biểu đồ tương ứng:
# Density Plot and Histogram of all arrival delays
sns.distplot[flights['arr_delay'], hist=True, kde=True,
bins=int[180/5], color = 'darkblue',
hist_kws={'edgecolor':'black'},
kde_kws={'linewidth': 4}]
Density Plot and Histogram using seaborn

The curve shows the density plot which is essentially a smooth version of the histogram. The y-axis is in terms of density, and the histogram is normalized by default so that it has the same y-scale as the density plot.

Analogous to the binwidth of a histogram, a density plot has a parameter called the bandwidththat changes the individual kernels and significantly affects the final result of the plot. The plotting library will choose a reasonable value of the bandwidth for us [by default using the ‘scott’ estimate], and unlike the binwidth of a histogram, I usually use the default bandwidth. However, we can look at using different bandwidths to see if there is a better choice. In the plot, ‘scott’ is the default, which looks like the best option.bandwidththat changes the individual kernels and significantly affects the final result of the plot. The plotting library will choose a reasonable value of the bandwidth for us [by default using the ‘scott’ estimate], and unlike the binwidth of a histogram, I usually use the default bandwidth. However, we can look at using different bandwidths to see if there is a better choice. In the plot, ‘scott’ is the default, which looks like the best option.

Density Plot Showing different Bandwidths

Notice that a wider bandwidth results in more smoothing of the distribution. We also see that even though we limited our data to -60 to 120 minutes, the density plot extends beyond these limits. This is one potential issue with a density plot: because it calculates a distribution at each data point, it can generate data that falls outside the bounds of the original data. This might mean that we end up with impossible values on the x-axis that were never present in the original data! As a note, we can also change the kernel, which changes the distribution drawn at each data point and thus the overall distribution. However, for most applications, the default kernel, Gaussian, and the default bandwidth estimation work very well.

Solution #3 Density Plot

Now that we understand how a density plot is made and what it represents, let’s see how it can solve our problem of visualizing the arrival delays of multiple airlines. To show the distributions on the same plot, we can iterate through the airlines, each time calling distplot with the kernel density estimate set to True and the histogram set to False. The code to draw the density plot with multiple airlines is below:

Density Plot with Multiple Airlines

Finally, we have arrived at an effective solution! With the density plot, we can easily make comparisons between airlines because the plot is less cluttered. Now that we finally have the plot we want, we come to the conclusion that all these airlines have nearly identical arrival delay distributions! However, there are other airlines in the dataset, and we can plot one that is a little different to illustrate another optional parameter for density plots, shading the graph.

Shaded Density Plots

Filling in the density plot can help us to distinguish between overlapping distributions. Although this is not always a good approach, it can help to emphasize the difference between distributions. To shade the density plots, we pass in

# Stacked histogram with multiple airlines
plt.hist[[x1, x2, x3, x4, x5], bins = int[180/15], stacked=True,
normed=True, color = colors, label=names]
4 to the
# Stacked histogram with multiple airlines
plt.hist[[x1, x2, x3, x4, x5], bins = int[180/15], stacked=True,
normed=True, color = colors, label=names]
5 argument in the distplot call.
sns.distplot[subset['arr_delay'], hist = False, kde = True,
kde_kws = {'shade': True, 'linewidth': 3},
label = airline]
Shaded Density Plot

Whether or not to shade the plot is, like other plotting options, a question that depends on the problem! For this graph, I think it makes sense because the shading helps us distinguish the plots in the regions where they overlap. Now, we finally have some useful information: Alaska Airlines flights tend to be earlier more often than United Airlines. The next time you have the option, you know which airline to choose!

Rug Plots

If you want to show every value in a distribution and not just the smoothed density, you can add a rug plot. This shows every single data point on the x-axis, allowing us to visualize all of the actual values. The benefit of using seaborn’s distplot is that we can add the rug plot with a single parameter call of

# Stacked histogram with multiple airlines
plt.hist[[x1, x2, x3, x4, x5], bins = int[180/15], stacked=True,
normed=True, color = colors, label=names]
8 [with some formatting as well].Density Plot with Rug Plot for Alaska Airlines

With many data points the rug plot can become overcrowded, but for some datasets, it can be helpful to view every data point. The rug plot also lets us see how the density plot “creates” data where none exists because it makes a kernel distribution at each data point. These distributions can leak over the range of the original data and give the impression that Alaska Airlines has delays that are both shorter and longer than actually recorded. We need to be careful about this artifact of density plots and point it out to viewers!

Kết luận

Bài đăng này hy vọng đã cung cấp cho bạn một loạt các tùy chọn để trực quan hóa một biến duy nhất từ ​​một hoặc nhiều loại. Thậm chí còn có nhiều lô đơn biến [biến đơn] hơn, chúng ta có thể thực hiện như các ô mật độ tích lũy theo kinh nghiệm và các lô số lượng tử, nhưng bây giờ chúng ta sẽ để nó ở biểu đồ và sơ đồ mật độ [và các lô thảm cũng vậy!]. Don Tiết lo lắng nếu các tùy chọn có vẻ quá sức: với thực tiễn, việc đưa ra lựa chọn tốt sẽ trở nên dễ dàng hơn và bạn luôn có thể yêu cầu giúp đỡ nếu cần. Hơn nữa, thường thì có một sự lựa chọn tối ưu và quyết định của bên phải sẽ đi vào sở thích và các mục tiêu của hình dung. Điều tốt là, bất kể bạn muốn thực hiện cốt truyện nào, sẽ có một cách để làm điều đó trong Python! Trực quan hóa là một phương tiện hiệu quả để truyền đạt kết quả và biết tất cả các tùy chọn có sẵn cho phép chúng tôi chọn đúng con số cho dữ liệu của chúng tôi.

Tôma hoan nghênh phản hồi và phê Bình Mang Tính Xây dựng Vàó Th

Lào thế nào để bạn vẽ phân phối xác suất trong python?

Trước tiên, bạn tạo một ax ax ax. Ở đNy Bạn cũng đó là thể ôn Ở đây, bạn có thể chỉ định số lượng thùng trong biểu đồ, chỉ định màu của biểu đồ và chỉ định tùy chọn sơ đồ mật độ với tùy chọn KDE và lineDwidth với hist_kws. Bạn cũng có thể đặt nhãn cho trục X và Y bằng các đối số XLabel và YLabel.create a plot object ax . Here, you can specify the number of bins in the histogram, specify the color of the histogram and specify density plot option with kde and linewidth option with hist_kws . You can also set labels for x and y axis using the xlabel and ylabel arguments.

Lào thế nào để bạn vẽ đồ thị phân phối xácu suất?

Chọn biểu Đồ> Bấm ok. Từ Phân ph, Chọn Bình thường. Trong lợn bình, loại 100 ....

NHấp Vào Tab Khu Vực Bóng Mờ ..

Trong xác ĐịNH khu vực bóng mờ Theo, chọn x value ..

NHấp vào giữa ..

Trong x value 1, loại 115 ..

Trong x value 2, loại 135 ..

Bấm ok ..

Lào thế nào để bạn vẽ một phân phối dữ liệu?

Vẽ Sơ Đồ Phân Phối Dữ Liệu ...

Mở tệp hướng dẫn \ tốc Độ ánH sáng. xlsx ..

Nhấp vào một ô trong bộ dữ liệu ..

Trênn Tab Ribbon Phân Tích, Trong Nhóm Phân Tích thống Kê, Nhấp Vào Phân Phối Và Sau Đào Nhấ Hốt tức

Trong hộp Danh sách biến y, chọn tốc Độ ..

NHấp vào tính toán ..

Bài Viết Liên Quan

Chủ Đề