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 |
Tags
- SQL
- 딥러닝
- MySQL
- Blog
- 티스토리
- Linux
- 독후감
- 파이썬
- 파이썬 시각화
- 시각화
- Google Analytics
- Tistory
- python visualization
- 서평
- tensorflow
- 한빛미디어서평단
- 블로그
- 한빛미디어
- Visualization
- MATLAB
- Pandas
- 텐서플로
- Ga
- matplotlib
- 서평단
- 통계학
- 월간결산
- 리눅스
- 매틀랩
- Python
Archives
- Today
- Total
pbj0812의 코딩 일기
[통계학] python으로 F 분포 그래프 그리기 본문
0. 목표
- python으로 F 분포 그래프 그리기
- 독립된 두 카이제곱 분포를 따르는 확률변수 비의 분포, 등분산검정과 분산분석 등에 주로 이용
- F 값 = (카이제곱 / 자유도) / (카이제곱 / 자유도)
1. 실습
1) library 호출
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
2) 카이제곱 리스트 연산 함수
- 1000번 시행
def normal(inp):
result = []
for i in range(1,1001):
tmp = np.random.normal(size = inp)
dummy = 0
for i in range(inp):
tmp2 = tmp[i] ** 2
dummy += tmp2
result.append(dummy)
return result
3) F 값 연산 함수
def f(inp1, inp2):
result1 = np.array(normal(inp1)) / inp1
result2 = np.array(normal(inp2)) / inp2
result = result1 / result2
return result
4) 데이터 프레임화
def make_group(inp):
num_0 = 0
num_1 = 0
num_2 = 0
num_3 = 0
num_4 = 0
num_5 = 0
num_6 = 0
num_7 = 0
num_8 = 0
num_9 = 0
num_10 = 0
num_11 = 0
num_12 = 0
num_13 = 0
num_14 = 0
num_15 = 0
num_16 = 0
num_17 = 0
num_18 = 0
num_19 = 0
num_20 = 0
for i in inp:
if i >= 20:
num_20 += 1
elif i >= 19:
num_19 += 1
elif i >= 18:
num_18 += 1
elif i >= 17:
num_17 += 1
elif i >= 16:
num_16 += 1
elif i >= 15:
num_15 += 1
elif i >= 14:
num_14 += 1
elif i >= 13:
num_13 += 1
elif i >= 12:
num_12 += 1
elif i >= 11:
num_11 += 1
elif i >= 10:
num_10 += 1
elif i >= 9:
num_9 += 1
elif i >= 8:
num_8 += 1
elif i >= 7:
num_7 += 1
elif i >= 6:
num_6 += 1
elif i >= 5:
num_5 += 1
elif i >= 4:
num_4 += 1
elif i >= 3:
num_3 += 1
elif i >= 2:
num_2 += 1
elif i >= 1:
num_1 += 1
elif i >= 0:
num_0 += 1
result = pd.DataFrame({
'standard' : ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', 'over20'],
'result' : [num_0, num_1, num_2, num_3, num_4, num_5, num_6, num_7, num_8, num_9, num_10,
num_11, num_12, num_13, num_14, num_15, num_16, num_17, num_18, num_19, num_20]
})
return result
2. 결과
1) F(1, 10)
result = make_group(f(1, 10))
plt.bar(result['standard'], result['result'])
2) F(1, 1000)
3) F(10, 1)
4) F(1000, 1)
5) F(1, 1)
6) F(20, 20)
7) F(1000, 1000)
3. 참고
'Science > 통계학' 카테고리의 다른 글
[통계학] python을 이용한 부트스트랩 구현 (2) | 2020.08.28 |
---|---|
[통계학] python을 통한 모평균의 신뢰구간 계산 (0) | 2020.08.24 |
[통계학] python을 통한 자유도에 따른 카이제곱 분포 그리기 (0) | 2020.08.19 |
[통계학] python으로 포아송 분포 함수 구현하기 (0) | 2020.08.18 |
[통계학] python을 통한 왜도 / 첨도 구현 (0) | 2020.08.16 |
Comments