Eu gostaria de gerar pares de números aleatórios com certa correlação. No entanto, a abordagem usual de usar uma combinação linear de duas variáveis normais não é válida aqui, porque uma combinação linear de variáveis uniformes não é mais uma variável distribuída uniformemente. Eu preciso que as duas variáveis sejam uniformes.
Alguma idéia de como gerar pares de variáveis uniformes com uma determinada correlação?
correlation
random-generation
uniform
Onturenio
fonte
fonte
Respostas:
Não conheço um método universal para gerar variáveis aleatórias correlacionadas com qualquer distribuição marginal. Então, proponho um método ad hoc para gerar pares de variáveis aleatórias distribuídas uniformemente com uma dada correlação (Pearson). Sem perda de generalidade, presumo que a distribuição marginal desejada seja uniforme padrão (ou seja, o suporte é ).[0,1]
A abordagem proposta baseia-se no seguinte:U1 U2 F1 F2 Fi(Ui)=Ui i=1,2
Portanto, o rho de Spearman e o coeficiente de correlação de Pearson são iguais (versões amostrais podem, no entanto, diferir).
a) Para as variáveis aleatórias uniformes padrão e L 2 com as respectivas funções de distribuição de F 1 e F 2 , temos F i ( L i ) = L i , para i = 1 , 2 . Assim, por definição Rho de Spearman é ρ S ( L 1 , L 2 ) = c o r r ( F
b) Se são variáveis aleatórias com margens contínuas e Gaussiana cópula com (Pearson) correlação coeficiente ρ , em seguida, Rho de Spearman é ρ S ( X 1 , X 2 ) = 6X1,X2 ρ
Isso facilita a geração de variáveis aleatórias com o valor desejado do rho de Spearman.
A abordagem é gerar dados da cópula gaussiana com um coeficiente de correlação adequado modo que o rho de Spearman corresponda à correlação desejada para as variáveis aleatórias uniformes.ρ
Algoritmo de simulaçãor n
Deixe denotar o nível de correlação desejado e n o número de pares a serem gerados. O algoritmo é:
Exemplor=0.6 n=500
O seguinte código é um exemplo de execução deste algoritmo com R com um alvo de correlação e n = 500 pares.
Na figura abaixo, os gráficos diagonais mostram histogramas das variáveis e U 2 e os gráficos fora da diagonal mostram gráficos de dispersão de U 1 e U 2 .U1 U2 U1 U2
Por construção, as variáveis aleatórias têm margens uniformes e um coeficiente de correlação (próximo a) . Porém, devido ao efeito da amostragem, o coeficiente de correlação dos dados simulados não é exatamente igual a r .r r
Observe que a
gen.gauss.cop
função deve funcionar com mais de duas variáveis simplesmente especificando uma matriz de correlação maior.Estudo de simulaçãor=−0.5,0.1,0.6 n
O estudo de simulação a seguir repetido para a correlação alvo sugere que a distribuição do coeficiente de correlação converge para a correlação desejada conforme o tamanho da amostra n aumenta.
fonte
gen.gauss.cop
função funcionará para mais de duas variáveis com um ajuste (trivial). Se você não gostar da adição ou deseja colocá-la de maneira diferente, reverta ou altere conforme necessário.fonte
fonte