Hướng dẫn plot confidence interval python matplotlib - vẽ khoảng tin cậy python matplotlib

Đối với một khoảng tin cậy giữa các danh mục, dựa trên những gì Omer Sagi đề xuất, hãy nói nếu chúng ta có khung dữ liệu gấu trúc với một cột chứa các danh mục (như category 1, category 2category 3) và một loại khác có dữ liệu liên tục (như một loại rating9999) ), đây là một chức năng sử dụng

cat = ['a'] * 10 + ['b'] * 10 + ['c'] * 10
a = np.linspace(0.1, 5.0, 10)
b = np.linspace(0.5, 7.0, 10)
c = np.linspace(7.5, 20.0, 10)
rating = np.concatenate([a, b, c])

dat_dict = dict()
dat_dict['cat'] = cat
dat_dict['rating'] = rating
test_dat = pd.DataFrame(dat_dict)
0 và
cat = ['a'] * 10 + ['b'] * 10 + ['c'] * 10
a = np.linspace(0.1, 5.0, 10)
b = np.linspace(0.5, 7.0, 10)
c = np.linspace(7.5, 20.0, 10)
rating = np.concatenate([a, b, c])

dat_dict = dict()
dat_dict['cat'] = cat
dat_dict['rating'] = rating
test_dat = pd.DataFrame(dat_dict)
1 để vẽ sự khác biệt theo phương tiện giữa các nhóm với khoảng tin cậy:

import pandas as pd
import numpy as np
import scipy.stats as st

def plot_diff_in_means(data: pd.DataFrame, col1: str, col2: str):
    """
    Given data, plots difference in means with confidence intervals across groups
    col1: categorical data with groups
    col2: continuous data for the means
    """
    n = data.groupby(col1)[col2].count()
    # n contains a pd.Series with sample size for each category

    cat = list(data.groupby(col1, as_index=False)[col2].count()[col1])
    # 'cat' has the names of the categories, like 'category 1', 'category 2'

    mean = data.groupby(col1)[col2].agg('mean')
    # The average value of col2 across the categories

    std = data.groupby(col1)[col2].agg(np.std)
    se = std / np.sqrt(n)
    # Standard deviation and standard error

    lower = st.t.interval(alpha = 0.95, df=n-1, loc = mean, scale = se)[0]
    upper = st.t.interval(alpha = 0.95, df =n-1, loc = mean, scale = se)[1]
    # Calculates the upper and lower bounds using SciPy

    for upper, mean, lower, y in zip(upper, mean, lower, cat):
        plt.plot((lower, mean, upper), (y, y, y), 'b.-')
        # for 'b.-': 'b' means 'blue', '.' means dot, '-' means solid line
    plt.yticks(
        range(len(n)),
        list(data.groupby(col1, as_index = False)[col2].count()[col1])
        )

Cho dữ liệu giả thuyết:

cat = ['a'] * 10 + ['b'] * 10 + ['c'] * 10
a = np.linspace(0.1, 5.0, 10)
b = np.linspace(0.5, 7.0, 10)
c = np.linspace(7.5, 20.0, 10)
rating = np.concatenate([a, b, c])

dat_dict = dict()
dat_dict['cat'] = cat
dat_dict['rating'] = rating
test_dat = pd.DataFrame(dat_dict)

Điều này trông như thế này (nhưng tất nhiên là với nhiều hàng hơn):

con mèoXếp hạng
một0.10000
một0.64444
b0.50000
b0.12222
c7.50000
c8.88889

Chúng ta có thể sử dụng chức năng để vẽ một sự khác biệt về phương tiện với khoảng tin cậy:

plot_diff_in_means(data = test_dat, col1 = 'cat', col2 = 'rating')

Điều này mang lại cho chúng ta biểu đồ sau:

Hướng dẫn plot confidence interval python matplotlib - vẽ khoảng tin cậy python matplotlib

Công thức vấn đề: Làm thế nào để vẽ khoảng tin cậy trong Python? How to plot the confidence interval in Python?

Để vẽ một khoảng thời gian đầy với chiều rộng

