[R-br] RES: Simulação de variáveis correlacionadas usando Cópulas

Jelson Ventura Fresca jelsonvf em gmail.com
Sexta Novembro 23 21:43:12 BRST 2012


Com o pacote "copula" instalado:

- carregue-o: library(copula)

- substitua "rMvdc" por "rmvdc"

Estou formatando meu computador, estou sem acesso ao R, mas deve funcionar

Em 23 de novembro de 2012 21:23, Gabriel Bruno de Lemos
<gblemos em usp.br>escreveu:

>  Mauro, estranho pq aqui em meu computar esta função está rodando
> normalmente. Segue o código desta função e também o output fornecido pela
> rotina que passei...****
>
> ** **
>
> > rMvdc****
>
> function (n, mvdc) ****
>
> {****
>
>     dim <- mvdc em copula@dimension****
>
>     u <- rCopula(n, mvdc em copula)****
>
>     x <- u****
>
>     for (i in 1:dim) {****
>
>         qdf.expr <- asCall(paste0("q", mvdc em margins[i]), mvdc em paramMargins[[i]])****
>
>         x[, i] <- eval(qdf.expr, list(x = u[, i]))****
>
>     }****
>
>     x****
>
> }****
>
> ** **
>
> ** **
>
> ** **
>
> > require(copula)****
>
> > ****
>
> > myCop.clayton <- archmCopula(family = "clayton", dim = 3, param = 2)****
>
> > ****
>
> > myMvd <- mvdc(copula = myCop.clayton, margins = c("exp", "norm",****
>
> +             "chisq"), paramMargins = list(list(rate= 2), list(mean = 0,*
> ***
>
> +             sd = 1), list(df=5)))****
>
> > ****
>
> > ****
>
> > myCop.t <- ellipCopula(family = "t", dim = 3, dispstr = "un",****
>
> +                        param = c(0.8, 0.5,0.2), df = 8)****
>
> > ****
>
> > myMvd <- mvdc(copula = myCop.t, margins = c("exp", "norm","chisq"),****
>
> +               paramMargins = list(list(rate= 2), list(mean = 0,sd = 1),
> list(df=5)))****
>
> > ****
>
> > x.samp <- rMvdc(10000,myMvd)****
>
> > cor(x.samp)****
>
>           [,1]      [,2]      [,3]****
>
> [1,] 1.0000000 0.7194154 0.4536219****
>
> [2,] 0.7194154 1.0000000 0.1652259****
>
> [3,] 0.4536219 0.1652259 1.0000000****
>
> ** **
>
> ** **
>
> ** **
>
> *De:* Mauro Sznelwar [mailto:sznelwar em uol.com.br]
> *Enviada em:* quarta-feira, 21 de novembro de 2012 23:08
> *Para:* gblemos em usp.br
> *Assunto:* Re: [R-br] Simulação de variáveis correlacionadas usando
> Cópulas****
>
> ** **
>
> Tentei rodar o seu script e diz que este comando rMvdc não existe!****
>
>   ** **
>
> Boa noite a todos! Já tem algum tempo que estou tentando aprender um pouco
> mais sobre cópulas... e confesso que não está sendo a coisa mais simples do
> mundo.****
>
> ** **
>
> Sinto falta de alguma aplicação (rotina no R) mais simples mostrando uma
> utilização aplicada deste tipo de função (principalmente para casos acima
> de 2 dimensões). Utilizo-a no meu trabalho para precificar portfólios...
> mas em um software caixa preta... ****
>
> ** **
>
> Hoje consegui rodar um pequeno exemplo de uma das possíveis utilidades
> destas cópulas. Gerar variáveis aleatórias correlacionadas... com as
> marginais possuindo QUALQUER função de distribuição de probabilidade (não
> ficando restrito ao caso da normal multivariada).****
>
> ** **
>
> Parece que está funcionando legal... se alguém tiver mais alguns exemplos
> ou possíveis correções na rotina abaixo será bem vinda!****
>
> ** **
>
> Abs****
>
> ** **
>
> require(copula)****
>
> ** **
>
> ## Primeiro define-se a cópula a ser utilizada – “t” neste caso. O comando
> dispstr=”un” especifica que desejo informar 3 correlações diferentes na
> matriz de correlações.****
>
> myCop.t <- ellipCopula(family = "t", dim = 3, dispstr = "un",****
>
>                        param = c(0.8, 0.5,0.2), df = 8)****
>
> ** **
>
> ## Definida a cópula, especifico quais marginais desejo que minha função
> possua. Neste caso defini exponencial, normal e qui-quadrado.****
>
> myMvd <- mvdc(copula = myCop.t, margins = c("exp", "norm","chisq"),****
>
>               paramMargins = list(list(rate= 2), list(mean = 0,sd = 1),
> list(df=5)))****
>
> ** **
>
> x.samp <- rMvdc(10000,myMvd)****
>
> cor(x.samp)****
>
> ** **
>
> par(mfrow=c(1,3))****
>
> hist(x.samp[,1])****
>
> hist(x.samp[,2])****
>
> hist(x.samp[,3])****
>
> ** **
>
> ** **
>
> ** **
>
> Gabriel Bruno de Lemos****
>
> Mestrando em Estatística e Experimentação Agronômica****
>
> Esalq / Usp****
>
> ** **
>
> skype: gb_lemos****
>
> msn: gb_lemos em hotmail.com****
>
> ** **
>
> (19) 8212-6999****
>
> ** **
>
> ** **
>
> ** **
>
> .****
>
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20121123/1d1939c8/attachment.html>


Mais detalhes sobre a lista de discussão R-br