2011-12-29 3 views
2

서로 연관되어있는 두 개의 임의의 변수를 만들려고합니다. 최선의 방법은 지정된 매개 변수 (다른 아이디어에 개방되어 있음)를 사용하여 2 변량 정규 분포를 그리는 것입니다. 비 상관 버전은 다음과 같습니다 : 80 각자가 그리는 대한파이썬에서 2 변량 법선 샘플링

import numpy as np 
sigma = np.random.uniform(.2, .3, 80) 
theta = np.random.uniform(0, .5, 80) 

그러나, 나는 시그마 값이 세타 값과 관련이있을하고자합니다. 이견있는 사람?

+0

공분산 행렬 (ρ)을 어떻게 지정 하시겠습니까? –

+1

내가 틀렸다고 정정하되 정상적인 배포를 위해 유니폼 대신 일반을 사용해서는 안됩니까? –

답변

11

사용하여 내장 : http://www.riskglossary.com/link/correlation.htm

  • 다음과 같이 당신이)
  • 더 참조를하지-단위 조정해야 편차를 경우 http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.multivariate_normal.html

    >>> import numpy as np 
    >>> mymeans = [13,5] 
    >>> # stdevs = sqrt(5),sqrt(2) 
    >>> # corr = .3/(sqrt(5)*sqrt(2) = .134 
    >>> mycov = [[5,.3], [.3,2]] 
    >>> np.cov(np.random.multivariate_normal(mymeans,mycov,500000).T) 
    array([[ 4.99449936, 0.30506976], 
         [ 0.30506976, 2.00213264]]) 
    >>> np.corrcoef(np.random.multivariate_normal(mymeans,mycov,500000).T) 
    array([[ 1.  , 0.09629313], 
         [ 0.09629313, 1.  ]]) 
    
    1. 는 상황이 조금 더 털이 얻을 실세계에서 의미있는 공분산 행렬은 대칭이어야하며 이어야합니다. 양수 한정 또는 posi tive semidefinite (반전 가능해야 함). 특별한 반 - 상관 관계 구조는 가능하지 않을 수 있습니다.
  • +1

    완벽 - 내 평범한 통계 배경을 감안할 때 mycov의 값이 무엇과 관련되는지 설명 할 수 있습니까? 나는 "5"와 "1"이 각각의 관심 벡터에 해당하는 분산이라고 가정한다. 다시 감사합니다, – mike

    +0

    예, 참으로! 5와 1은 분산이고, .3은 공분산이다. 상관 관계 만 원할 경우 설명 된대로 조금 더 움직여야합니다. –

    +0

    위대한 답변! 이것은 일부 공분산을 유도하기 위해 (가우스 랜덤) 벡터와 행렬을 미리 곱하는 것보다 훨씬 쉽습니다. –