【问题标题】:Calculate confidence interval for each row in a pandas DataFrame计算 pandas DataFrame 中每一行的置信区间
【发布时间】:2021-07-26 22:22:34
【问题描述】:

我有一个 pandas dataframe,其中每一列都是对时间序列的预测,我想计算一个平均值和它周围的置信区间,以便我可以绘制它。现在我在每一行上循环,计算mean、min、 max,然后用fill_between(min)绘制mean ,max),但我认为这不是正确的方法。 dataframe 看起来像:

Pred1 Pred2 Pred3
x1 x1 x1
x2 x2 x2
x3 x3 x3

除非它会更大。大约 50 列和 300 行。知道如何有效地做到这一点吗?必须在许多类似的表上执行此操作。

【问题讨论】:

    标签: python pandas statistics confidence-interval


    【解决方案1】:

    IIUC 您可以尝试使用meanminmax 沿列(轴=1)

    ax = df.mean(axis=1).plot()
    ax.fill_between(df.index, df.min(axis=1), df.max(axis=1), alpha=0.2)
    

    【讨论】:

    • 感谢您的回答,但我不确定我是否正确理解置信区间。我有点像你回答的那样做,但是使用最小值和最大值感觉不对。似乎受到异常值的影响很大,所以认为这可能是另一种方式。
    • @sjokkopudd 如果您有异常值,您可以考虑使用分位数代替df.min(axis=1),您可以使用df.quantile(0.1, axis=1),替换为 0 到 0.5 之间的任何值,而不是 min 和 0.5 到 1。对于 max :) 我的回答是基于您对 fill_between 的解释,认为 ot 正是您的预期输出
    • 谢谢,这正是我要找的
    • @sjokkopudd 请注意,如果您的行是独立的,因此实际上不需要绘制为一条线,您也可以查看df.T.boxplot() 并查看文档以查看真正绘制的内容
    猜你喜欢
    • 2019-10-18
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    • 2013-12-23
    相关资源
    最近更新 更多