cat = ['a'] * 10 + ['b'] * 10 + ['c'] * 10
a = np.linspace(0.1, 5.0, 10)
b = np.linspace(0.5, 7.0, 10)
c = np.linspace(7.5, 20.0, 10)
rating = np.concatenate([a, b, c])

dat_dict = dict()
dat_dict['cat'] = cat
dat_dict['rating'] = rating
test_dat = pd.DataFrame(dat_dict)
2 và các ranh giới khoảng từ
cat = ['a'] * 10 + ['b'] * 10 + ['c'] * 10
a = np.linspace(0.1, 5.0, 10)
b = np.linspace(0.5, 7.0, 10)
c = np.linspace(7.5, 20.0, 10)
rating = np.concatenate([a, b, c])

dat_dict = dict()
dat_dict['cat'] = cat
dat_dict['rating'] = rating
test_dat = pd.DataFrame(dat_dict)
3 đến
cat = ['a'] * 10 + ['b'] * 10 + ['c'] * 10
a = np.linspace(0.1, 5.0, 10)
b = np.linspace(0.5, 7.0, 10)
c = np.linspace(7.5, 20.0, 10)
rating = np.concatenate([a, b, c])

dat_dict = dict()
dat_dict['cat'] = cat
dat_dict['rating'] = rating
test_dat = pd.DataFrame(dat_dict)
4 xung quanh các giá trị hàm
cat = ['a'] * 10 + ['b'] * 10 + ['c'] * 10
a = np.linspace(0.1, 5.0, 10)
b = np.linspace(0.5, 7.0, 10)
c = np.linspace(7.5, 20.0, 10)
rating = np.concatenate([a, b, c])

dat_dict = dict()
dat_dict['cat'] = cat
dat_dict['rating'] = rating
test_dat = pd.DataFrame(dat_dict)
5, hãy sử dụng lệnh gọi hàm
cat = ['a'] * 10 + ['b'] * 10 + ['c'] * 10
a = np.linspace(0.1, 5.0, 10)
b = np.linspace(0.5, 7.0, 10)
c = np.linspace(7.5, 20.0, 10)
rating = np.concatenate([a, b, c])

dat_dict = dict()
dat_dict['cat'] = cat
dat_dict['rating'] = rating
test_dat = pd.DataFrame(dat_dict)
6 trên mô -đun Matplotlib
cat = ['a'] * 10 + ['b'] * 10 + ['c'] * 10
a = np.linspace(0.1, 5.0, 10)
b = np.linspace(0.5, 7.0, 10)
c = np.linspace(7.5, 20.0, 10)
rating = np.concatenate([a, b, c])

dat_dict = dict()
dat_dict['cat'] = cat
dat_dict['rating'] = rating
test_dat = pd.DataFrame(dat_dict)
7.

  • Đối số đầu tiên
    cat = ['a'] * 10 + ['b'] * 10 + ['c'] * 10
    a = np.linspace(0.1, 5.0, 10)
    b = np.linspace(0.5, 7.0, 10)
    c = np.linspace(7.5, 20.0, 10)
    rating = np.concatenate([a, b, c])
    
    dat_dict = dict()
    dat_dict['cat'] = cat
    dat_dict['rating'] = rating
    test_dat = pd.DataFrame(dat_dict)
    
    8 xác định các giá trị
    cat = ['a'] * 10 + ['b'] * 10 + ['c'] * 10
    a = np.linspace(0.1, 5.0, 10)
    b = np.linspace(0.5, 7.0, 10)
    c = np.linspace(7.5, 20.0, 10)
    rating = np.concatenate([a, b, c])
    
    dat_dict = dict()
    dat_dict['cat'] = cat
    dat_dict['rating'] = rating
    test_dat = pd.DataFrame(dat_dict)
    
    8 của đường cong được điền. Bạn có thể sử dụng các giá trị tương tự như cho cốt truyện gốc.
  • Đối số thứ hai
    cat = ['a'] * 10 + ['b'] * 10 + ['c'] * 10
    a = np.linspace(0.1, 5.0, 10)
    b = np.linspace(0.5, 7.0, 10)
    c = np.linspace(7.5, 20.0, 10)
    rating = np.concatenate([a, b, c])
    
    dat_dict = dict()
    dat_dict['cat'] = cat
    dat_dict['rating'] = rating
    test_dat = pd.DataFrame(dat_dict)
    
    3 xác định ranh giới khoảng thời gian thấp hơn.
  • Đối số thứ ba
    cat = ['a'] * 10 + ['b'] * 10 + ['c'] * 10
    a = np.linspace(0.1, 5.0, 10)
    b = np.linspace(0.5, 7.0, 10)
    c = np.linspace(7.5, 20.0, 10)
    rating = np.concatenate([a, b, c])
    
    dat_dict = dict()
    dat_dict['cat'] = cat
    dat_dict['rating'] = rating
    test_dat = pd.DataFrame(dat_dict)
    
    4 xác định ranh giới khoảng trên.
  • Đối số thứ tư
    plot_diff_in_means(data = test_dat, col1 = 'cat', col2 = 'rating')
    
    2 xác định màu của khoảng bóng mờ.
  • Đối số thứ năm
    plot_diff_in_means(data = test_dat, col1 = 'cat', col2 = 'rating')
    
    3 xác định độ trong suốt để cho phép các khoảng thời gian phân lớp.
