Copula学习(二)

import numpy as np
'''多变量单一时刻的随机相关抽样'''
class inner_copula():
    ''''''
    '''初始化函数'''
    def __init__(self, data):
        ''''''
        '''复制data到self内以及长宽高生成'''
        self.data = data  # data n*24*F
        self.data_shape=data.shape
        self.H=self.data_shape [ 0 ]   # 数据深度,有多少数据
        self.L=self.data_shape [ 1 ]   # 时间范围,
        self.N=self.data_shape [ 2 ]   # 变量个数
    '''生成并拟合copula函数'''
    def generate_copula(self):
        self.copula_models = {}
        '''如果变量数为2, 则采用Frank-copula函数'''
        if self.N == 2:
            from copulas.bivariate import Frank
            for t in range(self.L):
                '''对于每一时刻,构造copula函数并拟合函数'''
                self.copula_models [ t ] = Frank()
                self.copula_models [ t ].fit(self.data [ :, t, : ])
        else:
            '''如果变量数不为2, 则采用多变量高斯-copula函数'''
            from copulas.multivariate import GaussianMultivariate
            for t in range(self.L):
                '''对于每一时刻,构造copula函数并拟合函数'''
                self.copula_models [ t ] = GaussianMultivariate()
                self.copula_models [ t ].fit(self.data[:, t, :])

    '''copula抽样'''
    def copula_sample(self):
        ''''''
        '''初始化结果序列,是 变量数 x 时刻数 的矩阵'''
        self.results = np.zeros((self.N, self.L))
        for t in range(self.L):
            self.results [:, t] = self.copula_models [ t ].sample(1)
        return self.results

# 创建测试数据
data_shape = (9, 24, 2)
test_data = np.random.rand(*data_shape)     # *用于解包元组

# 创建 Copula 类实例
copula_instance = inner_copula(test_data)

# 生成并拟合 Copula 函数
copula_instance.generate_copula()

# 进行 Copula 抽样
results = copula_instance.copula_sample()

# 打印抽样结果
print("Copula 抽样结果:")
print(results)

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值