Python Seaborn: các thanh lỗi được tính trong barplots như thế nào?


9

Tôi đang sử dụng thư viện seaborn để tạo ra các lô bar trong python. Tôi đang tự hỏi những số liệu thống kê nào được sử dụng để tính toán các thanh lỗi, nhưng không thể tìm thấy bất kỳ tài liệu tham khảo nào về tài liệu này trong tài liệu về barplot của seaborn .

Tôi biết các giá trị thanh được tính dựa trên giá trị trung bình trong trường hợp của tôi (tùy chọn mặc định) và tôi giả sử các thanh lỗi được tính dựa trên khoảng tin cậy 95% phân phối Bình thường, nhưng tôi muốn chắc chắn.

nhập mô tả hình ảnh ở đây


Chỉ là một coment. Tôi mới bắt đầu học seaborn và có cùng một câu hỏi. Thật không may, tôi không thể đưa ra nhiều câu trả lời duy nhất cho đến khi sử dụng thử nghiệm nào (có lẽ đó là lỗi của tôi). Bây giờ cho câu hỏi của bạn, tôi đoán thử nghiệm phụ thuộc vào công cụ ước tính là gì và những gì bạn đã biết trước. Ví dụ, người ta có thể sử dụng 95% CI với phép thử Z cho tính quy tắc để sử dụng giá trị trung bình mẫu để ước tính trung bình dân số, nhưng trong trường hợp này, std dân số cần phải được biết trước. Tuy nhiên, nếu không biết, thì bạn đã sử dụng thử nghiệm t, sử dụng phân phối . t:=x¯μs/(n1)
Mathmath

Câu trả lời:


10

Nhìn vào nguồn (seaborn / seaborn / c sortical.py, dòng 2166), chúng tôi thấy

def barplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None,
        estimator=np.mean, ci=95, n_boot=1000, units=None,
        orient=None, color=None, palette=None, saturation=.75,
        errcolor=".26", ax=None, **kwargs):

Vì vậy, giá trị mặc định là, thực sự, .95, như bạn đoán.

EDIT: Cách tính CI: barplotcác cuộc gọi utils.ci()

seaborn / seaborn / utils.py

def ci(a, which=95, axis=None):
    """Return a percentile range from an array of values."""
    p = 50 - which / 2, 50 + which / 2
    return percentiles(a, p, axis)

và cuộc gọi percentiles()này đang gọi:

def percentiles(a, pcts, axis=None):
    """Like scoreatpercentile but can take and return array of percentiles.
    Parameters
    ----------
    a : array
        data
    pcts : sequence of percentile values
        percentile or percentiles to find score at
    axis : int or None
        if not None, computes scores over this axis
    Returns
    -------
    scores: array
        array of scores at requested percentiles
        first dimension is length of object passed to ``pcts``
    """
    scores = []
    try:
        n = len(pcts)
    except TypeError:
        pcts = [pcts]
        n = 0
    for i, p in enumerate(pcts):
        if axis is None:
            score = stats.scoreatpercentile(a.ravel(), p)
        else:
            score = np.apply_along_axis(stats.scoreatpercentile, axis, a, p)
        scores.append(score)
    scores = np.asarray(scores)
    if not n:
        scores = scores.squeeze()
    return scores

axis=Nonevậy score = stats.scoreatpercentile(a.ravel(), p)đó là

scipy.stats.scoreatpercentile(a, per, limit=(), interpolation_method='fraction', axis=None)[source]
Calculate the score at a given percentile of the input sequence.

Ví dụ: điểm ở per = 50 là trung vị. Nếu lượng tử mong muốn nằm giữa hai điểm dữ liệu, chúng ta nội suy giữa chúng, theo giá trị của phép nội suy. Nếu giới hạn tham số được cung cấp, nó sẽ là một tuple (dưới, trên) của hai giá trị.

Parameters: 
a : array_like
A 1-D array of values from which to extract score.
per : array_like
Percentile(s) at which to extract score. Values should be in range [0,100].
limit : tuple, optional
Tuple of two scalars, the lower and upper limits within which to compute the percentile. Values of a outside this (closed) interval will be ignored.
interpolation_method : {‘fraction’, lower’, higher’}, optional
This optional parameter specifies the interpolation method to use, when the desired quantile lies between two data points i and j
fraction: i + (j - i) * fraction where fraction is the fractional part of the index surrounded by i and j.
lower: i.
higher: j.
axis : int, optional
Axis along which the percentiles are computed. Default is None. If None, compute over the whole array a.
Returns:    
score : float or ndarray
Score at percentile(s).

và tìm kiếm trong nguồn cho scipy.stats.stats.py chúng ta thấy chữ ký

def scoreatpercentile(a, per, limit=(), interpolation_method='fraction',
                      axis=None):

vì vậy, seaboard gọi nó mà không có param cho interpolationnó đang sử dụng fraction.

Bên cạnh đó, có một cảnh báo về sự lỗi thời trong tương lai stats.scoreatpercentile(), cụ thể là

Chức năng này sẽ trở nên lỗi thời trong tương lai. Đối với Numpy 1.9 trở lên, numpy.percentile cung cấp tất cả các chức năng mà scoreatpercentile cung cấp. Và nó nhanh hơn đáng kể. Do đó, nên sử dụng numpy.percentile cho người dùng có numpy> = 1.9.


2
Vâng, thực sự, nhưng câu hỏi của tôi là về kiểm tra thống kê nào được sử dụng. Cảm ơn
Michael Hooreman

Tài liệu @Shawn nói rằng họ sử dụng bootstrapping và tôi nghĩ đó là sự thật: github.com/mwaskom/seaborn/blob/master/seaborn/ (
Direvius 8/8/2016
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.