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 | 31 |
Tags
- 서평
- Ga
- 월간결산
- matplotlib
- 시각화
- 파이썬
- Visualization
- Python
- Pandas
- Google Analytics
- python visualization
- 독후감
- 블로그
- 서평단
- 통계학
- 티스토리
- 리눅스
- 한빛미디어서평단
- Tistory
- tensorflow
- 한빛미디어
- SQL
- 텐서플로
- 파이썬 시각화
- MySQL
- 딥러닝
- Blog
- Linux
- MATLAB
- 매틀랩
Archives
- Today
- Total
pbj0812의 코딩 일기
[통계학] PYTHON을 이용한 U 값 계산 본문
0. 목표
- python을 이용한 U 값 계산
- U 값 : 두 집단을 순위 데이터로 변환하여 분포가 겹치는 정도를 나타내는 통계량
1. 방법
1) 데이터를 양 집단을 합친 순위로 변환
2) 양 집단을 합쳐서 작은순으로 순서를 붙임
3) A 집단보다 작은 B 직단의 개수를 계산하고 그 값을 합산한 값이 U 값
2. 구현
1) 두 집단(데이터) 생성
a = [10.2, 8.3, 5.1, 3.4]
b = [90.0, 10.2, 7.7, 6.8, 4.0]
2) 두 집단(데이터)을 하나로 합침
- [10.2, 8.3, 5.1, 3.4, 90.0, 10.2, 7.7, 6.8, 4.0]
total = a + b
print(total)
3) 순서 정렬
- [3.4, 4.0, 5.1, 6.8, 7.7, 8.3, 10.2, 10.2, 90.0]
total.sort()
print(total)
4) 순서 도출 함수
- inp_list는 정렬된 리스트
- count는 해당 숫자가 몇 개 들어가 있는지를 나타냄
- index는 해당 숫자가 몇 번째 순위인지를 나타냄(0부터 시작하므로 +1 해줌)
- if문은 만약 같은 숫자가 존재할 경우 그 평균을 구해 추출하게 작성
def rank(inp_list, search_num):
count = inp_list.count(search_num)
index = inp_list.index(search_num) + 1
if count != 1:
result = 0
for i in range(1, count + 1):
result += index
index += 1
result = result / count
else:
result = index
return result
5) 순서 도출 함수(리스트)
- 4)의 내용을 응용하여 리스트 형태로 받게 함
def rank_list(inp_list, search_list):
result = []
for i in search_list:
tmp = rank(inp_list, i)
result.append(tmp)
return result
6) a 집단 순위
- [7.5, 6, 3, 1]
a_rank = rank_list(total, a)
print(a_rank)
7) b 집단 순위
- [9, 7.5, 5, 4, 2]
b_rank = rank_list(total, b)
print(b_rank)
8) U 값 계산
- a_rank 값이 기준
- a_rank리스트에 존재하는 각 값보다 작은 값들이 b_rank에 몇개 있는지를 나타냄
- 값이 같을 경우에는 0.5로 환산
- 반환 값은 위의 값들을 합산한 값
def u(a_rank, b_rank):
result = []
for i in a_rank:
tmp = 0
for j in b_rank:
if i > j:
tmp += 1
elif i == j:
tmp += 0.5
else:
pass
result.append(tmp)
result = sum(result)
return result
9) 결과
- 7.5
print(u(a_rank, b_rank))
3. 참고
'Science > 통계학' 카테고리의 다른 글
[통계학] python을 이용한 단순무작위표본추출 (0) | 2020.09.10 |
---|---|
[통계학] python을 이용한 귀무가설의 판정 (0) | 2020.09.09 |
[통계학] spicy 패키지를 이용한 동전 던지기(베이지안) (0) | 2020.08.31 |
[통계학] 몬테 카를로 방법을 통한 원의 넓이 계산(python) (0) | 2020.08.30 |
[통계학] python을 이용한 블로그 방문자수 회귀선 그리기 (0) | 2020.08.29 |
Comments