scipy
│
├── stats # 통계 분석과 확률 분포 관련 함수 제공
│ ├── norm # 정규분포 관련 함수 (PDF, CDF, 랜덤 샘플링 등)
| |── uniform * # 균등분포
| |── bernoulli * # 베르누이 분포
| |── binom * # 이항분포
│ ├── ttest_ind # 독립 두 표본에 대한 t-검정
│ ├── ttest_rel # 대응표본 t-검정
│ ├── mannwhitneyu # Mann-Whitney U 비모수 검정
│ ├── chi2_contingency # 카이제곱 독립성 검정
│ ├── shapiro # Shapiro-Wilk 정규성 검정
│ ├── kstest # Kolmogorov-Smirnov 검정 (분포 적합성 검정)
│ ├── probplot # Q-Q plot 생성 (정규성 시각화)
│ ├── pearsonr # Pearson 상관계수 계산
│ ├── spearmanr # Spearman 순위 상관계수 계산
│ └── describe # 기술 통계량 제공 (평균, 표준편차 등)
scipy.stats.norm - SciPy v1.15.0 manual
import scipy.stats as stats

scipy.stats.norm.rvs(loc, scale, size, random_state)
import scipy.stats as stats
import matplotlib.pyplot as plt
my_data = stats.norm.rvs(loc = 1150, scale = 150, size = 1000000)
plt.hist(my_data, bins = 100)

scipy.stats.norm.pdf(x, loc, scale)
stats.norm.pdf(x = 1380, loc = 1150, scale = 150)
# 0.0008208834801723304
scipy.stats.norm.cdf(x, loc, scale)
stats.norm.cdf(x = 1380, loc = 1150, scale = 150)
# 0.9374031272090931
scipy.stats.norm.ppf(q, loc, scale)
stats.norm.ppf(0.937, loc = 1150, scale = 150)
# 1379.5101382206744

from scipy.stats import uniform
# 균등 분포 생성 (예시: 0에서 1 사이)
uniform_dist = uniform.rvs(size=10, loc=0, scale=1)
# 결과 출력 (선택 사항)
uniform_dist
결과:
array([0.83322308, 0.51922008, 0.02131206, 0.43868753, 0.00472524,
0.34721848, 0.23020302, 0.93142512, 0.83851749, 0.92177397])
from scipy.stats import bernoulli
# p는 성공 확률 (0과 1 사이)
p = 0.5
# size는 생성할 샘플의 개수
size = 10
# 베르누이 분포 샘플 생성
samples = bernoulli.rvs(p, size=size)
samples
결과:
array([0, 0, 0, 1, 0, 1, 0, 0, 0, 0])
from scipy.stats import binom
# n: 시행 횟수 (3명)
# p: 성공 확률 (클릭 확률, 0.5로 가정)
# k: 성공 횟수 (클릭한 유저 2명 나올 경우)
n = 3
p = 0.5
k = 2
# 이항 분포 확률 계산
probability = binom.pmf(k, n, p)
probability
# 결과: 0.3750000000000001