from matplotlib import pyplot as plt
import numpy as np

# Create the data set
x = np.arange(0, 10, 0.05)
y = np.sin(x)

 Define the confidence interval
ci = 0.1 * np.std(y) / np.mean(y)

# Plot the sinus function
plt.plot(x, y)

# Plot the confidence interval
plt.fill_between(x, (y-ci), (y+ci), color='blue', alpha=0.1)

plt.show()
You cũng có thể vẽ hai khoảng tin cậy phân lớp bằng cách gọi hàm
plot_diff_in_means(data = test_dat, col1 = 'cat', col2 = 'rating')
4 hai lần với các ranh giới khoảng khác nhau:
Hướng dẫn plot confidence interval python matplotlib - vẽ khoảng tin cậy python matplotlib

You can also plot two layered confidence intervals by calling the

plot_diff_in_means(data = test_dat, col1 = 'cat', col2 = 'rating')
4 function twice with different interval boundaries:

from matplotlib import pyplot as plt
import numpy as np

# Create the data set
x = np.arange(0, 10, 0.05)
y = np.sin(x)

# Define the confidence interval
ci = 0.1 * np.std(y) / np.mean(y)

# Plot the sinus function
plt.plot(x, y)

# Plot the confidence interval
plt.fill_between(x, (y-ci), (y+ci), color='blue', alpha=0.1)
plt.fill_between(x, (y-2*ci), (y+2*ci), color='yellow', alpha=.1)

plt.show()

Biểu đồ kết quả cho thấy hai khoảng tin cậy tính bằng màu xanh và vàng:

Hướng dẫn plot confidence interval python matplotlib - vẽ khoảng tin cậy python matplotlib

Bạn có thể chạy nó trong sổ ghi chép Jupyter tương tác của chúng tôi:

Hướng dẫn plot confidence interval python matplotlib - vẽ khoảng tin cậy python matplotlib

Bạn cũng có thể sử dụng chức năng regplot () của Seaborn, thực hiện nó cho bạn, được cung cấp một bộ dữ liệu rải rác của các bộ dữ liệu (x, y).

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

#create some random data
x = np.random.randint(1, 10, 20)
y = x + np.random.normal(0, 1, 20)

#create regplot
ax = sns.regplot(x, y)

Điều này dẫn đến đầu ra thuận tiện:

Hướng dẫn plot confidence interval python matplotlib - vẽ khoảng tin cậy python matplotlib

Lưu ý rằng khoảng tin cậy 95% được tính toán tự động. Một đối số CI thứ ba thay thế trong

plot_diff_in_means(data = test_dat, col1 = 'cat', col2 = 'rating')
5 cho phép bạn xác định khoảng tin cậy khác (ví dụ: 80%).


