Fat*_*oom 9 python statistics scipy python-3.x
我无法理解如何正确使用此功能,有人可以向我解释一下吗?
假设我有:
当我被要求使用 norm.ppf() 计算 (95%) 误差幅度时,代码会如下所示吗?
norm.ppf(0.95, loc=172.78, scale=4.15)
Run Code Online (Sandbox Code Playgroud)
或者它看起来像这样?
norm.ppf(0.95, loc=0, scale=1)
Run Code Online (Sandbox Code Playgroud)
因为我知道它正在计算置信区间右侧的曲线面积(95%、97.5% 等...见下图),但是当我有均值和标准差时,我真的很困惑如何使用该功能。
sek*_*lwf 19
詹姆斯norm.ppf返回“标准差乘数”的说法是错误的。这感觉很相关,因为当人们搜索norm.ppf时,他的帖子是谷歌搜索结果中排名第一的。
“norm.ppf”是“norm.cdf”的逆。在示例中,它仅返回 95% 百分位数处的值。不涉及“标准差乘数”。
这里有一个更好的答案: 如何计算 python 中正态累积分布函数的反函数?
Jam*_*ush 18
该方法norm.ppf()采用一个百分比并返回该百分比出现的值的标准偏差乘数。
它相当于密度图上的“单尾检验”。
来自 scipy.stats.norm:
ppf(q, loc=0, scale=1) 百分比点函数(cdf 的倒数——百分位数)。
标准正态分布
编码:
norm.ppf(0.95, loc=0, scale=1)
Run Code Online (Sandbox Code Playgroud)
返回对于一个95%的显着间隔单尾测试上的标准正态分布(即,正常的分布的平均为0,标准偏差为1的特殊情况)。
我们的例子
要计算我们的 95% 显着性区间所在的 OP 提供的示例的值(对于单尾测试),我们将使用:
norm.ppf(0.95, loc=172.7815, scale=4.1532)
Run Code Online (Sandbox Code Playgroud)
这将返回一个值(用作“标准偏差乘数”),标记如果我们的数据是正态分布,将包含 95% 的数据点。
为了得到确切的数字,我们将norm.ppf()输出乘以我们所讨论的分布的标准偏差。
双尾测试
如果我们需要计算“双尾检验”(即我们关注大于和小于均值的值),那么我们需要拆分显着性(即我们的 alpha 值),因为我们仍在使用计算方法对于单尾。一分为二象征着两条尾巴的显着性水平。95% 的显着性水平具有 5% 的 alpha;将 5% 的 alpha 拆分到两个尾部会返回 2.5%。从 100% 中取 2.5% 返回 97.5% 作为显着性水平的输入。
因此,如果我们关注均值两侧的值,我们的代码将输入 0.975 来表示跨两条尾巴的 95% 显着性水平:
norm.ppf(0.975, loc=172.7815, scale=4.1532)
Run Code Online (Sandbox Code Playgroud)
误差范围
误差幅度是用样本统计量估计总体参数时使用的显着性水平。我们想使用双尾输入来生成我们的 95% 置信区间,norm.ppf()因为我们关心大于和小于平均值的值:
ppf = norm.ppf(0.975, loc=172.7815, scale=4.1532)
Run Code Online (Sandbox Code Playgroud)
接下来,我们将 ppf 乘以我们的标准偏差以返回间隔值:
interval_value = std * ppf
Run Code Online (Sandbox Code Playgroud)
最后,我们将通过从平均值中添加和减去区间值来标记置信区间:
lower_95 = mean - interval_value
upper_95 = mean + interval_value
Run Code Online (Sandbox Code Playgroud)
用垂直线绘制:
_ = plt.axvline(lower_95, color='r', linestyle=':')
_ = plt.axvline(upper_95, color='r', linestyle=':')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25368 次 |
| 最近记录: |