library(rgl) # Soucinova kopula x <- 1:1000/1000 y <- 1:1000/1000 z=matrix(rep(0,1000*1000),nrow=1000) for (i in 1:1000){ for (j in 1:1000){ z[i,j]=x[i]*y[j] }} persp3d(x, y, z, col="skyblue",zlab='F(x,y)') contour(x,y,z,xlab='x',ylab='y',main='Kontury F(x,y)') # Horni kopula for (i in 1:1000){ for (j in 1:1000){ z[i,j]=min(x[i],y[j]) }} persp3d(x, y, z, col="skyblue",zlab='F(x,y)') contour(x,y,z,xlab='x',ylab='y',main='Kontury F(x,y)') # Dolni kopula for (i in 1:1000){ for (j in 1:1000){ z[i,j]=max(x[i]+y[j]-1,0) }} persp3d(x, y, z, col="skyblue",zlab='F(x,y)') contour(x,y,z,xlab='x',ylab='y',main='Kontury F(x,y)') # Gumbelova kopula theta=2 for (i in 1:1000){ for (j in 1:1000){ z[i,j]=exp(-((-log(x[i]))^(theta)+(-log(y[j]))^(theta))^(1/theta) ) }} persp3d(x, y, z, col="skyblue",zlab='F(x,y)') contour(x,y,z,xlab='x',ylab='y',main='Kontury F(x,y)') ######################## library(copula) ######################## # Archimedovske kopuly # ######################## # Kopula nezavislosti indep.cop = indepCopula(2) #nagenerujeme 1000 pozorovani z teto kopuly u=rCopula(1000, indep.cop) plot(u,xlab='u',ylab='v') #vykreslime hustotu kopuly a jeji kontury par(mfrow=c(1,2)) persp (indep.cop, dCopula,xlab='u',ylab='v',main='c(u,v)') contour(indep.cop, dCopula,nlevels=10,xlab='u',ylab='v',main='Kontury c(u,v)') ################################################ #Vytvareni vicerozmernych rozdeleni pomoci kopul ################################################ #pomoci kopuly a marginalnich rozdeleni definujeme vlastni distribuci mojerozdeleni=mvdc(gumbelCopula(5), c("unif", "gamma"), list(list(min= 0, max = 100),list(shape=10, rate = 1/7))) #nagenerujeme 1000 pozorovani z tohoto rozdeleni u=rMvdc(1000, mojerozdeleni) plot(u,xlab='x',ylab='y') #vykreslime sdruzenou hustotu a distribucni funkci persp (mojerozdeleni, dMvdc, xlim = c(0, 100), ylim=c(30, 150),xlab='x', ylab='y', main = 'f(x,y)') persp (mojerozdeleni, pMvdc, xlim = c(0, 100), ylim=c(30, 150),xlab='x', ylab='y', main = 'F(x,y)') contour(mojerozdeleni, dMvdc, xlim = c(0, 100), ylim=c(30, 150),nlevels=15,xlab='x', ylab='y',main='Kontury f(x,y)') #pridejme jeste puvodni data points(u,col=2,pch='+')