Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中生成具有指定边缘的copula相关示例 我有n个随机变量(x1,…,xn),每个变量都分布在一个特定的边缘(正常,对数正态,泊松…),并且我想生成一个p变量联合实现的变量席的样本,假设变量与给定的Copula相关,使用Python 3。我知道R是一个更好的选择,但我想用Python来实现它_Python_Random_Statistics - Fatal编程技术网

在Python中生成具有指定边缘的copula相关示例 我有n个随机变量(x1,…,xn),每个变量都分布在一个特定的边缘(正常,对数正态,泊松…),并且我想生成一个p变量联合实现的变量席的样本,假设变量与给定的Copula相关,使用Python 3。我知道R是一个更好的选择,但我想用Python来实现它

在Python中生成具有指定边缘的copula相关示例 我有n个随机变量(x1,…,xn),每个变量都分布在一个特定的边缘(正常,对数正态,泊松…),并且我想生成一个p变量联合实现的变量席的样本,假设变量与给定的Copula相关,使用Python 3。我知道R是一个更好的选择,但我想用Python来实现它,python,random,statistics,Python,Random,Statistics,按照下面的方法,我用高斯Copula成功地做到了这一点。现在我想修改这个方法,使用阿基米德Copula(Gumbel,Frank…)或Student Copula。在高斯copula方法的开始,您从多元正态分布中提取p实现的样本。为了适应另一个copula,例如二元Gumbel,我的想法是从中抽取一个样本,但我不确定如何实现这一点 我尝试过使用几个Python3包:,并且都提供了将特定copula适配到数据集的noption,但不允许从给定copula中随机抽取样本 你能提供一些关于如何从给定的

按照下面的方法,我用高斯Copula成功地做到了这一点。现在我想修改这个方法,使用阿基米德Copula(Gumbel,Frank…)或Student Copula。在高斯copula方法的开始,您从多元正态分布中提取p实现的样本。为了适应另一个copula,例如二元Gumbel,我的想法是从中抽取一个样本,但我不确定如何实现这一点

我尝试过使用几个Python3包:,并且都提供了将特定copula适配到数据集的noption,但不允许从给定copula中随机抽取样本


你能提供一些关于如何从给定的具有统一边界的Copula中提取多元随机样本的算法见解吗?

下面的代码实现了Clayton和AMH Copula。的第4页显示了如何实现其他类型的连接

import random
import math
import scipy.stats as st
def clayton(theta, n):
    v=random.gammavariate(1/theta,1)
    uf=[random.expovariate(1)/v for _ in range(n)]
    return [(k+1)**(-1.0/theta) for k in uf]

def amh(theta, n):
    # NOTE: Use SciPy RNG for convenience here
    v=st.geom(1-theta).rvs()
    uf=[random.expovariate(1)/v for _ in range(n)]
    return [(1-theta)/(math.exp(k)-theta) for k in uf]
请检查这一页。我想这就是你要找的

例如,如果在[1,3]和x2:Normal(0,2)上有两个分布x1:Uniform,并且知道依赖结构copula,那么可以非常容易地构建多维分布X=(x1,x2)

import openturns as ot

x1 = ot.Uniform(1, 3)
x2 = ot.Normal(0, 2)
copula = ot.IndependentCopula()

X = ot.ComposedDistribution([x1, x2], copula)
X.getSample(5)
将返回大小为5的样本:

>>>   [ X0         X1         ]
0 : [  1.87016    0.802719  ]
1 : [  1.72333    2.73565   ]
2 : [  1.00422    2.00869   ]
3 : [  1.47887    1.4831    ]
4 : [  1.51031   -0.0872247 ]
可以在二维视图中查看云

import matplotlib.pyplot as plt

sample = dist.getSample(1000)
plt.scatter(sample[:, 0], sample[:, 1], s=2)

如果选择
copula=ot.ClaytonCopula(2)
,结果将是:

使用GumbelCopula(2):