如何使用norm.ppf求解满足Pr(Z >= ε) = 0.1的标准正态分布Z值
norm.ppf 解题步骤与代码修改方案
核心函数逻辑说明
scipy.stats.norm.ppf() 是查正态分布分位数的工具,你传入参数q后,它会返回对应的分位值ε,固定满足关系:
Pr(符合参数设定的正态随机变量 ≤ ε) = q
这个函数对接的是左侧累积概率,没法直接计算「某个值右侧的概率」对应的分位。
问题公式等价转换
本次作业要求求解满足 Pr(Z >= ε) = 0.1 的ε值,利用正态分布总概率为1的性质做简单换算:
整个分布的概率从负无穷到正无穷累加等于1,因此ε右侧的概率是0.1,就意味着ε左侧的累积概率是1 - 0.1 = 0.9,这正是ppf函数能直接处理的输入值。
参考代码修改
只需要把原参考代码里的q值从0.5-0.341替换成换算得到的0.9即可,标准正态分布的位置参数loc=0、尺度参数scale=1和题目设定完全匹配,不需要额外改动:
import scipy.stats as stats print(stats.norm.ppf(q=0.9, loc=0, scale=1))
代码运行后输出结果约为1.2816,就是题目要求的ENSO指数取值。
新手易踩的坑
- 别直接把题目里的右侧概率0.1当q值传给ppf,这么算出来的结果是-1.28,对应的是「Z大于-1.28的概率为0.9」,和题目要求完全反过来
- 以后碰到所有要算右侧概率对应分位的题目,统一先把右侧概率换算成左侧累积概率,再传给ppf计算就行
内容的提问来源于stack exchange,提问作者Rish9810
相关产品推荐
相关产品推荐

