후지필름 디오신스 바이오테크놀로지스는 공정 특성 분석(PCS) 부서를 운영하는 위탁 개발 및 제조 업체(CDMO)입니다. PCS의 목표는 고객사의 공정이 매개변수 설정 또는 정상 작동 범위의 변화에 대해 안정적인지 여부를 입증하는 것입니다.
PCS(공정 제어 시스템)에서는 일반적으로 공정 투입 요소가 품질 속성(QA) 및 공정 성능 지표(PPI)에 미치는 영향을 조사하기 위해 실험 설계(DOE)를 활용합니다. DOE 분석은 QA/PPI에 영향을 미치는 투입 요소를 식별하는 데 유용한 도구이지만, 주로 정량적인 분석에 기반합니다.
전통적인 실험계획법(DOE) 분석 외에도, 각 입력 변수에 대한 영향비(IR) 계산은 정량적 및 정성적 평가를 제공하며, 특정 변수가 중요한지 여부를 판단하는 데 도움을 줄 수 있습니다. IR은 허용 가능한 범위 내에서 효과 크기를 측정하는 지표입니다.
수동으로 계산하는 것은 시간이 많이 걸리고 오류 발생 가능성이 높습니다. 본 문서에서는 실험계획법(DOE) 모델에서 필요한 정보를 추출하고 통합비(IR)를 계산하는 자동화 도구를 소개합니다. 사용자 인터페이스를 통해 결과 계산 방식을 맞춤 설정할 수 있습니다.
안녕하세요 여러분. 오늘 제 동료 샘과 함께 이 자리에 있게 되어 정말 기쁩니다. 오늘은 영향 비율에 대해 이야기해 보겠습니다. 기본적으로, 여러분의 DoE(실험 설계) 요소가 DoE 결과물이나 반응에 미치는 영향은 무엇일까요? 제가 JMP에서 개념, 계산 방법, 예시를 소개하고, 이어서 샘에게 마이크를 넘겨 JSL을 사용하여 이 과정을 자동화하는 방법과 애드인을 통해 어떻게 구현했는지 보여드리겠습니다.
먼저 고백부터 드리겠습니다. 사실 이 발표 제목을 "공정 특성 분석 과학자와 NASA 과학자의 공통점은 무엇일까요?"라고 하고 싶었습니다. 하지만 연관성이 너무 미약하고, 어쩌면 좀 난해하게 들릴 수도 있을 것 같았습니다. 그럼에도 불구하고, 저는 이 발표에서 그 개념들을 활용합니다. 첫 번째 슬라이드에 운석 사진이 있는 이유도 바로 이것입니다. 제가 만든 비유인데요. 저는 운석 충돌구를 관찰하면서 충돌 비율과 비교하고 있습니다. 좀 재미있게 접근해야 하니까요.
여기서 무슨 일이 벌어지고 있는 걸까요? 아주 비슷한 운석이 지구, 화성, 달에 떨어질 수 있는데, 그 조건은 천체마다 다를 겁니다. 우선 대기가 있거나, 아주 적거나, 아예 없는 경우도 있는데, 이는 폭발력과 운석의 움직임에 큰 영향을 미칩니다. 만약 지구에 떨어진다면, 충돌로 인해 생기는 크레이터는 지구에 사는 사람들에게 엄청난 영향을 미칠 수 있습니다.
자, 그럼 오늘 무엇을 살펴볼까요? 또 다른 통계적 비율을 살펴보겠습니다. 통계학자들은 비율을 좋아하죠. 그다음 영향 비율이 구체적으로 무엇을 측정하는지 알아보겠습니다. 그리고 "JMP에서 이 비율을 계산할 수 있을까요?"라는 질문에 대한 답을 찾아보겠습니다. 답은 당연히 가능하다는 것입니다. 여러 가지 방법으로 계산할 수 있습니다. 제가 직접 수동으로 계산하는 번거로운 방법도 있지만, 시간이 부족해서 이 단계는 생략하겠습니다. 하지만 테이블 관리를 좀 더 쉽게 할 수 있도록 워크플로우를 만들어 두었습니다.
그럼 이제 샘에게 넘기겠습니다. 샘은 JMP 추가 기능을 사용하여 영향 비율을 계산하는 간편한 방법을 보여줄 겁니다. 여기 제가 직접 그린 그림이 있는데, 아마 여러분도 여러 번 보셨을 관리도입니다. 통계학 분야에서 관리도는 아주 흔하게 볼 수 있죠. 여기 출력값이 있는데, 예를 들어 배치를 더 많이 생성함에 따라 시간이 지남에 따라 변화합니다.
이 차트에는 여러 영역이 있습니다. 청자색 영역은 출력값이 포함되는 영역입니다. 이 데이터는 정규 분포를 따르기 때문에 시간이 지남에 따라 출력값이 어디에 분포할지 예측할 수 있습니다. 여기 있는 통계 자료는 이 파란색 영역이 얼마나 넓어질지 예측해 줍니다. 그리고 두 사양 사이의 녹색 영역은 고객 유형의 안전 영역입니다. 고객은 일반적으로 사양을 제공하거나, 예를 들어 개발 작업에서 승인 기준을 도출했을 수도 있습니다.
우리가 하려는 것은 공정 관리를 할 때 공정이 안전지대 내에 완전히 포함되는 영역에 있는지 확인하는 것입니다. 이를 위해 사용되는 지표 중 하나가 CPK, PPK와 같은 공정 능력 지수(Capability Index)입니다. 이는 기본적으로 안전지대와 정상지대의 비율을 나타냅니다. 제가 찾은 것 중 영향 비율과 가장 유사한 지표입니다. 여기 거의 동일한 그래프가 있습니다. 같은 그림을 재사용했다는 것을 알 수 있을 겁니다. 여기서 달라지는 점은 이번에는 데이터의 분포를 예측하는 통계가 아니라 데이터의 형태를 예측하는 통계를 사용한다는 것입니다. 입력값을 변경했을 때 특정 출력값이 어떻게 변하는지, 즉 입력값이 낮은 값에서 높은 값으로 변할 때 어떤 변화가 발생하는지를 모델링하는 것입니다.
실험설계(DoE)를 수행하고 작동 조건을 체계적으로 변경할 때 이러한 과정을 거칩니다. 특히 공정 특성 분석의 경우, 이 최저값에서 최고값까지의 범위는 허용 가능한 범위임을 입증하고자 하는 것입니다. 마지막에는 방정식이 있고, 파란색 영역은 예측된 반응의 최소값에서 최대값을 나타내며, 녹색 영역은 공정 최종에서 고품질 제품을 얻을 수 있는 허용 가능한 범위를 나타냅니다.
우리는 다시 한번, 편차가 안전 구역 또는 놀이 공간에서 허용 가능한 비율을 차지하는지 확인하고 있습니다. 이 영향 비율은 모든 요인에 대한 모델을 얻을 수 있기 때문에 다양한 요인의 영향을 비교하는 데 도움이 될 수 있습니다. 또한 이것이 DoE의 일부인 경우 이러한 요인을 분류하는 기준으로도 사용될 수 있습니다. 이 영향 비율은 실제로 무엇을 측정하는 것일까요? 이전 슬라이드에 힌트가 있었지만, 다시 운석 이야기로 돌아가 보겠습니다.
NASA 과학자들이 두 가지를 계산했습니다. 운석이 지구에 충돌하는 지점과 충돌 분화구의 반지름입니다. 그들은 충돌 지점이 안전지대(녹색 영역) 안에 있다면 바깥에 사는 생명체들은 괜찮을 거라고 말했습니다. 물론 운석의 경우에는 그렇지 않겠지만, 잠시만 제 말을 들어보세요. 우리가 여기서 계산하는 것은 기본적으로 충돌 분화구의 반지름과 안전지대의 반지름의 비율입니다. 우리는 이 비율이 충돌 분화구의 반지름보다 훨씬 작기를 바라고 있습니다. 즉, 안전지대가 충돌 분화구에 비해 훨씬 크기 때문입니다.
자, 여기서 무슨 일이 벌어지냐면, NASA 과학자들이 운석이 여기에 떨어질 거라고 예측했는데 실제로는 다른 곳에 떨어지는 경우처럼, 우리가 목표 지점에서 벗어났을 수도 있다는 겁니다. 안전지대가 중심에 운석이 충돌했을 때 충분히 안전했을 거라고 생각했는데, 이 경우에는 충돌구가 안전지대 훨씬 바깥에 생긴 거죠. 혹시 이 근처에 사시는 분이 계시진 않길 바랍니다. 또 다른 가능성은, 그리고 다른 많은 가능성도 있는데, 우리가 목표 지점에 정확히 맞췄지만 충돌구 크기를 잘못 계산했을 수도 있다는 겁니다. 충돌구가 예상보다 훨씬 큰 거죠. 이 경우에도 충돌구는 안전지대 밖에 있고, 안전지대의 반지름이 충돌구의 반지름보다 작을 수도 있습니다. 이건 그냥 그림일 뿐이고, 그래프로 나타내면 어떻게 될지 봅시다. 같은 그래프에 화살표와 방정식을 추가해 보겠습니다.
쉽게 말해, 영향 비율은 효과 크기를 사양 또는 허용 기준까지의 거리로 나눈 값입니다. 여기서 효과 크기는 파란색과 주황색 화살표로 표시되어 있습니다. 이는 최소 예측값에서 중심까지의 거리 또는 최대 예측값에서 중심까지의 거리입니다. 이 값을 중심에서 양쪽의 사양까지의 거리로 나눈 값입니다. 이 경우, 이 거리가 안전 영역의 70%를 차지합니다. 따라서 영향 비율이 좋지 않습니다. 40%인 경우에도 여전히 상당히 높은 수치입니다. 하지만 공정성을 기하기 위해 두 값 중 더 큰 값을 선택해야 하므로, 여기서는 70%로 간주하겠습니다.
이건 제가 손으로 그린 그림입니다. 이제 실제 JMP 차트를 보겠습니다. 이것은 점프 차트인데, DoE 분석을 완료하면 얻게 되는 프로파일러의 한 부분입니다. 이 차트에서는 약간의 곡선이 있지만, 안전 영역은 동일합니다. 여기서 최소값에 대한 영향 비율을 계산해 보면, 최소값에서 중심값까지의 변동폭은 최소값에서 규격값까지의 변동폭의 약 42%에 해당합니다. 반대로 최소값에서 최고값 또는 최대값까지의 변동폭은 안전 영역의 약 7%에 불과합니다.
그럼에도 불구하고, 우리는 이 수치를 보고해야 하므로 여전히 상당히 높은 수치입니다. 여기서 우리가 답을 찾으려는 질문은, 허용 가능한 수준에 비해 작은 영향으로 목표를 달성하고 있는가 하는 것입니다. 이제 여기서 나가서 JMP로 이동하여 이 작업을 수동으로, 다소 번거로운 방식으로 수행하는 방법을 보여드리겠습니다. 여기에는 표준 실험계획법(DoE)이 있으며, 5개의 요인이 있습니다. 여기서는 4개의 응답만 공유했습니다. 모든 데이터는 익명화되어 있으므로, 죄송하지만 모든 값이 -1에서 1 사이여서 수치가 다소 이상하게 보일 수 있습니다.
하지만 여기서 우리가 원하는 것은 반응 한계를 지정하여 해당 반응에 대한 목표를 다양하게 설정해 볼 수 있도록 하는 것입니다. 불순물처럼 최소화해야 할 요소도 있고, 대부분의 경우 최대값을 목표로 할 수도 있습니다. 심지어 값이 얼마나 높아지는지는 중요하지 않을 수도 있습니다. 모델링 과정은 여기서 다루지 않겠습니다. 죄송합니다. 스크립트가 잘못됐네요. 이제 됐습니다. 이미 모델을 적합시켰고, 제가 메모에 적어둔 예시를 사용하겠습니다.
여기서는 프로파일러를 사용하여 방정식에 필요한 모든 수치를 얻습니다. 중심점을 설정하고 이 값을 기록합니다. 좋습니다. 이것이 중심점 조건입니다. 여기서는 모든 것이 중심점에 맞춰져 있습니다. JMP에게 이 설정을 기억하도록 하겠습니다. 저는 이 값을 '하중 중심점'이라고 부르겠습니다. 왜냐하면 저는 이 하중에 관심이 있기 때문입니다. 이것이 첫 번째입니다. 그 다음에는 수동으로 JMP의 도움 없이도 모든 것이 중심점에 맞춰져 있으므로 이 두 값을 최소값으로 이동하고 다시 기록할 수 있습니다. 이것이 제 최소 하중입니다.
최대값을 구하는 건 조금 더 까다롭습니다. 이렇게 해볼 수도 있겠죠. 그래프를 더 크게 만들어서 최대값에 도달하도록 해볼 수도 있겠지만, 이번에는 JMP를 이용하겠습니다. Ctrl + Alt 키를 누르고 여기 있는 다른 두 그래프를 클릭한 다음, 중심점에서 계수 설정을 고정하겠습니다. 저는 부하가 어떻게 변하는지, 그리고 다른 모든 변수를 고정했을 때 부하의 최대값이 얼마인지에만 관심이 있기 때문입니다. 그런 다음 JMP의 최대화 기능을 사용하겠습니다.
자, 됐습니다. 수동으로도 가능했겠지만, 이제 정확히 최대치라는 걸 알았으니 저장해 두겠습니다. 최대치에 도달했으니 이제 필요한 건 거의 다 갖췄습니다. 만약 이 작업을 수동으로 한다면, 이 목록에 있는 모든 요인이나 방정식 매개변수, 그리고 모든 반응 변수에 대해 이 작업을 반복해야 합니다. 모델 규모가 크고 반응 변수가 5~10개 정도라면, 이 작업은 금세 엄청난 작업량이 될 겁니다.
그러면 이 모든 데이터를 테이블 형식으로 내보내야 합니다. 여러 개의 데이터가 있을 때 이 방법을 사용하겠지만, 저는 하나밖에 없기 때문에 이렇게 하겠습니다. 여기 필요한 정보가 모두 있지만 형식이 잘못되었습니다. 우리가 유지해야 할 것은 이것들이 어디에 있는지입니다. 그리고 여기 있는 이 숫자도 필요합니다. 테이블에서는 전치를 사용해야 하지만, 저는 이미 미리 해두었기 때문에 생략하겠습니다. 간단히 보여드리려고 했던 것입니다. 왜 오류가 발생할까요? 여기 전치된 데이터가 있습니다. 테이블의 모든 레이블이 여기에 있습니다.
수동으로 하려면 하한값과 상한값을 입력해야 합니다. 이 값들과 최소값, 최대값, 그리고 CP 값을 이용해서 비율의 분자, 분모, 그리고 비율 자체를 계산할 수 있습니다. 작은 거리를 큰 거리로 나누면 저충격 비율이 나옵니다. 그런 다음 공식을 사용해서 두 값 중 최댓값을 구하고, 이 과정을 모든 경우에 반복해야 합니다. 이제 샘에게 마이크를 넘기겠습니다. 샘이 이 작업을 위한 추가 기능을 사용하면 얼마나 더 쉬워지는지 보여줄 수 있을 겁니다. 샘, 어때요?
고마워요, 그웬. 그웬이 말했듯이, 이 작업을 자동화하기 위해 추가 기능을 만들기로 했습니다. 지금부터 추가 기능이 어떻게 작동하는지 간단히 보여드리겠습니다. 그웬이 방금 작업했던 것과 같은 데이터 테이블을 사용할게요. 추가 기능을 만들기로 한 이유는 스크립트 창에서 직접 스크립트를 실행하는 것보다 훨씬 간편하기 때문입니다. 추가 기능의 또 다른 장점은 추가 기능 이름 위에 마우스를 올리면 툴팁이 표시된다는 점입니다. 이 경우 툴팁에는 추가 기능을 실행해야 하는 올바른 창이 표시됩니다.
사실, 제가 클릭해 보시면 아무 일도 일어나지 않는 것을 보실 수 있을 겁니다. 제가 올바른 위치에 있지 않기 때문입니다. 이제 이전에 만들었던 모델들을 사용하여 스크립트를 열어보면, 스크립트를 실행할 수 있고 제대로 작동하는 것을 보실 수 있습니다. 먼저 사용자에게 몇 가지 지침이 담긴 창들이 나타나고, 그 다음에는 사용자 입력을 위한 영역들이 나타납니다. 첫 번째 창에는 기본 데이터 테이블에 대한 요구 사항과 관련된 지침들이 있습니다.
예를 들어, 요인 열은 코딩되어야 하고, 모든 단위는 열 속성으로 입력해야 합니다. 만약 어떤 열이라도 이러한 조건이 충족되지 않으면 취소를 클릭해 주세요. 그러면 제가 다시 돌아가서 수정하겠습니다. 하지만 이 경우에는 모든 열이 올바르게 코딩되어 있는 것을 알고 있습니다. 다시 실행을 클릭한 다음 확인을 클릭하겠습니다. 다음 창에는 요인 설정을 입력하는 영역이 있습니다. 여기에는 범주형 요인을 입력하는 칸이 있습니다.
범주형 요인에 대해서는 영향 비율을 계산할 수 없습니다. 하지만 모델에 포함된 모든 범주형 요인은 특정 값으로 고정되어야 하므로, 사용자가 직접 값을 입력할 수 있도록 되어 있습니다. 실험 설계(DoE)에서 평가된 나머지 연속형 요인에 대해서는 해당 설정을 입력할 수 있는 영역이 마련되어 있습니다. 스크립트는 표에서 최소값과 최대값을 자동으로 읽어옵니다. 또한 최소값과 최대값의 중간값을 찾아 중심점도 계산합니다.
하지만 경우에 따라 중심점이 범위의 정확한 중앙에 있지 않을 수 있습니다. 이 경우에는 부하(load)가 그랬으므로 20으로 변경하겠습니다. 이러한 값들은 모두 수정할 수 있습니다. 입력값을 변경할 수 있는 장점은 합산 계산을 실행했을 때 일부 요소에 대해 영향 비율이 너무 높게 나오는 경우, 값을 변경하여 다시 합산 계산을 실행하고, 예를 들어 요소 범위를 줄여 평가해 볼 수 있다는 것입니다. 그런 다음 새로운 범위에서 영향 비율이 개선되는지 확인해 볼 수 있습니다.
나머지 값은 그대로 두고 확인을 클릭하겠습니다. 그러면 마지막 창에는 응답 수용 기준을 입력하는 칸만 남습니다. 이제 해당 값을 입력하겠습니다. 기준이 하나만 있는 경우 하나만 입력하고 다른 하나는 비워 두어도 됩니다. 기준이 없는 경우에는 두 칸 모두 비워 두어도 영향 비율을 계산할 수 있습니다. 이 경우 영향 비율은 설정값 응답과 최소 또는 최대 예측값 간의 백분율 차이로 계산됩니다. 실질적인 유의성 측면에서 동일한 측정값을 제공하는 것은 아니지만 스크립트에서 계산해 줍니다.
이제 '확인'을 클릭하면 요약 표가 생성된 것을 볼 수 있습니다. 하지만 애드인을 실행했던 창으로 돌아가면 각 예측 프로파일러 아래에 설정이 저장되어 있는 것을 확인할 수 있습니다. 이 설정들은 모델의 각 요인에 대한 최소 및 최대 예측값을 얻는 데 사용된 설정입니다. 따라서 나중에 계산 과정을 다시 확인할 수 있어 유용합니다. 이러한 내용을 검토할 수 있다는 것은 좋은 점입니다.
이제 스크립트가 실제로 어떻게 작동하는지 아주 간략하게 설명드리겠습니다. 먼저 스크립트는 창에 있는 각 응답 모델을 순회합니다. 그런 다음 응답을 최대화하도록 바람직성 값을 설정합니다. 이후 모델의 각 항을 순회합니다. 첫 번째 항인 이 경우 부하의 경우, 요인 설정을 해제하여 자유롭게 변경할 수 있도록 합니다. 그런 다음 나머지 모든 요인은 설정된 값으로 고정됩니다. 마지막으로 스크립트는 최대화 및 저장 기능을 실행합니다. 이제 프로파일러에서 해당 설정이 저장된 것을 확인할 수 있으며, 이 경우 부하 요인만 변경하여 응답을 최대화했음을 알 수 있습니다.
그런 다음 모델의 각 항에 대해 해당 작업을 계속 수행하고, 반응값을 최소화하도록 바람직성 값을 설정한 후 이 과정을 다시 반복합니다. 각 항은 최소 예측값을 얻기 위해 다시 평가됩니다. 마지막으로, 기억된 모든 설정이 업데이트되어 이름이 의미 있게 지정됩니다. 그런 다음 요인 이름과 목표가 반응값을 최소화했는지 최대화했는지 여부를 표시합니다. 마지막으로, 이 전체 과정이 창에 포함된 각 반응 모델에 대해 반복됩니다. 이것이 스크립트의 작동 방식입니다. 이제 출력된 요약 표로 돌아가겠습니다.
보시는 바와 같이 모든 데이터가 수집되어 이 표에 출력됩니다. 각 행에는 평가된 각 응답 모델에 대한 특정 요인이 하나씩 포함되어 있습니다. 사용자가 입력한 허용 기준을 나타내는 열이 있습니다. 그다음에는 설정값에서의 예측값, 그리고 해당 응답 모델에 포함된 각 요인에 대한 최소 및 최대 예측값을 보여주는 열이 있습니다. 나머지 열은 수식입니다. 여기에는 최소 예측값과 설정값 예측값의 차이가 있고, 마찬가지로 최대 예측값과 설정값 예측값의 차이도 있습니다.
마지막 두 열은 계산된 영향 비율입니다. 하한 영향 비율과 상한 영향 비율이죠. 불순물처럼 기준이 하나만 있는 경우에는 상한 허용 기준만 있으므로 상한 영향 비율만 계산됩니다. 마지막 열은 전체 영향 비율입니다. 이는 하한 영향 비율과 상한 영향 비율 중 최댓값입니다. 이 작업을 자동화하는 데 애드인을 사용하는 이점을 요약하면서 이 부분을 마무리하고 넘어가겠습니다.
첫째, 추가 기능을 사용하면 수동으로 작업하는 것보다 훨씬 빠릅니다. 둘째, 이 기능을 사용하면 작업을 훨씬 쉽게 반복할 수 있습니다. 앞서 언급했듯이, 추가 기능을 실행했을 때 영향 비율이 너무 높게 나오면 추가 기능을 다시 실행하고 요인 설정을 변경하여 허용 가능한 영향 비율을 얻을 수 있는지 확인할 수 있습니다. 마지막으로, 데이터 입력이나 데이터 조작이 필요 없기 때문에 오류 발생 가능성이 훨씬 적습니다. 스크립트가 모든 데이터를 수집하여 마지막에 출력되는 표에 모두 담아줍니다.
네, 감사합니다. 이것으로 제 발표 부분을 마치겠습니다. 이제 그웬에게 마이크를 넘겨서 정리를 부탁드리겠습니다. 감사합니다.
샘이 말한 내용에 덧붙여, 이 추가 기능의 큰 장점은 계산을 반복하고 처음 몇 개의 표에 입력한 값을 변경할 수 있다는 것입니다. 예를 들어, 검증된 허용 범위를 보여주기 위해 설정한 값을 가져와서 정상 작동 범위에서 약간 벗어난 값을 가져올 수 있도록 요소 설정을 변경할 수 있습니다. 또한 사양이나 승인 기준을 수정할 수도 있습니다. 영향 비율이 매우 높다면 안전 영역이 너무 작아서 안전하게 작동하기 어려울 수 있습니다.
사양을 확장하여 모든 영향 비율이 약간 낮아지는지 확인할 수 있습니다. 실제로 이를 통해 승인 기준을 변경하는 근거로 활용할 수도 있습니다. 영향 비율을 활용하는 또 다른 방법은 테스트된 공정 매개변수를 분류하는 기준으로 사용하는 것입니다. 예를 들어, 공정 매개변수의 영향이 매우 작으면 실험 설계(DoE)가 끝날 때 중요, 매우 중요 또는 중요하지 않음으로 분류할 수 있습니다. 오늘 영향 비율에 대한 설명은 여기까지입니다. 질문이 있으시면 언제든지 문의해 주세요. 감사합니다.