Python:滚动计算置信区间

Posted

技术标签:

【中文标题】Python:滚动计算置信区间【英文标题】:Python: Calculate confidence interval on a rolling basis 【发布时间】:2022-01-22 12:09:18 【问题描述】:

我有以下数据框:

df = pd.DataFrame(
'a': [0.1, 0.5, 0.1, 0.3],
'b': [0.2, 0.4, 0.2, 0.2],
'c': [0.3, 0.2, 0.4, 0.1],
'd': [0.1, 0.1, 0.1, 0.7],
'e': [0.2, 0.1, 0.3, 0.4],
'f': [0.7, 0.1, 0.1, 0.1]
)

我想在滚动的基础上获得每列的平均值(比如说 rolling(1).mean()),然后获得每个条目的 95% 置信区间 CI = x +- z*s/sqrt( n),其中 x 是滚动平均值,z 是置信水平值,s 是滚动标准差(比如 rolling(1).stdev),n 是列中的条目数。

这可以在没有循环的情况下以 Python 方式完成吗?

谢谢。

【问题讨论】:

rolling(1).mean 只是数字本身。你能提供你预期的输出吗? 嗯,我想要的结果是每个条目的置信区间数据框。这可能吗? 【参考方案1】:

IIUC,试试:

WINDOW = 2
lower_bound = df.rolling(WINDOW).mean() - 1.96*df.rolling(WINDOW).std()
upper_bound = df.rolling(WINDOW).mean() + 1.96*df.rolling(WINDOW).std()
output = lower_bound.join(upper_bound, lsuffix="_lower", rsuffix="_upper").sort_index(axis=1)

>>> output
    a_lower   a_upper   b_lower  ...   e_upper   f_lower   f_upper
0       NaN       NaN       NaN  ...       NaN       NaN       NaN
1 -0.254372  0.854372  0.022814  ...  0.288593 -0.431558  1.231558
2 -0.254372  0.854372  0.022814  ...  0.477186  0.100000  0.100000
3 -0.077186  0.477186  0.200000  ...  0.488593  0.100000  0.100000

[4 rows x 12 columns]

【讨论】:

以上是关于Python:滚动计算置信区间的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Python 计算差异差异方法的置信区间?

如何在 Python 中绘制置信区间?

置信区间(Confidence Intervals)是什么?如何计算置信区间?置信区间的两种计算方法是什么?二值样本置信区间如何计算?如何基于bootstrap抽样进行置信区间计算?

Python数据框中的置信区间

Python中LOWESS的置信区间

AMOS计算Bootstrap,怎么看平均间接效应和置信区间