1일차 종합 실습
- 엔진에 들어가는 고강도 커넥터 'TX-100'을 신규 생산 라인(라인 3)에서 양산
- TX-100 커넥터 두께의 설계 규격은 5.00mm ± 0.05mm
- 라인 3 가동 초기 일주일간 생산된 TX-100 커넥터의 두께 데이터를 수집
- 최근 조립 라인에서 일부 TX-100 커넥터가 규격 미달 또는 초과로 인해 조립 불량을 유발한다는 보고가 접수
- 라인 3의 공정이 안정적으로 운영되고 있는지, 그리고 조립 불량을 유발할 만한 이상 데이터(Outlier)가 존재하는지 통계적으로 검토하고자 함
컬럼 | 설명 |
---|---|
day | 측정일(1~7) |
measurement_id | 해당 일 내의 측정 순번(1~50) |
thickness | 측정된 커넥터 두께(mm) |
풀이
파일 열기
df = pd.read_excel('TX100.xlsx')
df.head()
평균
df.thickness.mean()
평균의 95% 신뢰구간
import pingouin as pg
pg.ttest(df.thickness, 5.000, confidence=0.95)
중간값
df.thickness.median()
두께의 중간값의 95% 신뢰구간(부트스트랩)
import scipy.stats as sp
import numpy as np
sp.bootstrap(
[df.thickness],
np.median,
confidence_level=0.95,
n_resamples=10000)
범위
df.thickness.max() - df.thickness.min()
IQR
Q1 = df.thickness.quantile(0.25)
Q3 = df.thickness.quantile(0.75)
IQR = Q3 - Q1
표준편차
df.thickness.std()
히스토그램
import seaborn as sns
sns.histplot(df.thickness, bins=10)
Z-score를 이용해 탐지한 이상치의 개수
df['Z_thickness'] = (df.thickness - df.thickness.mean()) / df.thickness.std()
df[df['Z_thickness'].abs() > 3]
IQR을 이용해 탐지한 이상치의 개수
upper_bound = Q3 + 1.5 * IQR
lower_bound = Q1 - 1.5 * IQR
df[(df.thickness < lower_bound) | (df.thickness > upper_bound)]