是否可以使用 scipy 将连续随机变量转换为离散变量



如果我初始化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 变量。

最新更新