gpt4 book ai didi

python - 从 Seaborn regplot 中提取均值和置信区间

转载 作者:太空宇宙 更新时间:2023-11-04 02:05:13 36 4
gpt4 key购买 nike

鉴于 regplot 计算间隔和 bootstraps 的均值以找到每个 bin 的置信区间,必须手动重新计算它们以进行进一步研究似乎是一种浪费,因此:

问题:如何访问正则图的计算均值和置信区间?

示例:此代码生成了带有 CI 的 bin 均值的漂亮图:

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

# just some random numbers to get started
fig, ax = plt.subplots()
x = np.random.uniform(-2, 2, 1000)
y = np.random.normal(x**2, np.abs(x) + 1)

# Manual binning to retain control
binwidth=4./10
x_bins=np.arange(-2+binwidth/2,2,binwidth)
sns.regplot(x=x, y=y, x_bins=x_bins, fit_reg=None)
plt.show()

结果: Regplot showing binned data w. CIs

并不是说逐个 bin 计算均值并不容易,而是 CI 是使用随机数计算的。如果能够访问与绘制的数字完全相同的数字会很好,那么我如何访问它们呢?一定有某种 get_* 方法我忽略了。

最佳答案

设置

在您的 MWE 中设置:

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

# Random numbers for plotting
x = np.random.uniform(-2, 2, 1000)
y = np.random.normal(x**2, np.abs(x) + 1)

# Manual binning to retain control
binwidth = 4 / 10
x_bins = np.arange(binwidth/2 - 2, 2, binwidth)
sns.regplot(x=x, y=y, x_bins=x_bins, fit_reg=None)

这给出了我们的出发点: OP's MWE

提取置信区间

我们可以通过遍历绘制的线并提取最小值和最大值(分别对应于上限和下限 CI)来提取置信区间:

ax = plt.gca()
lower = [line.get_ydata().min() for line in ax.lines]
upper = [line.get_ydata().max() for line in ax.lines]

作为健全性检查,我们可以在原始数据之上绘制这些提取的点(此处用红色叉号显示):

plt.scatter(x_bins, lower, marker='x', color='C3', zorder=3)
plt.scatter(x_bins, upper, marker='x', color='C3', zorder=3)

MWE with CIs

提取均值

均值的值可以从 ax.collections 中提取为:

means = ax.collections[0].get_offsets()[:, 1]

同样,作为完整性检查,我们可以将提取的值覆盖在原始图上:

plt.scatter(x_bins, means, color='C1', marker='x', zorder=3)

enter image description here

关于python - 从 Seaborn regplot 中提取均值和置信区间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54868292/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com