table of contents
- 실습 프로젝트 2 불량 원인 및 SPC 분석
실습 프로젝트 2 불량 원인 및 SPC 분석
문제
- 너네 제품 자꾸 규격 안맞아
- 5월 이후 기어박스커버 점점 커지는 것 같음
- 공정능력 분석하고 개선 대책 만들어와
1. 데이터 탐색 및 전처리
1-1. 데이터 생김새 확인
제품 스펙
<class 'pandas.DataFrame'> RangeIndex: 24 entries, 0 to 23 Data columns (total 8 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 product_code 24 non-null str 1 product_name 24 non-null str 2 spec_name 24 non-null str 3 unit 24 non-null str 4 target_value 24 non-null float64 5 lsl 24 non-null float64 6 usl 24 non-null float64 7 tolerance 24 non-null float64 dtypes: float64(4), str(4) memory usage: 1.6 KB total null count: 0품질 검사 기록
<class 'pandas.DataFrame'> RangeIndex: 42560 entries, 0 to 42559 Data columns (total 16 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 inspection_id 42560 non-null str 1 lot_id 42560 non-null str 2 lot_no 42560 non-null str 3 inspection_date 42560 non-null datetime64[us] 4 shift 42560 non-null str 5 line 42560 non-null str 6 product_code 42560 non-null str 7 spec_name 42560 non-null str 8 unit 42560 non-null str 9 target_value 42560 non-null float64 10 lsl 42560 non-null float64 11 usl 42560 non-null float64 12 measurement 41302 non-null float64 13 result 41302 non-null str 14 sample_no 42560 non-null int64 15 inspector_id 42560 non-null str dtypes: datetime64[us](1), float64(4), int64(1), str(10) memory usage: 5.2 MB total null count: 2516불량 기록
<class 'pandas.DataFrame'> RangeIndex: 767 entries, 0 to 766 Data columns (total 11 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 defect_id 767 non-null str 1 defect_date 767 non-null datetime64[us] 2 line 767 non-null str 3 shift 767 non-null str 4 product_code 767 non-null str 5 defect_type 767 non-null str 6 cause 735 non-null str 7 severity 767 non-null str 8 defect_qty 767 non-null int64 9 action 761 non-null str 10 inspector_id 767 non-null str dtypes: datetime64[us](1), int64(1), str(9) memory usage: 66.0 KB total null count: 38결측 확인
defect null count: cause 32 action 6 dtype: int64
공정 파라미터
<class 'pandas.DataFrame'> RangeIndex: 1716 entries, 0 to 1715 Data columns (total 12 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 param_id 1716 non-null str 1 record_date 1716 non-null datetime64[us] 2 shift 1716 non-null str 3 line 1716 non-null str 4 product_code 1716 non-null str 5 temperature_c 1680 non-null float64 6 pressure_bar 1716 non-null float64 7 spindle_speed_rpm 1716 non-null float64 8 feed_rate_mmmin 1716 non-null float64 9 coolant_flow_lmin 1674 non-null float64 10 vibration_mms 1659 non-null float64 11 has_defect 1716 non-null int64 dtypes: datetime64[us](1), float64(6), int64(1), str(4) memory usage: 161.0 KB total null count: 135결측 확인
defect null count: vibration_mms 57 coolant_flow_lmin 42 temperature_c 36 dtype: int64
1-2. 결측 처리
- 처리 방법
insp에서measurement가 NaN인 행은 측정 장비 오류 → 해당 행 삭제defect에서cause가 NaN인 건 →'원인미상'으로 대체defect에서action이 NaN인 건 →'미처리'로 대체params에서 수치형 컬럼의 NaN → 해당 라인의 평균값으로 대체- 처리 후 모든 테이블의 결측치가 0인지 확인
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 1. insp에서 measurement가 NaN인 행은 측정 장비 오류 → 해당 행 삭제
insp = insp.dropna(subset=['measurement']).reset_index(drop=True)
# 지금은 그냥 삭제하긴 했는데 다음엔 원본 보존하기
# 2. defect에서 cause가 NaN인 건 → '원인미상'으로 대체
defect['cause'] = defect['cause'].fillna('원인미상')
# 3. defect에서 action이 NaN인 건 → '미처리'로 대체
defect['action'] = defect['action'].fillna('미처리')
# 4. params에서 수치형 컬럼의 NaN → 해당 라인의 평균값으로 대체
num_cols = params.select_dtypes(include=['float64', 'int64']).columns
params[num_cols] = params[num_cols].apply(lambda x: x.fillna(x.mean()), axis=0)
# 5. 처리 후 모든 테이블의 결측치가 0인지 확인
print('spec null count after processing:', spec.isnull().sum().sum())
print('insp null count after processing:', insp.isnull().sum().sum())
print('defect null count after processing:', defect.isnull().sum().sum())
print('params null count after processing:', params.isnull().sum().sum())
spec null count after processing: 0
insp null count after processing: 0
defect null count after processing: 0
params null count after processing: 0
1-3. 분석용 추가 컬럼 생성
- 계획
insp테이블:month- 검사월deviation- 편차 = measurement - target_value (목표값 대비 얼마나 벗어났는가)is_fail- FAIL 여부 (0 또는 1)within_spec- 규격 이내 여부 (True/False, lsl ≤ measurement ≤ usl)
defect테이블:month- 불량 발생월
insp 처리 결과
defect 처리 결과
2. 불량 분석
2-1. 불량 유형별 파레토 분석
- 개념: 상위 20% 불량이 전체 불량 수량의 80%를 차지함. 그거 먼저 해결하기.
→ 외관불량, 치수불량, 표면조도불량이 합쳐서 73.66%의 불량을 차지함. 특히 첫 2가지가 높은 편.
2-2. 라인별 제품별 불량 분석
라인별 불량 수량 합계 vs 불량 건수
line 불량_수량_합계 불량_건수 건당 평균 불량 수 A라인 2,986 321 9.30 B라인 1,796 204 8.80 C라인 2,037 242 8.42 라인 $\times$ 불량유형별 불량 수량 히트맵
제품별 불량 수량 Top 5
product_code defect_qty PRD-001 1,753 PRD-003 1,702 PRD-005 1,375 PRD-004 853 PRD-006 579 Top 5 제품별 불량 유형(수량)
defect_type
product_code외관불량 치수불량 표면조도불량 형상불량 크랙 기타 PRD-001 542 544 258 192 134 83 PRD-003 634 436 228 168 123 113 PRD-005 435 347 207 171 86 129 PRD-004 359 216 69 104 57 48 PRD-006 155 157 52 164 44 7 Top 5 제품별 주 불량 유형
- PRD-001: 치수불량 (544개)
- PRD-003: 외관불량 (634개)
- PRD-005: 외관불량 (435개)
- PRD-004: 외관불량 (359개)
- PRD-006: 형상불량 (164개)
덤: 누가누가 불량을 많이 만들었나
요약
- A라인은 총체적 난국인 편. 불량 수량도 많고 건수도 많음. 건당 평균 불량 수도 제일 높음. 제일 자주 많이 불량을 낸다.
- B라인은 불량 건수는 적은데 수량이 많음. A라인 만큼은 아니지만 한번 불량을 낼 때 많이 냄.
- C라인은 딱 둘의 중간 정도 됨. A와 B를 고치다 보면 자연스럽게 원인을 알지도 모름. 당장 우선순위는 아닌듯?
- 제품 관점에서는 1, 3, 5번 제품이 제일 불량이 많은데, 우연히도? 딱 이 제품들만 서로 다른 두 라인에서 같이 생산함. 한 라인이 전담해서 생산하는 제품은 순위권에 들지 못했다.
- 추가로 라인별 제품별 top3 불량 수량을 확인해보니 A라인은 골고루 불량을 많이 만들었고, C라인은 종류별로 무난하게 불량을 만들었고, B라인도 무난한 수준.
2-3. 월별 불량 추이 분석
월별 총 불량 수량 추이
B라인: 5월 이전 vs 5월 이후 불량 수량
5월 이전(1~4월) 합계: 710
5월 이후(5~12월) 합계: 1,086
5월 이후 증가 여부: 증가 (이전 대비 153.0%)
심각도(severity)별 월별 추이
- 요약
- 유독 B라인에서만 5월 이후에 불량이 급증했고, 심각도별 불량 수량은 전체적으로 다 증가한 것을 봐서 증가한 불량들의 심각도는 골고루 분포한 것 같음
2-4. 불량 원인 심층 분석
- 목적: 외관불량 중에서는 어떤 문제가 많이 생기는가?
불량 유형별 세부 원인(cause) 건수 (길어서 외관불량 부분만 남김)
defect_type cause 건수 1 외관불량 이물질부착 60 2 외관불량 스크래치 53 3 외관불량 찍힘 53 4 외관불량 변색 45 5 외관불량 버(burr)잔존 44 27 외관불량 원인미상 10 상위 3개 불량 유형의 원인 분포
불량 처리 방법(action)별 비율
- 요약
- 이물질, 찍힘, 스크래치가 상위권이지만 극적으로 수가 많지는 않고, 대체로 골고루 문제가 있는 편
- 불량 처리는 재작업과 조건부합격이 제일 많음.
- 이건 뭐 뭘 확인하고자 하는 건지 이로부터 어떤 인사이트를 얻고자 하는 건지 모르겠음 그냥 확인만 한 것 같음
3. SPC 관리도 및 공정능력 분석
SPC(Statistical Process Control, 통계적 공정 관리)는 공정의 변동을 두 가지로 나눕니다.
- 우연원인: 항상 존재하는 자연스러운 산포 (관리한계 안에서 움직임)
- 특수원인: 설비 이상, 작업 오류 등 이상 변동 (관리한계 이탈 등)
관리도는 시계열로 측정값(또는 로트별 평균·범위)을 그려, 중심선(CL)과 관리 상·하한(UCL, LCL) 밖으로 나가는지 보고 특수원인을 탐지하는 도구입니다.
이탈이 보이면 현장에 알리고 원인 조사를 하는 것이 목적입니다.
- X̄-R 관리도: 로트별로 평균(X̄) 과 범위(R) 를 계산해,
- 위쪽: X̄ 관리도 (공정 중심의 변동)
- 아래쪽: R 관리도 (로트 내 산포)
를 그려 공정이 “관리 상태”인지 판단합니다.
문제에서 주어진 계수(n=5): A2=0.577, D3=0, D4=2.114
→ X̄ 한계: CL=X̿, UCL=X̿+A2×R̄, LCL=X̿−A2×R̄
→ R 한계: CL=R̄, UCL=D4×R̄, LCL=D3×R̄(=0)
- 목적: 고객이 클레임한 제품인 PRD-003의 관리도와 공정능력을 분석하겠다
3-1. PRD-003(샤프트-A) 직경 관리도
- 이상치가 있긴 한데 뭘 보고 어떤 생각을 하라는 것인지 모르겠음 → 제미나이 답변 받아옴
- 요약하자면 외부의 규격(규격한계선)은 충분히 만족하고 있으나, 원래 생산하던 폼(관리한계선)이 안 나서 생산품의 품질이 오락가락하는 중이다. 통제가 안되는 상태라는 말임. 냅두면 점점 더 통제가 안되고 품질이 더 떨어질 것.
- 제조 데이터 분석가의 기본 사고방식
- 관리한계와 규격한계의 분리: 관리한계선(UCL, LCL)은 공정 고유의 자연스러운 변동폭을 의미하며, 규격한계선(USL, LSL)은 고객이나 설계 도면이 요구하는 허용 오차입니다 [1, 2]. 분석가는 공정이 스스로 만들어내는 변동과 외부 요구사항을 철저히 분리하여 사고해야 합니다.
- 이상 원인 식별: 공정의 변동은 피할 수 없는 ‘우연 원인(Chance Cause)’과 통제 가능한 ‘이상 원인(Assignable Cause)’으로 나뉩니다 [1]. 분석가는 외부 요인에 의해 발생한 이상 원인을 데이터에서 찾아내어 제거하는 데 집중해야 합니다.
- 해석 순서 준수: 항상 하단의 R 관리도(산포)를 먼저 해석하고, 그 다음 상단의 $\bar{X}$ 관리도(평균)를 해석합니다. 공정의 산포가 안정적이지 않다면 평균 관리도의 중심선 및 한계선 자체가 통계적 신뢰성을 상실하기 때문입니다 [1].
- 제공된 그래프의 해석
- R 관리도 (산포 분석): 다수의 데이터 포인트(빨간 점)가 관리상한선(UCL)을 상향 이탈했습니다. 이는 특정 로트(Lot) 생산 시 제품 간 직경의 편차가 정상적인 통계적 범위를 넘어 비정상적으로 커졌음을 의미합니다. 현재 산포가 관리 상태에 있지 않습니다.
- $\bar{X}$ 관리도 (중심 위치 분석): 평균 직경을 나타내는 포인트들이 여러 번 UCL을 상향 이탈하거나 LCL을 하향 이탈했습니다. 공정의 중심값이 안정적으로 유지되지 못하고 흔들리고 있습니다.
- 규격 충족 여부 확인: $\bar{X}$ 관리도의 관리한계선(초록색 점선)이 규격한계선(노란색 점선)보다 폭이 훨씬 좁게 형성되어 있습니다. 통계적 관리한계를 이탈한 빨간 점들도 실제로는 모두 규격한계(USL, LSL) 내에 위치하고 있습니다.
- 도출해야 할 인사이트 및 향후 조치
- 공정의 잠재 능력과 현재 상태의 괴리: 현재 생산된 제품의 평균은 모두 규격 한계 내에 있으므로 당장의 불량품은 발생하지 않고 있습니다. 즉, 공정의 잠재적 능력은 우수합니다. 그러나 공정 자체가 불안정(Out of control)하기 때문에 언제 공정 산포가 규격을 벗어나는 치명적인 불량을 발생시킬지 예측할 수 없는 위험 상태입니다 [2].
- 원인 규명 (Root Cause Analysis): 산포와 평균이 급변한 특정 이탈 로트(예: L12021, L31221 부근 등)의 생산 이력을 즉시 추적해야 합니다. 작업자 교체, 원자재 로트 변경, 설비 설정값 변동 등의 이상 원인을 파악하고 제거해야 합니다.
- 공정능력지수(Cpk)의 재평가: 엄밀한 공정능력지수 산출은 공정이 통계적으로 안정된(In control) 상태일 때만 유효합니다 [1, 2]. 현재 상태에서의 수치 계산보다 이상 원인 제거를 통한 공정 안정화가 선행되어야 합니다.
참고문헌
[1] National Institute of Standards and Technology. (n.d.). 6.3.1.1. Shewhart X-bar and R and S Control Charts. e-Handbook of Statistical Methods. https://www.itl.nist.gov/div898/handbook/pmc/section3/pmc311.htm
[2] National Institute of Standards and Technology. (n.d.). 6.1.6. What is Process Capability?. e-Handbook of Statistical Methods. https://www.itl.nist.gov/div898/handbook/pmc/section1/pmc16.htm
3-2. PRD-003 직경 공정능력 분석
공정능력은 “공정이 규격을 얼마나 잘 만족하는지”를 Cp·Cpk로 정량화하는 것입니다.
Cp = (USL − LSL) / (6σ)
→ 규격 폭 대비 산포(6σ) 여유. 치우침은 반영하지 않음.
Cpk = min(CPU, CPL)
- CPU = (USL − X̄) / (3σ)
- CPL = (X̄ − LSL) / (3σ)
→ 평균 치우침까지 고려한 공정능력.
판정: Cpk ≥ 1.33 충분 / 1.0 ≤ Cpk < 1.33 관리필요 / Cpk < 1.0 부족
PRD-003은 A와 C라인만 생산했기 때문에 B라인은 비교 대상이 아님
PRD-003 직경 전체
Cp = 0.6303, Cpk = 0.6272 → 부족
라인별 Cp, Cpk
라인 Cp Cpk 판정 A라인 0.590064 0.583718 부족 C라인 0.676535 0.676207 부족 - Cpk 판정 해석
- A라인: Cpk=0.5837 → 부족
- C라인: Cpk=0.6762 → 부족
규격선 포함 히스토그램
- 요약
- 전체적으로 공정능력 완전 부족함
- 히스토그램 상에서 A라인은 오른쪽에 꼬리가 길고, C라인은 왼쪽에 꼬리가 길게 나타남 → A라인은 좀 크게 만들었고, C라인은 좀 작게 만들었음.
제미나이식 해석
제공된 A라인과 C라인의 히스토그램 및 공정능력지수(Cp, Cpk) 데이터를 바탕으로 한 해석은 다음과 같습니다.
- 현황 분석: 공정 중심의 안정성
- 지수의 정의: $C_p$는 중심 이동을 고려하지 않은 공정의 잠재적 산포(분산)를 의미하며, $C_{pk}$는 공정 평균의 치우침까지 반영한 실제 공정능력을 나타냅니다 [1].
- 중심화 여부: 두 라인 모두 $C_p$와 $C_{pk}$의 수치가 거의 동일하게 산출되었습니다(A라인: 0.590 $\approx$ 0.584, C라인: 0.677 $\approx$ 0.676). 두 지수가 같다는 것은 두 생산 라인의 평균 분포가 목표치(Target, 20.00)의 중앙에 정확하게 위치하고 있어 한쪽으로 치우치는 편향(Bias) 문제가 없음을 시사합니다 [1].
- 문제점 진단: 과도한 산포 및 구조적 불량
- 규격 초과: 공정능력지수($C_{pk}$)가 1.0 미만이라는 것은 공정의 자연스러운 산포폭($6\sigma$)이 고객이 허용하는 규격폭(USL - LSL)보다 넓다는 통계적 사실을 의미합니다 [1].
- 불량 양산 상태: 두 라인 모두 지수가 1.0을 크게 밑돌고 있으며(‘판정: 부족’), 히스토그램 상의 정규분포 곡선(검은색 실선) 양쪽 꼬리가 규격한계선(빨간색 점선)을 뚜렷하게 벗어나고 있습니다. 이는 현재 양쪽 라인 모두 설계 규격을 초과하는 불량품을 필연적으로 양산하고 있는 심각한 상태임을 나타냅니다.
- 라인 간 비교 및 개선 방향
- 산포 비교: A라인($C_{pk}=0.584$)에 비해 C라인($C_{pk}=0.676$)의 데이터 분포가 목표치 부근에 조금 더 밀집되어 있습니다. 즉, C라인의 산포 제어 수준이 A라인보다 상대적으로 우위입니다.
- 핵심 개선 과제: 현재 두 라인은 평균값(중심)을 조정할 필요가 없습니다. 설비 노후화, 원자재 불균일, 측정 오차 등 구조적인 산포를 발생시키는 근본 원인(Root Cause)을 추적하고 제거하여 분포의 폭을 좁히는 조치가 시급합니다.
참고문헌
[1] National Institute of Standards and Technology. (n.d.). 6.1.6. What is Process Capability?. e-Handbook of Statistical Methods. https://www.itl.nist.gov/div898/handbook/pmc/section1/pmc16.htm
- 현황 분석: 공정 중심의 안정성
3-3. PRD-005(기어박스커버) 두께 이상 탐지
고객 클레임(“5월 이후 두께가 커진다”)을 SPC로 확인하는 문제입니다.
1~4월만으로 관리한계 설정
“정상 구간”을 1~4월로 두고, 이 기간 데이터만으로 CL·UCL·LCL을 구해야, 5월 이후의 이상(평균 이동) 을 관리한계로 잡을 수 있습니다. 전체 기간으로 한계를 만들면 5월 이후 상승이 한계 안에 섞여 들어가 탐지가 어렵습니다.
- 개별값 관리도(I-MR)
- I (Individual): 로트별 평균을 시계열로 그리는 관리도.
- 관리한계: 1~4월 로트 평균의 평균을 CL, 이동범위(MR)로 산포를 추정해 UCL/LCL을 둡니다.
- 이동범위: 연속한 두 로트 평균의 차이 절댓값.
- σ 추정: MR 평균(MR̄)을 사용하며, 개별값일 때는 σ = MR̄ / d2, d2=1.128(n=2).
- UCL = CL + 3σ, LCL = CL − 3σ.
5월 이후 이탈점
관리한계는 1~4월 기준으로 고정하고, 5월 이후 로트 중 UCL 초과 또는 LCL 미만인 점을 빨간색으로 표시합니다.
Nelson Rule 2
“연속 7개 점이 중심선 같은 쪽”이면 위반.
즉, 연속 7개가 모두 CL 위이거나 모두 CL 아래인 구간이 있는지 확인합니다.
- 제미나이식 해석 (요약: 고객의 클레임이 사실임을 확인했을 뿐)
클레임의 통계적 사실 확인
고객의 ‘5월부터 규격이 커졌다’는 클레임은 제공된 3가지 데이터를 통해 명백한 통계적 사실로 입증됩니다. 5월을 기점으로 제품 두께의 중심값이 상향 이동하는 ‘공정 평균의 이동(Shift in process mean)’ 현상이 뚜렷하게 발생했습니다.
- Nelson Rule 2의 의미와 데이터 해석
- Nelson Rules (넬슨 규칙): 통계적 공정 관리(SPC)에서 측정된 변수가 일관성 있는 정상 상태인지, 혹은 예측 불가능한 ‘관리 이탈(Out-of-control)’ 상태인지 판별하기 위해 사용하는 표준화된 규칙입니다.
- Rule 2의 정의: 공정의 중심선(Mean/Centerline)을 기준으로 동일한 측면(위 또는 아래)에 9개 이상의 데이터 포인트가 연속적으로 나타나는 현상을 의미합니다. (일반적으로는 9개를 기준삼으나, 이번 문제에서는 좀 더 예민하게 판별하도록 7개를 기준으로 삼았음)
- 표 데이터 해석: 첨부된 표에서 5월 생산분(L28081 로트)부터 Nelson Rule 2가 연속적으로 ‘위(Up)’ 방향으로 발동되었습니다. 이는 단순한 측정 오차나 무작위 변동이 아니라, 공정의 평균값 자체가 구조적이고 지속적으로 상승(Prolonged deviation)하는 방향으로 편향되었음을 통계적으로 증명하는 결정적 근거입니다.
- 관리도(Control Chart) 및 추이 그래프 종합 분석
- 기준선의 설정: 두께 개별값 관리도(I 관리도)의 파란색 중심선(CL)과 초록색 점선인 관리한계선(UCL, LCL)은 공정이 정상적으로 유지되던 과거 1~4월의 데이터를 기준으로 계산된 것입니다.
- 구조적 변화 탐지: 5월 이후의 빨간색 점들은 과거의 정상적인 공정 변동 범위를 완전히 벗어나 상단에 새로운 평균대를 형성하고 있습니다. 월별 평균 추이 그래프 역시 8.000 부근이던 수치가 5월 이후 8.020~8.030 선으로 급상승한 것을 뒷받침합니다.
결론 및 필수 조치 사항
현재 생산 라인은 5월을 기점으로 내부 공정에 치명적인 구조적 변형을 겪었습니다. 작성하신 자료는 단순히 데이터를 나열한 것이 아니라, 공정 내 특별 원인(Special Cause)이 개입되었음을 알리는 명확한 알람입니다. 문제를 해결하기 위해서는 해당 현상이 일상적인 변동으로 굳어지기 전에 발생 원인을 찾아 조치해야 합니다.
4. 공정 파라미터 영향 분석
4-1. 공정 파라미터 상관관계 분석
Part 4는 공정 파라미터(온도, 진동, 압력 등)와 품질(불량 발생 여부 등)의 관계를 보는 단원입니다. 상관이 큰 파라미터는 원인 추적·관리 우선순위 후보가 됩니다(상관 ≠ 인과이지만, 현장에서 단서로 활용).
1번 – 수치형 컬럼 간 상관관계 히트맵
params에서 수치형 컬럼만 뽑아 상관행렬(.corr())을 구한 뒤,sns.heatmap(..., annot=True, fmt='.2f', cmap='coolwarm', center=0)으로 시각화합니다.2번 – has_defect와 가장 상관 높은 파라미터
상관행렬에서
has_defect행(또는 열)을 보고,has_defect자신을 제외한 나머지 중 절댓값이 가장 큰 컬럼을 찾으면 됩니다.has_defect와 가장 상관이 높은 파라미터: spindle_speed_rpm
상관계수: -0.0547
3번 – 라인별 상관관계 비교 (라인별 3개 히트맵)
A·B·C 라인별로
params를 나눈 뒤, 각 라인에서 수치형 컬럼 상관행렬을 구하고, 1×3 서브플롯에 히트맵 3개를 그려 비교합니다.
- 질문: 상관관계 절댓값이 0.1 미만이면 사실상 무관한 데이터라는 거 아니냐?
- 보통은 타당한 의견이나, 이건 다르게 생각해야 함. has_defect는 이진 데이터이고, 나머지는 모두 연속 데이터이기 때문에 상관관계 값에 한계가 있다. 낮게 나올 수밖에 없음. 그러므로 값이 낮아도 무시할 수 없다.
- Simpson’s Paradox라는 게 있다. 지금 데이터에서도 보이듯이 라인을 모두 통합한 데이터에서는 spindle_speed_rpm과 불량 여부의 상관관계가 -0.05밖에 안나오지만, 라인별로 분리해서 보면 A라인에서 -0.11로 절댓값이 커지는 것을 확인할 수 있다. 이와 같이 서로 다른 특성을 가진 하위 집단을 무작정 병합해서 분석했을 때, 각 집단 내부에 실제 존재하는 유의미한 상관관계가 희석되거나 왜곡되는 통계적 착시 현상을 심슨의 역설(Simpson’s Paradox)이라고 한다.
- 즉 전체 라인을 통합해서 그린 상관관계 히트맵은 분석 대상으로 삼을 수 없다. 라인마다 상황이 다르다는 것이 라인별 히트맵에서 확인되었기 때문에 그쪽을 보는 게 맞다. 특히 상관관계가 잘 나타난 A라인을 좀 더 파보는 것이 적절하다.
제미나이식 해석
제조 데이터 분석가가 해당 형태의 상관관계 히트맵 데이터를 처음 접했을 때, 단순히 수치의 높고 낮음을 넘어 통계적 타당성과 데이터의 구조적 특성을 파악하기 위해 전개하는 사고 과정은 다음과 같습니다. 필기 노트에 정리할 수 있도록 핵심 단계별로 요약해 드립니다.
전체 데이터 집계의 함정 파악 및 층화(Stratification)
분석가는 첫 번째 ‘전체 데이터 히트맵’을 보았을 때, 다양한 생산 라인이나 작업 조건에서 수집된 데이터가 한데 섞여(Lumped together) 실제 의미 있는 패턴이 가려져 있을 가능성을 즉시 의심해야 합니다.
- 층화의 적용: 층화는 품질 관리의 7가지 기본 도구 중 하나로, 전체 데이터를 생산 라인, 설비, 작업자 등 동질적인 하위 그룹(Subgroups)으로 나누어 분석하는 기법입니다.
- 분석적 사고: 두 번째 ‘라인별 히트맵’처럼 데이터를 분리(Stratify)했을 때 비로소 A, B, C 라인 각자의 고유한 결함 원인과 변동성이 드러나며, 전체 집단만 연구해서는 문제 해결의 실마리를 얻을 수 없음을 인지해야 합니다.
선형 상관계수(Pearson Correlation)의 한계 인지
히트맵에 표시된 수치는 피어슨 상관계수로, 두 변수 간의 ‘선형적(Linear)’ 관계의 강도만을 측정합니다. 분석가는 절대 수치가 낮게 나왔을 때 이 지표의 태생적 한계를 떠올려야 합니다.
- 비선형성(Non-linearity) 의심: 제조 공정에서는 파라미터가 특정 타겟값(Target)을 유지할 때 정상이고, 그보다 너무 높거나 낮으면 모두 불량이 발생하는 ‘U자형’ 등 복잡한 패턴(Curve)이 자주 발생합니다.
- 분석적 사고: 상관계수가 0에 가깝다고 해서 변수 간에 아무런 관계가 없다고 단정해서는 안 됩니다. 선형 상관계수는 곡선 형태의 비선형적 관계를 전혀 포착하지 못하기 때문입니다. 따라서 단순 수치 확인에 그치지 않고, 반드시 산점도(Scatter plot) 등 시각적 검증이나 의사결정나무 등 비선형 모델링을 병행해야 합니다.
다중공선성(Multicollinearity) 확인 및 통제
분석가는 독립변수(공정 파라미터)와 종속변수(불량 여부) 간의 관계뿐만 아니라, 독립변수들 상호 간의 상관관계 영역(히트맵의 회색 또는 옅은 파란색/빨간색 부분)도 유심히 관찰합니다.
- 다중공선성의 위험: 독립변수들끼리 강한 상관관계를 가지는 현상을 다중공선성이라고 합니다. 예를 들어, 온도와 압력이 서로 완벽히 연동되어 움직인다면, 이 데이터로 만든 예측 모델은 어떤 변수가 불량에 진짜 영향을 미쳤는지 구분하지 못하여 계수가 불안정해지고 신뢰성을 상실합니다.
- 분석적 사고: 제공된 히트맵들에서는 공정 파라미터 상호 간의 상관계수가 대부분 매우 낮으므로(0.1 미만), 다중공선성 문제가 발생하지 않는 건강한(Orthogonal) 데이터셋임을 확인하고 다음 단계의 예측 모델링을 안심하고 진행할 수 있습니다.
4-2. 불량 발생 조건 분석
불량 vs 정상 그룹의 주요 파라미터 평균 비교
has_defect == 1(불량)과has_defect == 0(정상)으로 나눈 뒤, 수치형 파라미터(온도, 압력, 진동 등)의 평균을 구해 한 표로 비교합니다.→ 불량이 날 때 어떤 파라미터가 높은지/낮은지 한눈에 보게 하는 단계입니다.
정상(has_defect=0) 불량(has_defect=1) 편차 temperature_c 40.31 40.18 0.13 pressure_bar 4.99 5.04 -0.05 spindle_speed_rpm 3,007.62 2,957.69 49.93 feed_rate_mmmin 199.89 199.51 0.38 coolant_flow_lmin 14.79 14.54 0.26 vibration_mms 0.45 0.51 -0.06 온도 구간별 불량률
temperature_c를 pd.cut으로 구간화(~35, 35~40, 40~45, 45~50, 50~)한 뒤,구간별 불량률 = (has_defect 합계 / 해당 구간 건수) × 100 을 계산하고 막대 차트로 그립니다.
temp_bin 전체 건수 불량 수 불량률 ~35 65 2 3.08 35~40 782 48 6.14 40~45 725 31 4.28 45~50 137 9 6.57 50~ 7 0 0.00 불량 발생 임계 온도
위 막대 차트와 표를 보고, “어느 온도 구간부터 불량률이 뚜렷이 올라가는지”를 짧게 해석합니다.
(예: 45°C 이상 구간에서 불량률이 높다 → 임계에 가까운 온도대가 있다고 해석)
불량률이 가장 높은 구간: 45~50 (6.6%)
- 제미나이식 해석
- 변수별 중심 위치 및 산포 분석 (박스플롯 및 평균 표 해석)
spindle_speed_rpm(주축 회전수): 정상품 대비 불량품의 평균 회전수가 약 50 RPM 낮습니다. 박스플롯 상에서도 불량 집단의 중앙값(Median)과 전체 분포가 뚜렷하게 하향 이동해 있습니다. 이는 회전수 저하가 불량 발생의 핵심 원인 중 하나임을 통계적으로 지시합니다.vibration_mms(진동): 불량 집단의 평균 진동 수치(0.51)가 정상 집단(0.45)보다 높으며, 3사분위수(Q3)를 포함한 산포 역시 높게 형성되어 있습니다. 진동의 증가는 불량 발생과 양의 상관관계를 가집니다.- 나머지 변수:
temperature_c,pressure_bar,feed_rate_mmmin,coolant_flow_lmin의 경우 정상 집단과 불량 집단 간의 중앙값 및 평균 편차가 미미하여, 단일 변수의 통계적 요약값만으로는 불량을 판가름하는 유의미한 기준점이 되지 못합니다.
- 비선형적 관계 및 표본 크기의 오류 (온도 구간별 데이터 해석)
- 비선형적 불량 패턴: 온도 구간별 불량률 막대그래프를 보면 온도가 상승함에 따라 불량률이 단순 비례하여 증감하지 않습니다. 35~40℃(6.14%)와 45~50℃(6.57%) 구간에서 불량률이 급증하고 40~45℃(4.28%) 구간에서는 오히려 감소하는 비선형적(Non-linear) 패턴이 관찰됩니다.
- 표본 크기의 통계적 한계: 50℃ 이상 구간의 불량률이 0.00%로 나타났으나, 해당 구간의 전체 데이터 건수는 7건에 불과합니다. 이는 전체 데이터세트에서 극히 일부분을 차지하므로 모집단을 대변할 수 있는 통계적 유의성(Statistical significance) 요건을 충족하지 못합니다. 따라서 표본 크기(Sample size)가 부족한 데이터를 근거로 50℃ 이상 구간이 불량으로부터 안전하다고 결론 내리는 것은 심각한 통계적 오류입니다.
데이터 분석가의 종합 인사이트
이전의 선형 상관관계 분석에서는 절댓값이 낮아
temperature_c의 영향을 간과할 위험이 있었으나, 데이터를 구간화(Binning)하여 분석한 결과 특정 온도 대역에서 불량이 집중되는 현상이 확인되었습니다. 데이터 분석가로서 도출해야 할 향후 조치 사항은 다음과 같습니다.spindle_speed_rpm이 특정 임계치 이하로 떨어지지 않도록 하한 관리 한계(LCL)를 재설정하고 현장 알람 시스템을 연동해야 합니다.vibration_mms의 상승을 유발하는 설비적 요인(베어링 마모, 결속 불량 등)을 즉각 점검해야 합니다.- 설비 온도가 불량 집중 구간인 35~40℃ 및 45~50℃에 머무는 시간을 최소화하도록 냉각 시스템(Coolant)의 제어 로직을 최적화해야 합니다.
- 변수별 중심 위치 및 산포 분석 (박스플롯 및 평균 표 해석)
제미나이에게 질문: 박스플롯을 보면 불량 데이터보다 정상 데이터 쪽에 이상치가 훨씬 더 많다. 보통은 그 반대여야 하지 않나? 아니면 오히려 불량이 정상보다도 더 일정한 조건에서 발생한다는 뜻으로 봐야 하는가?
데이터 분석에서 흔히 접하는 통계적 착시 현상과 제조 공정의 특성을 아주 예리하게 짚어내셨습니다. 결론부터 말씀드리면, 정상 데이터 쪽에 이상치(Outlier) 점이 훨씬 더 많이 표시되는 것은 통계학적으로 지극히 자연스러운 현상입니다.
그 이유와 사용자께서 제시하신 가설에 대한 검증은 다음과 같습니다.
표본 크기(Sample Size)의 차이로 인한 통계적 착시
박스플롯에서 점으로 찍히는 ‘이상치’는 품질이 나쁜 불량품을 의미하는 것이 아닙니다. 이는 단순히 해당 집단의 1사분위수(Q1)와 3사분위수(Q3)를 기준으로, 사분위수 범위(IQR)의 $1.5 \times IQR$을 벗어난 수학적 극단값을 의미할 뿐입니다.
- 확률적 필연성: 데이터가 정상적인 정규분포를 따른다고 가정할 때, 통계적으로 전체 데이터의 약 0.8%는 이 $1.5 \times IQR$ 경계선(Inner fence) 바깥에 위치하게 됩니다.
- 모수의 차이: 이전 데이터 표를 기준으로 정상 데이터는 수천 건인 반면, 불량 데이터는 수십 건에 불과합니다. 표본의 크기($N$)가 클수록 0.8%에 해당하는 절대적인 점의 개수가 늘어나기 때문에, 정상 집단에서 훨씬 더 많은 이상치가 시각적으로 관찰되는 것입니다.
결함 발생 조건의 특수성 (사용자 가설 검증)
“불량이 정상보다 더 일정한 조건에서 발생한다는 뜻으로 봐야 할까?”라는 사용자님의 추론은 제조 데이터 분석 관점에서 매우 정확한 통찰입니다.
- 정상 공정의 포용성: 정상 상태의 공정은 외부 규격 한계(USL, LSL)를 넘지 않는 선에서 작업자의 교체, 설비의 미세한 예열 상태 변화, 원자재의 자연스러운 편차 등 다양하고 넓은 범위의 변동성을 모두 포용합니다. 이 넓은 변동성의 양극단이 정상 집단의 이상치로 표현됩니다.
- 불량 조건의 협소함: 반면, 불량은 설비의 회전수가 특정 수준 이하로 떨어지거나 특정 온도 대역에 진입하는 등, 매우 좁고 치명적인 ‘특정 물리적 조건’이 충족되었을 때만 국소적으로 발생합니다. 따라서 불량 집단 데이터들은 자기들끼리 좁은 범위에 뭉쳐 있는(산포가 작은) 경향을 보이며, 이로 인해 자기 집단 내에서의 극단값(이상치) 발생 빈도가 낮아집니다.
정상 집단에 표시된 수많은 이상치들이 실제로는 불량이 아니라 ‘표본 크기에 따른 통계적 착시’이자 ‘허용 가능한 자연 변동’의 일부라는 점을 이해하기. 시각적인 착시를 배제하기 위해, 정상 집단의 극단값들이 실제 제품 설계 규격(USL/LSL)을 위협하는 수준인지 숫자 데이터로 직접 검증 가능
추가 분석
파라미터별 defect 여부 박스플롯에서 정상 데이터에 오히려 이상치가 많았다. 이 이상치들이 허용 가능한 값인지, 정말로 outlier인지 확인하겠다.
통계적 이상치 수치 추출
가장 먼저 통계적 시각화 도구인 박스플롯이 이상치로 판정한 정확한 수치를 확보해야 합니다.
- IQR 산출: 정상 집단 데이터에서 1사분위수($Q_1$)와 3사분위수($Q_3$)를 도출하고, 사분위수 범위(IQR)를 $Q_3 - Q_1$로 계산합니다.
- 이상치 경계 설정 및 추출: 수학적 이상치 경계선인 하한선($Q_1 - 1.5 \times IQR$) 미만, 또는 상한선($Q_3 + 1.5 \times IQR$) 초과에 해당하는 개별 데이터 포인트들의 실제 수치를 모두 추출합니다.
파라미터 Q1 Q3 IQR 하한선 상한선 이상치 개수 temperature_c 38.12 42.30 4.17 31.86 48.56 27 pressure_bar 4.65 5.31 0.66 3.66 6.30 18 spindle_speed_rpm 2,872.00 3,150.00 278.00 2,455.00 3,567.00 8 feed_rate_mmmin 186.72 213.80 27.08 146.11 254.41 18 coolant_flow_lmin 13.50 16.10 2.60 9.60 20.00 11 vibration_mms 0.25 0.57 0.32 -0.24 1.05 73 물리적 규격 한계(USL/LSL)와의 직접 대조
통계적 기준과 현장의 물리적 기준(고객 요구사항)을 교차 검증합니다.
- 규격 한계 확인: 고객이나 설계 도면이 요구하는 해당 변수(예:
spindle_speed_rpm,temperature_c)의 공식적인 규격상한(USL)과 규격하한(LSL) 수치를 확인합니다. - 조건 검증: 앞서 추출한 통계적 이상치 x가 $LSL \le x \le USL$ 범위를 만족하는지 확인합니다.
- 해석: 박스플롯 상에서 점으로 표시된 이상치라 할지라도 이 규격 범위 안에 존재한다면, 이는 공정의 자연스러운 산포 내에 있는 ‘정상(합격품)’입니다. 해당 범위를 벗어난 데이터만이 설계 규격을 위협하는 수치로 판정됩니다.
파라미터 LSL USL 이상치_총개수 규격_내 규격_초과 temperature_c 24.16 58.04 27 27 0 pressure_bar 2.54 7.24 18 18 0 spindle_speed_rpm 1,965.40 4,041.60 8 8 0 feed_rate_mmmin 93.54 303.26 18 18 0 coolant_flow_lmin 6.12 23.48 11 11 0 vibration_mms -0.44 3.33 73 73 0 - 규격 한계 확인: 고객이나 설계 도면이 요구하는 해당 변수(예:
집단 전체의 공정능력지수(Cpk) 산출
개별 데이터 확인을 넘어, 정상 집단 전체의 분포가 규격 대비 얼마나 안전한지 정량적으로 평가해야 합니다.
- Cpk 계산: 정상 집단 데이터의 평균($\mu$)과 표준편차($\sigma$)를 바탕으로 다음 공식을 사용하여 실제 공정능력을 산출합니다.
- 수치 평가: 산출된 값이 1.33(일반적인 제조 안전 기준) 이상이라면, 정상 집단에서 발생한 통계적 이상치들을 포함하더라도 전체 공정이 규격 한계 내에서 안전하게 통제되고 있음을 수학적으로 증명하는 것입니다.
파라미터 평균 표준편차 Cpk 판정 temperature_c 40.31 3.26 1.65 충분 pressure_bar 4.99 0.50 1.50 충분 spindle_speed_rpm 3,007.62 202.01 1.71 충분 feed_rate_mmmin 199.89 20.30 1.70 충분 coolant_flow_lmin 14.79 2.00 1.45 충분 vibration_mms 0.45 0.30 0.98 부족
- 결과 해석
통계적 이상치와 물리적 규격의 불일치 증명
‘2. 규격(LSL/USL) 대조’ 표를 보면, 박스플롯 상에서 식별된 총 155개의 통계적 이상치(Outlier)가 단 하나도 빠짐없이 모두 실제 제품 규격(USL, LSL) 내에 존재하는 것으로 확인되었습니다 [1, 2].
- 해석: 이는 정상 집단에 수많은 점(이상치)이 찍힌 현상이 제품의 품질 불량을 의미하는 것이 아니라, 허용된 규격 한계 내에서 발생하는 공정의 자연스러운 우연 변동(Chance cause variation)이었음을 수학적으로 확정하는 결과입니다 [2].
정상 집단의 공정능력(Cpk) 양극화 현상
‘3. 정상 집단 Cpk’ 표의 분석 결과, 파라미터별로 공정 통제 수준이 극명하게 갈리고 있습니다.
- 안정적인 파라미터 (Cpk > 1.33):
temperature_c,pressure_bar,spindle_speed_rpm,feed_rate_mmmin,coolant_flow_lmin의 $C_{pk}$는 모두 1.45 이상으로 산출되었습니다. 이는 해당 변수들의 평균이 목표치에 잘 맞추어져 있고 산포 또한 좁아, 양산 공정으로서의 통계적 안전성(일반적 기준치 1.33 이상)을 충분히 확보하고 있음을 의미합니다 [1]. - 위험 파라미터 (vibration_mms, Cpk = 0.98): 정상 제품들로만 구성된 집단임에도 불구하고 진동(
vibration_mms)의 $C_{pk}$가 1.0 미만으로 도출되었습니다.
- 안정적인 파라미터 (Cpk > 1.33):
데이터 분석가의 최종 결론 및 인사이트
- 잠재적 불량 원인 확정: 진동(
vibration_mms)은 비록 이번 정상 집단 데이터에서는 운 좋게 규격을 벗어나지 않았으나, 구조적인 산포 자체가 규격 한계폭보다 넓거나 중심이 치우쳐 있어 언제든 불량을 양산할 수 있는 시한폭탄 같은 변수임이 증명되었습니다. 앞선 상관관계 분석에서 진동 수치가 높을수록 불량이 증가했던 원인이 바로 이 취약한 공정능력에 있습니다. - 착시의 배제: 회전수(
spindle_speed_rpm)는 불량 발생의 핵심 원인이지만, 정상품을 생산할 때는 1.71이라는 우수한 통제력을 보입니다. 즉, 평소에는 관리가 잘 되다가 ‘특정 조건’에서만 회전수가 급락하여 불량을 유발하는 특성을 가집니다.
- 잠재적 불량 원인 확정: 진동(
4-3. 검사원별 측정 편차 분석
측정 시스템 신뢰성: 같은 제품·같은 항목을 여러 검사원이 측정할 때 결과가 검사원마다 크게 달라지면, 불량/양품 판정이 흔들릴 수 있어 검사원별 편차를 확인하는 단계입니다.
검사원별 평균 측정값
insp에서 PRD-001 + 외경만 필터한 뒤,inspector_id별로measurement평균을 구해 표로 비교합니다.inspector_id 평균 측정값 건수 INS-01 49.9997 259 INS-02 49.9978 288 INS-03 49.9992 291 INS-04 50.0006 379 INS-05 49.9997 239 INS-06 49.9994 357 INS-07 50.0024 259 INS-08 50.0017 255 박스플롯
동일 데이터로 x = inspector_id, y = measurement 박스플롯을 그려, 검사원별 분포·중앙값·이상치를 비교합니다.
INS-07, INS-08 체계적 편차
검사원별 평균(또는 중앙값)을 구한 뒤, INS-07·INS-08이 전체 평균이나 다른 검사원보다 일관되게 높은지 표/문장으로 정리합니다.
전체 평균: 50.000022
INS-07 평균: 50.002418 (전체보다 높음)
INS-08 평균: 50.001722 (전체보다 높음)
그 외 검사원 평균: 49.999394
→ INS-07, INS-08 모두 그 외 검사원 평균보다 높아 체계적으로 높게 측정하는 경향이 있음.
ANOVA (일원분산분석)
검사원을 그룹으로 두고, “그룹 간 평균 차이가 통계적으로 유의한가?”를 검정합니다.
scipy.stats.f_oneway(그룹1배열, 그룹2배열, ...)를 사용하고, p-value가 0.05보다 작으면 “검사원 간 차이가 유의하다”고 해석합니다.F 통계량: 2.2081, p-value: 0.030956
→ p < 0.05 이므로 검사원 간 측정값 평균 차이는 통계적으로 유의합니다.
덤: 특정 검사원(7, 8)의 측정 편차가 허용 가능한 수준인가? → OK
=== PRD-001 외경: 검사원 7·8번 편차 허용 여부 === 규격: LSL=49.95, USL=50.05, 공차 폭=0.09999999999999432 전체 평균: 50.000022 INS-07 평균: 50.002418 → 편차(바이어스): 0.002396 INS-08 평균: 50.001722 → 편차(바이어스): 0.001699 허용 편차(공차의 10% 기준): ±0.005000 판정 (허용 범위 내 여부): INS-07: 허용 범위 내 INS-08: 허용 범위 내
5. 품질 종합 보고서 대시보드
5-1. 품질 종합 대시보드
plt.subplot() 또는 GridSpec으로 2행 3열 (6패널) 대시보드를 만드세요. Figure 크기: (20, 12)
| 위치 | 차트 | 내용 |
|---|---|---|
| (1,1) | 파레토 차트 | 불량 유형별 수량 + 누적비율 |
| (1,2) | 히트맵 | 라인 × 불량유형 불량수량 |
| (1,3) | 라인 차트 | 월별 불량 수량 추이 (라인별) |
| (2,1) | 히스토그램 | PRD-003 직경 분포 + 규격선 |
| (2,2) | 관리도 | PRD-005 두께 시계열 (관리한계 포함) |
| (2,3) | 막대 차트 | 온도 구간별 불량률 |
분석 결론 (참고 답안)
불량 현황 요약
불량 유형별로는 외관불량·치수불량·형상불량 등이 상위를 차지하며, 상위 3개 유형이 전체 불량 수량의 약 73.7%를 설명한다. 제품별로는 PRD-001은 치수불량(544건), PRD-003은 외관불량(634건), PRD-005는 외관불량(435건), PRD-004는 외관불량(359건)이 주된 불량 유형이며, 라인별·제품별 불량 수량 분석에서 Top 3 불량 제품의 라인별 분포가 시각화되었다. 월별 추이에서는 B라인에서 5월 이후 불량 수량이 5월 이전(710건) 대비 약 153% 증가(5월 이후 1,086건)하여, 고객 클레임과 연계해 볼 때 치수 관련 불량(직경·두께) 및 5월 이후 B라인 불량 증가에 대한 집중 검토가 필요하다.
PRD-003 직경 문제
PRD-003(샤프트-A) 직경에 대한 공정능력 분석 결과, 전체 Cp 약 0.63·Cpk 약 0.63, A라인 Cpk 약 0.58, C라인 Cpk 약 0.68로 모두 1.0 미만이어서 공정능력 부족으로 판정된다. 이는 고객이 제기한 “직경 규격 이탈이 빈번하다”는 내용과 부합하며, 규격(USL/LSL) 대비 산포 및 치우침이 크다는 의미이다. PRD-003 직경 데이터는 B라인에 없어 라인별 비교는 A라인·C라인만 수행되었으며, A라인이 C라인보다 Cpk가 낮아 A라인 셋업·공구·작업 조건 개선이 특히 시급하다.
PRD-005 두께 이상
1~4월 데이터로 관리한계(CL, UCL, LCL)를 설정한 뒤 전체 기간 로트별 평균 두께를 관리도에 올린 결과, 5월 이후 구간에서 관리 상한 이탈 또는 평균이 위쪽으로 이동하는 패턴이 관찰되었다. 이는 고객이 언급한 “5월 이후 두께가 커진다”는 현상과 일치한다. Nelson Rule 2(연속 7점이 중심선 같은 쪽) 위반 여부도 확인하여, 특수원인 가능 구간을 추가로 식별하였다. 원인은 데이터만으로 단정할 수 없으나, 5월 전후 공정·설비·작업 변경 이력, B라인 불량 증가와의 시기적 일치를 고려할 때 해당 시점의 설비·공정·작업 변경 조사가 타당하다.
공정 파라미터 영향
상관분석 결과, 전체 데이터를 통합했을 때
has_defect(불량 발생 여부)와spindle_speed_rpm(주축 회전수)의 상관계수는 -0.05 수준으로 옅게 나타났다. 그러나 생산 라인별로 층화(Stratification) 분석을 수행한 결과, A라인에서 해당 파라미터의 상관계수가 -0.11로 뚜렷한 음의 상관관계를 보였다. 이는 전체 데이터 집계 시 개별 집단의 특성이 희석되는 심슨의 역설(Simpson’s Paradox) 현상이며, 실제로는 A라인의 회전수 저하가 주요 불량 요인임을 입증한다. 온도(temperature_c) 구간별 분석에서는 45~50℃ 구간의 불량률이 약 6.57%로 가장 높게 나타나, 특정 고온 대역 진입 시 불량이 집중되는 비선형적 관계가 확인되었다.추가로 정상품(has_defect=0) 집단 데이터만으로 공정능력지수(Cpk)를 분석한 결과, 다른 파라미터들은 Cpk 1.45 이상으로 안정적이었으나 진동(
vibration_mms) 파라미터의 Cpk는 0.98로 산출되었다. 이는 당장 합격품이 생산되는 중에도 진동 변수는 공정 통제력을 완전히 상실한 상태임을 수학적으로 증명하며, 언제든 대량 불량을 유발할 수 있는 구조적 위험 요인이다.검사 시스템 문제
PRD-001 외경 측정 데이터에 대한 일원분산분석(ANOVA) 결과, 검사원 간 측정값 차이는 통계적으로 유의했으며 특히 INS-07과 INS-08이 상대적으로 높게 측정하는 경향이 확인되었다. 그러나 두 검사원의 최대 측정 편차(약 0.0024)는 해당 제품 공차 허용폭의 10%(±0.005) 이내에 안정적으로 분포하고 있다. 따라서 현재 발생 중인 검사원 간의 미세한 편차는 양불 판정에 영향을 미치지 않는 안전한 수준이며, 본 보고서에 사용된 측정 데이터들은 전반적으로 높은 신뢰성을 확보하고 있다고 최종 판정한다.
개선 제안
- PRD-003 직경: A·C라인 공정능력 개선을 위해 셋업·공구 마모 관리 강화, 목표치 대비 치우침(평균) 보정, 공정 변동(산포) 축소를 위한 공정 조건 표준화를 진행한다. 필요 시 직경 규격을 만족할 때까지 일시적 100% 검사 또는 공정 개선 후 Cpk 재평가를 수행한다.
- PRD-005 두께: 5월 전후 공정·설비·작업 변경 이력을 추적하고, 두께에 영향을 줄 수 있는 요인(온도, 공구, 클램핑, 가공 조건 등)을 조사한다. 관리도에서 이탈이 반복되는 구간에 대한 원인 조치 후 관리한계를 재설정하고, Nelson Rule 위반 구간에 대한 재발 방지 대책을 수립한다.
- 공정 파라미터·품질: 데이터에서 확인된 취약점을 기반으로 즉각적인 물리적 개선 조치를 실행한다. 첫째, 공정 통제력을 상실한 진동(
vibration_mms) 문제를 해결하기 위해 설비의 스핀들 베어링 마모 상태 및 구동부 체결 이완 여부를 즉시 점검하고 부품을 교체한다. 둘째, 불량이 집중되는 45~50℃ 구간으로 설비 온도가 진입하는 것을 원천 차단하기 위해 냉각 시스템(Coolant)의 제어 로직을 하향 최적화한다. 셋째, 주요 불량 원인인spindle_speed_rpm이 정상 범위를 이탈하여 하락할 경우 즉각 가동이 중단되도록 설비 인터락(Interlock) 및 하한 알람 시스템을 재설정한다. - 검사 시스템: 검사원 INS-07, INS-08의 측정값이 타 검사원 대비 미세하게 높게 나타나는 통계적 편향이 확인되었다. 현재 이 편차는 공차의 10% 이내로 양불 판정에 영향을 미치지 않는 안전한 수준이므로 즉각적인 재교육은 보류한다. 다만, 장기적인 측정 시스템의 완전성을 위해 향후 정기 교정(Calibration) 일정에 맞추어 해당 검사원들의 측정 프로세스(예: 측정기 가압력, 측정 위치 등)를 점검할 것을 권고한다.


























