Python:高斯Copula或cdf的反转

时间:2017-11-17 11:24:03

标签: python inverse cdf

我们说我的列x具有统一的分布值。 对于这些值,我应用了cdf函数。

现在我想计算Gaussian Copula,但我无法在python中找到该函数。我已经读过,高斯Copula就像cdf函数的反转"。

我这样做的原因来自这一段:

  

应用高斯Copula过程进行标准化的直观描述   通过应用= Phi ^ -1(())观察。 Calculating()产生一个值∈[0,1]   表示左侧阴影区域的比例。然后Phi ^ -1()产生一个值   通过匹配高斯分布中的阴影区域。

我需要你的帮助,每个人都知道如何计算吗?

到目前为止,我有两个想法:

1)高斯= 1 /(sqrt(2 * pi)* s)* e **( - 0.5 *(float(x-m)/ s)** 2) - >所以用这个值将所有值转换为新值

2)norm.ppf(array,loc,scale) - >给ppf函数赋予均值和std以及数组,它会计算出CDF的倒数......但我怀疑#2

事情是

n.cdf(n.ppf(0.95))

不是我想要的。为什么我这样做的想法是将非正态/高斯分布转换为正态分布。

喜欢这里:

Transform from a non gaussian distribution to a gaussian distribution with Gaussian Copula

还有其他想法或窍门吗?

非常感谢:)

编辑:

我找到了2个非常有用的链接: 1. https://stats.stackexchange.com/questions/197283/how-to-transform-an-arcsine-distribution-to-a-normal-distribution 2. https://stats.stackexchange.com/questions/125648/transformation-chi-squared-to-normal-distribution/125653#125653

在这篇文章中,它说你必须

  

所有细节都已经在答案中了 - 你把你的随机变量,并用它自己的cdf转换它......产生一个统一的结果。

这对我来说是真的。如果我采用随机分布并应用norm.cdf(data,mean,std)函数,我得到一个统一的分布式cdf

比较:import pandas as pd data = [1.5]*7 + [2.5]*2 + [3.5]*8 + [4.5]*3 + [5.5]*1 + [6.5]*8 cdf=n.cdf(data, n.mean(data),n.std(data)) print cdf

但我怎么做

  

然后再次变换,应用所需分布的分位数函数(逆cdf)(在这种情况下,通过标准正态分位数函数/正常cdf的反函数,生成具有标准正态分布的变量)。

因为当我使用f.e. norm.ppf函数,值不合理

0 个答案:

没有答案