Skip to main content

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)]