You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python计算DataFrame每行置信区间并计算、对比区间宽度

错误原因

你写的代码执行失败的核心原因是:df.apply(..., axis=1)返回的是元素为置信区间元组的Series对象,你直接加[0]/[1]取的是整个Series的第0行、第1行元素,而不是每行元组内部的上下限值。

正确实现方法

优先推荐复用你已经计算好的CI列,不需要重复执行置信区间计算,性能更高:

# 直接提取每行CI元组的上下限做差,保留2位小数
df['width'] = df['CI'].apply(lambda x: round(x[1] - x[0], 2))

如果你不想提前生成CI列,想要一步计算得到宽度,也可以用以下写法:

df['width'] = df.apply(
    lambda row: round(
        stats.t.interval(0.95, len(row)-1, loc=np.mean(row), scale=stats.sem(row))[1] 
        - stats.t.interval(0.95, len(row)-1, loc=np.mean(row), scale=stats.sem(row))[0],
        2
    ), 
    axis=1
)

补充说明

你当前代码中置信区间的自由度用的是len(df)-1(即DataFrame总行数减1),如果你是对每行的多个数值计算置信区间,统计上正确的自由度应该是每行的样本量减1,也就是len(row)-1,可以根据你的实际统计场景调整参数。

内容的提问来源于stack exchange,提问作者Niam45

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 02:15:07