Để tăng cường các kỹ năng của bạn về Python, Matplotlib và Khoa học dữ liệu, hãy tham gia Học viện Email miễn phí của chúng tôi và tải xuống các tờ Cheat Python của bạn ngay bây giờ!

Resources::

  • https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.fill_between.html
  • https://stackoverflow.com/questions/59747313/how-to-plot-confidence-interval-in-python
  • https://www.statology.org/plot-confidence-interval-python/

Hướng dẫn plot confidence interval python matplotlib - vẽ khoảng tin cậy python matplotlib

Trong khi làm việc như một nhà nghiên cứu trong các hệ thống phân tán, Tiến sĩ Christian Mayer đã tìm thấy tình yêu của mình đối với việc dạy các sinh viên khoa học máy tính.

Để giúp học sinh đạt được thành công cao hơn của Python, ông đã thành lập trang web giáo dục chương trình Finxter.com. Ông là tác giả của cuốn sách lập trình phổ biến Python Oneer (Nostarch 2020), đồng tác giả của loạt sách Break Break Python, những cuốn sách tự xuất bản, người đam mê khoa học máy tính, freelancer và chủ sở hữu của một trong 10 blog Python lớn nhất trên toàn thế giới.

Niềm đam mê của ông là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ tăng cường các kỹ năng của họ. Bạn có thể tham gia học viện email miễn phí của anh ấy ở đây.

95% trong khoảng tin cậy là gì?

Với khoảng tin cậy 95 phần trăm, bạn có 5 % cơ hội sai. Với khoảng tin cậy 90 phần trăm, bạn có 10 phần trăm cơ hội sai. Khoảng tin cậy 99 phần trăm sẽ rộng hơn khoảng tin cậy 95 phần trăm (ví dụ: cộng hoặc trừ 4,5 phần trăm thay vì 3,5 phần trăm).you have a 5 percent chance of being wrong. With a 90 percent confidence interval, you have a 10 percent chance of being wrong. A 99 percent confidence interval would be wider than a 95 percent confidence interval (for example, plus or minus 4.5 percent instead of 3.5 percent).

Khi chúng ta vẽ sơ đồ khoảng tin cậy, chúng ta có thể sử dụng chúng?

Khi chúng ta vẽ sơ đồ khoảng tin cậy, chúng ta có thể sử dụng chúng?Nó được sử dụng khi dữ liệu liên tục.Thay vì vẽ sơ đồ điểm dữ liệu riêng lẻ, một biểu đồ khoảng thời gian hiển thị khoảng tin cậy cho giá trị trung bình của dữ liệu.Thông thường, khoảng tin cậy 95% được sử dụng nhưng bất kỳ mức độ tin cậy nào khác cũng có thể được chỉ định.when the data is continuous. Instead of plotting the individual data point, an interval plot shows the confidence interval for the mean of the data. Typically, a 95% confidence interval is used but any other confidence level can be specified as well.

Khoảng tin cậy trong đồ thị là gì?

Biểu đồ khoảng tin cậy tương tự như biểu đồ thanh nhưng cũng bao gồm khoảng tin cậy hoặc thanh lỗi được đặt chồng lên mỗi thanh để hiển thị giới hạn độ tin cậy 5% và 95%.Một biểu đồ khoảng tin cậy có sẵn cho kết quả MGPS hai chiều và kết quả hồi quy logistic.error bar superimposed on each bar to show the 5% and 95% confidence limits. A confidence interval graph is available for two-dimensional MGPS results and logistic regression results.

Làm thế nào để Seaborn tính toán khoảng tin cậy?

Đó là về matplotlib;Seaborn sử dụng bootstrapping để tính toán khoảng tin cậy 95% của dữ liệu.Về bản chất, đó là một phương pháp lặp lại nhiều lần từ một mẫu dân số, đưa ra ước tính tốt về giá trị trung bình thực sự và độ tin cậy 95%.repeatedly resampling from a sample of the population, which gives good estimates of the true mean and 95% confidence.