Meu objetivo final é ser capaz de gerar um vetor de tamanho de variáveis aleatórias correlacionadas de Bernoulli. Uma maneira de fazer isso é usar a abordagem Gaussian Coupla. No entanto, a abordagem Gaussian Coupla apenas me deixa com um vetor:
Suponha que eu tenha gerado modo que a correlação comum entre eles seja . Agora, como posso transformá-los em um novo vetor de ou 's? Em outras palavras, eu gostaria de:0 1
mas com a mesma correlação .
Uma abordagem que pensei foi atribuir uma regra de corte rígido, de modo que se , então deixe e se , então deixe .X i = 0 p i ≥ 0,5 X i = 1
Isso parece funcionar bem em simulações, pois mantém a estrutura de correlação, mas é muito arbitrário para mim qual valor de corte deve ser escolhido além de .
Outra maneira é tratar cada como uma variável aleatória de Bernoulli com probabilidade de sucesso e obter uma amostra dela. No entanto, essa abordagem parece causar perda de correlação e, em vez de , posso obter ou .p i ρ ρ ρ
Alguém tem alguma opinião ou opinião sobre isso? Obrigado.
fonte
Respostas:
Não compreendo a Cópula Gaussiana o suficiente para saber qual é o problema. Mas eu encontrei uma maneira de gerar vetores Bernoulli correlacionados.
Seguindo https://mathoverflow.net/a/19436/105908, se usarmos um conjunto de vetores fixos e um vector aleatório na unidade de esfera u , podemos transformar u em binário X onde X i = ( u ⋅ v i > 0 ) . Nesta configuração, c o r ( X i , X j ) = π - 2 * θ ( i , jv1. . . vn você você X XEu= ( u ⋅ vEu> 0 ) ondeθ(i,j)é o ângulo entrevievj.c ou r ( XEu, Xj) = π- 2 ∗ θ ( i , j )π θ ( i , j ) vEu vj
Como encontrar matriz adequada para produzir uma matriz de correlação desejada R ? A condição angular é convertida em V V T = c o s ( - π R - πV= |v1. ..vn| R e, portanto, podemos encontrarVcom decomposição de Cholesky.VVT= c o s ( - πR - π2) V
Um código de exemplo em R é o seguinte:
Obrigado @ jakub-bartczuk por vincular à pergunta do MO - eu não encontraria isso sozinho.
fonte