【问题标题】:Multivariate normal CDF in PythonPython中的多元正态CDF
【发布时间】:2017-03-20 05:17:20
【问题描述】:

我正在寻找一个函数来计算多元正态分布的 CDF。我发现 scipy.stats.multivariate_normal 只有一种计算 PDF 的方法(对于示例 x)但没有 CDF multivariate_normal.pdf(x, mean=mean, cov=cov)

我正在寻找相同的东西,但要计算 cdf,例如:multivariate_normal.cdf(x, mean=mean, cov=cov),但不幸的是 multivariate_normal 没有 cdf 方法。

我发现的唯一内容是:Multivariate Normal CDF in Python using scipy 但是提出的方法scipy.stats.mvn.mvnun(lower, upper, means, covar) 没有将样本x 作为参数,所以我真的不知道如何使用它来获得类似于我上面所说的东西。

【问题讨论】:

  • 开始检查this。这是一个高质量的库(如果你不熟悉的话)
  • @sascha 我问scipy.stats.mvn.mvnun 的同样问题也适用于您在此链接中提供的问题。
  • 那么你到底想要什么?您想适合点分布吗?
  • @sascha 不。我已经解释过:我有一个均值(向量)和协方差矩阵,它定义了一个多元正态分布。给定一个新的数据点 x(向量),我想计算它的累积概率 (CDF) 而不是概率密度 (PDF)。
  • 不知道这个问题?

标签: python numpy scipy gaussian normal-distribution


【解决方案1】:

这只是对@sascha 上面在 cmets 中为答案提出的观点的澄清。相关功能可以找到here

例如,在具有对角协方差的多元正态分布中,cfd 应该给出(1/4) * Total area = 0.25(如果您不明白为什么,请查看下面的散点图)以下示例将允许您使用它:

from statsmodels.sandbox.distributions.extras import mvnormcdf
from scipy.stats import mvn

for i in range(1, 20, 2):
    cov_example = np.array(((i, 0), (0, i)))
    mean_example = np.array((0, 0))
    print(mvnormcdf(upper=upper, mu=mean_example, cov=cov_example))

这个的输出是 0.25, 0.25, 0.25, 0.25...


【讨论】:

    【解决方案2】:

    某些分布的 CDF 实际上是该分布的 PDF 的积分。既然如此,您需要为函数提供积分的边界。

    当大多数人要求某个点与某个分布相关的 p_value 时,他们的意思是:

    在这种分布情况下,获得这些值或更高值的机会有多大?

    注意用红色标记的区域 - 它不是一个点,而是从某个点开始的积分:

    因此,您需要将点设置为下边界,将 +inf(或任意高的值)设置为上边界,并提供您已有的均值和协方差矩阵:

    from sys import maxsize
    
    def mvn_p_value(x, mu, cov_matrix):
        upper_bounds = np.array([maxsize] * x.size)  # make an upper bound the size of your vector
        p_value = scipy.stats.mvn.mvnun(x, upper_bounds, mu, cov_matrix)[1]
        if 0.5 < p_value:  # this inversion is used for two-sided statistical testing
            p_value = 1 - p_value
        return p_value
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-14
      • 2012-12-20
      • 2012-06-21
      • 2018-03-05
      • 1970-01-01
      • 2012-07-21
      • 1970-01-01
      • 2018-09-01
      相关资源
      最近更新 更多