R中的Copula包

本文详细介绍了R语言中copula包的功能,包括椭圆、阿基米德等不同类型的copula函数,如何设定和生成随机数,以及通过copula和参数边距构造多元分布的过程。
摘要由CSDN通过智能技术生成

R中的copula包

关于copula函数包的介绍:copula包提供了(S4)类常用的椭圆、(嵌套)阿基米德、极值和其他copula族;密度、分布、随机数生成和绘图方法。拟合联结模型和拟合优度检验。独立性和序列(单变量和多变量)独立性检验,以及其他相关检验。

生成copula随机数

生成copula随机数,需要两个步骤,分别是第一步,设定copula的类型;第二步,生成随机数。

设定常用copula

copula函数包内主要包含:
椭圆copula(ellipCopula)
阿基米德copula(archmCopula and acopula)
极值copula(evCopula)
其他的copula,比如Plackett和Farlie-Gumbel-Morgenster

1. 椭圆类copula

椭圆类copula中主要包含了normal copula以及t-copula

    ellipCopula   # 构造椭圆类copula类对象的构造
创建椭圆类copula的方法
    ellipCopula (family, param, dim = 2, dispstr = "ex", df = 4, ...)
    normalCopula(param, dim = 2, dispstr = "ex")  #构造正态copula
    tCopula(param, dim = 2, dispstr = "ex", df = 4,df.fixed = FALSE, df.min = 0.01)  #构造t-copula

family:指定椭圆联结函数族的字符串。必须是normal(默认)或者t
param:指定参数值的数字向量;即指相关系数矩阵里面的待估参数
dim:变量的个数
dispstr: 表示椭圆copula的对称正定矩阵类型的字符串,即所有变量中相关系数矩阵之间的关系。目前可用的结构有“ex”for exchangeable、“ar1”for AR(1)、“toep”for Toeplitz(toeplitz)和“un”for unstructured。
df:指定用于构造t序列的多元t分布的自由度数的整数值
df.fited:指定自由度df是否将被视为参数(待估计)。默认值FALSE表示如果将对象作为参数传递给fitCopula,则要估计df。
df.min:df的严格下界,主要是在df拟合时。fixed=FALSE,使用fitCopula。df.min是非负的。

例子:

生成copula

    data1 = ellipCopula("normal",param = c(0.5, 0.6, 0.7),3,dispstr ="un")
    data2 = normalCopula(param=c(0.5, 0.6, 0.7), dim = 3, dispstr = "un") 
2. 阿基米德copula

阿基米德copula主要包含了claytonCopula、frankCopula以及gumbelCopula等

    archmCopula    # 构造阿基米德类copula类对象的构造
创建阿基米德copula的方法

1

    archmCopula(family, param = NA_real_, dim = 2, ...)
    claytonCopula(param = NA_real_, dim = 2,use.indepC = c("message", "TRUE", "FALSE"))
    frankCopula(param = NA_real_, dim = 2,use.indepC = c("message", "TRUE", "FALSE"))
    gumbelCopula(param = NA_real_, dim = 2,use.indepC = c("message", "TRUE", "FALSE"))
    amhCopula(param = NA_real_, dim = 2,use.indepC = c("message", "TRUE", "FALSE"))
    joeCopula(param = NA_real_, dim = 2,use.indepC = c("message", "TRUE", "FALSE"))

family:指定阿基米德copula属的字符串。目前支持的是"clayton", “frank”, “amh”, “gumbel”, and “joe”
param:copula中的待估参数
dim:变量的个数
use.indepC:一个字符串,指定在参数θ param处于相应阿基米德copula为独立copula的边界或极限情况下,是否应返回独立copula。默认情况下会返回带有消息的indepCopula(),而使用"TRUE"则不会返回消息。这使得结果对象通常更有用,但不会返回所需阿基米德copula族

例子:
    ## claycopula
    data1 = archmCopula("clayton", param = 2, dim = 3)
    data2 = claytonCopula(param = 2, dim = 3)

生成copula的随机数

    rCopula(n,copula)

n:表示生成随机数的个数
copula:我们设定的copula的类型

例子
    data = ellipCopula("normal", param = c(0.5, 0.6,0.7),dim = 3, dispstr = "un")
    set.seed(12)
    rCopula(100, data)

由 Copulas 构造的多元分布

通过 copula 和参数边距进行密度、分布函数和随机生成数多元分布。
主要涉及的函数为mvdc,dmvdc,pmvdc,rmvdc

    mvdc(copula, margins, paramMargins, marginsIdentical = FALSE,check = TRUE, fixupNames = TRUE)
    dMvdc(x, mvdc, log=FALSE)
    pMvdc(x, mvdc)
    rMvdc(n, mvdc)

mvdc函数:产生基于copula,且其边际分布分别服从某些分布的随机数
copula:copula函数的种类
margins:设定边际分布的种类
paramMargins:边际分布中的分布参数值。对于正态分布,里面的分布参数是mean和sd,对于学生t分布,里面的分布参数是df,对于指数分布,里面的分布参数是rate,对于gamma分布里面的分布参数是shape和scale(或者rate)
marginsIdentical:限制边际分布是否相同
check:逻辑指示应用快速检查是否存在边距“p*”和“d*”函数
fixupNames:逻辑指示页边距的参数是否应该获得自动名称

例:

data = mvdc(normalCopula(0.75), c("norm", "exp"),list(list(mean = 0, sd =2), list(rate = 2)))
#生成基于正态copula且边际分布分别服从指数分布和gamma分布的多元分布

dmvdc函数:产生基于copula的密度函数
pmvdc函数:产生基于copula的分布函数
rmvdc函数:产生基于copula的随机生成数
x:一个长度为联维d的数值向量,或者一个列数为d的矩阵,给出需要计算密度或分布函数的点的坐标。
mvdc:“mvdc”对象
log:逻辑指示是否应该返回密度

例:

mv.NE <- mvdc(normalCopula(0.75), c("norm", "exp"),list(list(mean = 0, sd =2), list(rate = 2)))
dim(mv.NE)
mv.NE # using its print() / show() method
persp (mv.NE, dMvdc, xlim = c(-4, 4), ylim=c(0, 2), main = "dMvdc(mv.NE)") # 三维视图
contour(mv.NE, dMvdc, xlim = c(-4, 4), ylim=c(0, 2)) # 等高线图
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山山而川ds

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值