Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 시각화
- python visualization
- 텐서플로
- 매틀랩
- MySQL
- 서평
- 리눅스
- Google Analytics
- 티스토리
- Linux
- MATLAB
- Pandas
- 파이썬
- matplotlib
- 한빛미디어
- 한빛미디어서평단
- 월간결산
- Blog
- Ga
- 파이썬 시각화
- Visualization
- 딥러닝
- 서평단
- Python
- 통계학
- 블로그
- 독후감
- SQL
- Tistory
- tensorflow
Archives
- Today
- Total
pbj0812의 코딩 일기
[통계학] Python으로 피어슨의 상관계수 구현하기 본문
0. 목표
- python으로 피어슨의 상관계수 구현하기
- 상관의 정도를 나타내는 지표로 -1에서 1 사이의 값을 취함
1. 실습
1) 실습 데이터 생성
- 한눈에 봐도 상관 있어 보이는 느낌의 데이터 생성
data1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 11]
data2 = [2, 5, 7, 9, 12, 13, 15, 16, 19, 20]
2) 평균 함수 구현
def mean(inp):
result = 0
len_inp = len(inp)
for i in inp:
result += i
result = result / len_inp
return result
3) 제곱근 함수 구현
- 반복 횟수가 커질수록 정확도 상승
def sqrt(inp):
result = inp/2
for i in range(30):
result = (result + (inp / result)) / 2
return result
4) 피어슨의 상관계수 구현
def cor(inp1, inp2):
# 평균 먼저 계산
mean_inp1 = mean(inp1)
mean_inp2 = mean(inp2)
# 분자
son = 0
for i in range(len(inp1)):
son += (inp1[i] - mean_inp1) * (inp2[i] - mean_inp2)
# 분모
x_mom = 0
for i in range(len(inp1)):
x_mom += (inp1[i] - mean_inp1) ** 2
y_mom = 0
for i in range(len(inp2)):
y_mom += (inp2[i] - mean_inp2) ** 2
mom = sqrt(x_mom) * sqrt(y_mom)
result = son / mom
return result
5) 결과 확인
- 결과 : 0.9873373132677561
print(cor(data1, data2))
2. 참고
'Science > 통계학' 카테고리의 다른 글
[통계학] python을 통한 왜도 / 첨도 구현 (0) | 2020.08.16 |
---|---|
[통계학] 동전 던지기 게임을 통한 정규분포 그래프 만들기 (0) | 2020.08.15 |
[통계학] 변동계수(CV) 구현하기 (0) | 2020.08.13 |
[통계학] CART 구현을 통한 TITANIC 변수 선택 (0) | 2020.03.10 |
[통계학] ID3 구현을 통한 변수 선택 (0) | 2020.03.09 |
Comments