如果我初始化scipy.stats.rv_continuous
的子类,例如scipy.stats.norm
>>> from scipy.stats import norm
>>> rv = norm()
我可以将其转换为概率列表,每个元素在提供范围数后表示值范围的概率吗?像——(对于范围 - [(-inf,-1), (-1,0), (0,1), (1, inf)] )
>>> li
[0.15865525393145707, 0.34134474606854293, 0.34134474606854293, 0.15865525393145707]
(其中 0.15865525393145707 是变量小于 -1 的概率,0.34134474606854293 表示在 -1 到 0 范围内,其他变量也是如此。
这可以使用 scipy 来完成吗?如果不是哪个 python 库可以支持这样的转换操作?
根据您的评论,您可以使用 CDF 进行计算:
from scipy.stats import norm
import numpy as np
>>> norm().cdf(-1) - norm().cdf(-np.inf),
norm().cdf(0) - norm().cdf(-1),
norm().cdf(1) - norm().cdf(0),
norm().cdf(np.inf) - norm().cdf(1)
(0.15865525393145707,
0.34134474606854293,
0.34134474606854293,
0.15865525393145707)
这基本上遵循了CDF的定义。
请注意,我得到的数字总和为 1,但不是你写的作为预期输出的数字。我不知道你说这些是正确的依据。我的猜测是你隐式使用了一个非单位标准差的 Normal 变量。