Я хочу доказать, что при использовании копул СКВ для платежеспособности 2 может быть ниже, чем при использовании стандартной формулы. В следующем коде я моделирую три различных распределения, я вычисляю scr, а затем подгоняю связку и вычисляю scr снова. Верны ли мои расчеты? Спасибо
library(scatterplot3d)
library(MASS)
library(psych)
library(actuar)
set.seed(100)
n<-20000
m <- 3
mu <- rep(0, m)
sigma <- matrix(c(1.0, 0.5, 0.25,
0.5, 1.0, 0.25,
0.25, 0.25, 1.0), nrow=3)
x <- mvrnorm(n, mu=mu, Sigma=sigma, empirical=TRUE)
colnames(x) <- paste0("x",1:m)
cor(x, method='spearman')
k <- pnorm(x)
#first risk-----------------------------
z1 <- qgamma(k[,1], shape=2, scale=9)
summary(z1)
#fsecond risk-----------------------------
z2 <- qlnorm(k[,2],meanlog = 5, sdlog = 1)
summary(z2)
#third risk-----------------------------
z3 <- qpareto(k[,3], 1,2)
summary(z3)
z <- cbind(z1,z2,z3)
cor(z, meth='spearman')
pairs.panels(z)
library(VineCopula)
library(copula)
u <- pobs(as.matrix(cbind(z1,z2,z3)))[,1]
d <- pobs(as.matrix(cbind(z1,z2,z3)))[,2]
selectedCopula <- BiCopSelect(u,d,familyset=c(3,4,5))
selectedCopula
summary(selectedCopula)
my_dist <- mvdc(frankCopula(param = 3.32, dim = 3), margins = c("gamma","lnorm","pareto"), paramMargins = list(list(2,9), list(5,1),list(1,2)))
# Generate random sample observations from the multivariate distribution
v <- rMvdc(100000, my_dist)
# Compute the density
pdf_mvd <- dMvdc(v, my_dist)
plot(pdf_mvd)
# Compute the CDF
cdf_mvd <- pMvdc(v, my_dist)
fr<-frankCopula(param = 3.32,dim=2)
plot(fr,n=4000,main="Frank Copula with theta = 3.32",col="deepskyblue2")
persp(fr, dCopula, main="Frank Copula Density", xlab="U1", ylab="U2", theta=-30,col="deepskyblue2")
persp(fr, pCopula, main="Frank Copula CDF", xlab="U1", ylab="U2", theta=-10,col="deepskyblue2")
#scr for extrernla model-------------------------------------
scr1<-quantile(z1,0.995)-mean(z1)
scr2<-quantile(z2,0.995)-mean(z2)
scr3<-quantile(z3,0.995)-mean(z3)
scr<-sqrt(scr1^2+scr2^2+scr3^2+2*0.5*scr1*scr2+2*0.25*scr1*scr3+2*0.25*scr3*scr2)
#scr for copula model-------------------------------------
scr1c<-quantile(v[,1],0.995)-mean(v[,1])
scr2c<-quantile(v[,2],0.995)-mean(v[,2])
scr3c<-quantile(v[,3],0.995)-mean(v[,3])
scrc<-sqrt(scr1c^2+scr2c^2+scr3c^2+2*0.5*scr1c*scr2c+2*0.25*scr1c*scr3c+2*0.25*scr3c*scr2c)
Обратите внимание, что значения корреляции фиксированы для обоих методов.
Нужно ли рассчитывать SCR, используя связки с
m<-quantile(v,0.995)-mean(v)