简体   繁体   English

R 中的混合 copula

[英]mixture copula in R

I want to use mixture copula for reliability analysis, now ,with the help of a friend ,I've already finished it 'RVMs_fitted' 。now i want to perform the probability integral transformation (PIT),but the function of RVINEPIT can't use,because RVINEPIT(data,RVM),this RVM not RVINEMATRIX Here is my code:我想用混合copula进行可靠性分析,现在,在朋友的帮助下,我已经完成了'RVMs_fitted'。现在我想进行概率积分变换(PIT),但是RVINEPIT的function不能使用,因为 RVINEPIT(data,RVM),这个 RVM 不是 RVINEMATRIX 这是我的代码:

library(vineclust)
data1 <- read.csv("D:/ASTUDY/Rlanguage/Mix copula/data.csv", header = FALSE)
fit <- vcmm(data = data1, total_comp=3,is_cvine = 0)
print(fit)
summary(fit) 
RVMs_fitted <- list()
RVMs_fitted[[1]] <- VineCopula::RVineMatrix(Matrix=fit$output$vine_structure[,,1],
                                            family=fit$output$bicop_familyset[,,1],
                                            par=fit$output$bicop_param[,,1],
                                            par2=fit$output$bicop_param2[,,1])
RVMs_fitted[[2]] <- VineCopula::RVineMatrix(Matrix=fit$output$vine_structure[,,2],
                                            family=fit$output$bicop_familyset[,,2],
                                            par=fit$output$bicop_param[,,2],
                                            par2=fit$output$bicop_param2[,,2])
RVMs_fitted[[3]] <- VineCopula::RVineMatrix(Matrix=fit$output$vine_structure[,,3],
                                            family=fit$output$bicop_familyset[,,3],
                                            par=fit$output$bicop_param[,,3],
                                            par2=fit$output$bicop_param2[,,3])
RVM<-RVMs_fitted

meanx <- c(0.47,0.508,0.45,0.52,0.48)
sigmax <- c(0.318,0.322,0.296,0.29,0.279)
ux1<-pnorm(x[1],meanx[1],sigmax[1])
ux2<-pnorm(x[2],meanx[2],sigmax[2])
ux3<-pnorm(x[3],meanx[3],sigmax[3])
ux4<-pnorm(x[4],meanx[4],sigmax[4])
ux5<-pnorm(x[5],meanx[5],sigmax[5])
data <- c(ux1,ux2,ux3,ux4,ux5)
du=RVinePIT(data, RVM)
y=t(qnorm(t(du)))


Error: 
 In RVinePIT: RVM has to be an RVineMatrix object.

You have multiple problems here:您在这里有多个问题:

  1. RVM is a list. RVM 是一个列表。 However, you tried to fit RVinePIT to a list, while it works for one data at a time.但是,您尝试将RVinePIT列表中,而它一次仅适用于一个数据。
  2. The same holds for the y . y也是如此。

I do not have your data, but try it with other data.我没有你的数据,但用其他数据试试。

Here is the code (it should work):这是代码(它应该可以工作):

  library(vineclust)
  library(VineCopula)
data1 <- read.csv("D:/ASTUDY/Rlanguage/Mix copula/data.csv", header = FALSE)
fit <- vcmm(data = data, total_comp=3,is_cvine = 0)
print(fit)
summary(fit) 
RVMs_fitted <- list()
RVMs_fitted[[1]] <- RVineMatrix(Matrix=fit$output$vine_structure[,,1],
                                            family=fit$output$bicop_familyset[,,1],
                                            par=fit$output$bicop_param[,,1],
                                            par2=fit$output$bicop_param2[,,1])
RVMs_fitted[[2]] <- RVineMatrix(Matrix=fit$output$vine_structure[,,2],
                                            family=fit$output$bicop_familyset[,,2],
                                            par=fit$output$bicop_param[,,2],
                                            par2=fit$output$bicop_param2[,,2])
RVMs_fitted[[3]] <- RVineMatrix(Matrix=fit$output$vine_structure[,,3],
                                            family=fit$output$bicop_familyset[,,3],
                                            par=fit$output$bicop_param[,,3],
                                            par2=fit$output$bicop_param2[,,3])
RVM<-RVMs_fitted

meanx <- c(0.47,0.508,0.45,0.52,0.48)
sigmax <- c(0.318,0.322,0.296,0.29,0.279)
ux1<-pnorm(x[1],meanx[1],sigmax[1])
ux2<-pnorm(x[2],meanx[2],sigmax[2])
ux3<-pnorm(x[3],meanx[3],sigmax[3])
ux4<-pnorm(x[4],meanx[4],sigmax[4])
ux5<-pnorm(x[5],meanx[5],sigmax[5])
data <- c(ux1,ux2,ux3,ux4,ux5)### This must be a matrix to work with RVinePIT
du=lapply(1:3, function(i) RVinePIT(data, RVM[[i]]))
y <-lapply(1:3, function(i) t(qnorm(t(du[[i]]))))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM