팬더와 가중치 상관 계수를 계산할 방법이 있습니까? 나는 R에 그런 방법이 있다는 것을 알았다. 또한 상관 관계의 p 값을 얻고 싶습니다. R에서 찾지 못했습니다. 가중치 상관 관계에 대한 설명을 위키 피 디아에 연결 : https://en.wikipedia.org/wiki/Pearson_product-moment_correlation_coefficient#Weighted_correlation_coefficient팬더와의 가중 상관 계수
3
A
답변
5
이 기능을 구현하는 Python 패키지는 알 수 없지만 직접 구현을 롤업하는 것은 매우 쉽습니다.
def m(x, w):
"""Weighted Mean"""
return np.sum(x * w)/np.sum(w)
def cov(x, y, w):
"""Weighted Covariance"""
return np.sum(w * (x - m(x, w)) * (y - m(y, w)))/np.sum(w)
def corr(x, y, w):
"""Weighted Correlation"""
return cov(x, y, w)/np.sqrt(cov(x, x, w) * cov(y, y, w))
나는 기능이 상기와 밀접 가능한 위키 피 디아에서 수식을 일치하도록했지만, 몇 가지 잠재적 인 단순화와 성능 향상이있다 : 위키 피 디아 문서의 이름 지정 규칙을 사용하여. 예를 들어, @Alberto Garcia-Raboso가 지적한 것처럼 m(x, w)
은 실제로는 np.average(x, weights=w)
이므로 실제 함수를 작성할 필요가 없습니다.
함수는 계산을 수행하는 것만 큼 예쁜 베어 본입니다. 계산을 수행하기 전에 입력을 배열로 강제 적용하는 것을 고려할 수 있습니다 (예 : x = np.asarray(x)
). 목록이 전달 된 경우 이러한 함수가 작동하지 않으므로 x = np.asarray(x)
입니다. 길이가 같고 널이 아닌 값 등을 갖는 모든 입력을 검증하기위한 추가 점검도 구현 될 수 있습니다.
사용 예제는 :
# Initialize a DataFrame.
np.random.seed([3,1415])
n = 10**6
df = pd.DataFrame({
'x': np.random.choice(3, size=n),
'y': np.random.choice(4, size=n),
'w': np.random.random(size=n)
})
# Compute the correlation.
r = corr(df['x'], df['y'], df['w'])
P 값에 대한 토론 here있다. 일반 계산식처럼 보이지 않으며 실제로 가중치를 얻는 방법에 따라 다릅니다.
관련 문제
- 1. 피어슨 상관 계수
- 2. 계산 상관 계수
- 3. 교차 상관 계수
- 4. 상호 상관 계수 혼동
- 5. gnuplot의 상관 계수
- 6. 일일 상관 관계 계수 - Matlab
- 7. 두 열 사이의 상관 계수
- 8. matplotlib로 피어슨 상관 계수 플로팅
- 9. 다양한 거리 측정에서의 혼란 : 정규화 된 상호 상관, 정규화 된 상관 계수 및 Bhattacharya 계수
- 10. 두 행렬의 행 사이의 상관 계수
- 11. 치수 감소를위한 상관 계수 (Pearson) 사용
- 12. Matlab 상관 계수 Java의 등가 함수
- 13. Odd Pearson 상관 관계 계수 결과
- 14. 확률 도표 상관 계수 플롯을위한 R 패키지
- 15. 팬더 스 캐터 매트릭스 디스플레이 상관 계수
- 16. 팬더와의 대응 표
- 17. 메트릭 (또는 2 차원 배열)의 상관 계수
- 18. 계수
- 19. 계수
- 20. 피클 0.14.1과 0.15.2의 팬더와의 하위 호환성 문제
- 21. 가중 비율은
- 22. 가중 평균
- 23. 상관 계수를 계산하는 Jquery 플러그인
- 24. C#의 상호 상관 코드
- 25. 상관 계수의 상한 및 하한을 별도로 제공 할 함수는 무엇입니까? 당신이 상관 계수 (R)을 추정하는 경우
- 26. 피어슨 상관 문제
- 27. 계수 문제
- 28. 계수 행
- 29. 계수 기록
- 30. 계수 요소
'np.average'는'weights' 인자를 허용하므로'm (x, w)'를'np.average (x, weights = w)'로 정의 할 수 있습니다. –
@ AlbertoGarcia-Raboso : 고마워, 그것에 관한 발언을 추가했습니다. 일관성을 위해 링크 된 위키 피 디아 문서의 수식과 최대한 일치하도록 코드를 그대로 두었습니다. – root