我们说我的列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函数,值不合理