如何解决为什么 Python scipy.norm.cdf 中的向量化正态累积函数与其标量版本不同
为什么 scipy.norm.cdf
的矢量化版本与其标量版本不同?
我必须更改为生存函数(等于 1-cdf)。
这是一个错误还是术语 cdf 和 sf 的常见用法?
我的python是3.9.2,scipy版本是scipy 1.7.0。
norm.cdf(1.65,loc = 0,scale = 1)
norm([1.65,1.65],scale=1).cdf(np.zeros(2))
norm([1.65,scale=1).sf(np.zeros(2))
输出,
0.9505285319663519
array([0.04947147,0.04947147])
array([0.95052853,0.95052853])
解决方法
等价的是norm.cdf(x,loc,scale)
和norm(loc,scale).cdf(x)
。这适用于标量和矢量化参数:
In [2]: norm.cdf(1.65,loc=0,scale=1)
Out[2]: 0.9505285319663519
In [3]: norm(loc=0,scale=1).cdf(1.65)
Out[3]: 0.9505285319663519
In [4]: norm.cdf([1.65,1.65],scale=1)
Out[4]: array([0.95052853,0.95052853])
In [5]: norm(loc=0,scale=1).cdf([1.65,1.65])
Out[5]: array([0.95052853,0.95052853])
为了避免混淆,我建议始终使用 loc 和 scale 作为关键字参数,即使分布接受它们作为位置。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。