오늘은 베를린에서 열리는 JMP 서밋에서 제가 발표할 '학습을 실천하는 한 해: 과거 실패 경험을 바탕으로 실험을 설계하고 분석하는 방법'에 대해 이야기하기 위해 모였습니다. 이 제목은 사실 작년에 맨체스터에서 발표하셨던 돈 선생님의 '과거 실패 경험을 바탕으로 실험을 설계하고 분석하는 방법'이라는 주제에 대한 일종의 답변이기도 합니다. 저는 그 발표 녹화본을 몇 번이고 다시 봤는데, 누군가 제 발표도 저처럼 유익하게 여겨주셨으면 좋겠습니다.
이 디자인이 무엇으로 만들어졌는지 좀 더 자세히 설명드리자면, 바로 튜브 실러로 만들어졌습니다. 아마 많은 분들이 튜브 실러가 뭔지 모르실 텐데요. 간단히 말해서, 과학적인 헤어 스트레이트너라고 생각하시면 됩니다. 백신이 담긴 실리콘 튜브를 헤어 스트레이트너로 눌러서 밀봉하는 거죠. 제약 생산 과정이기 때문에 좀 더 과학적인 방식을 사용하긴 하지만, 원리는 간단합니다. 두 개의 발열체가 튜브를 눌러서 밀봉하는 겁니다.
지금 문제는 저희가 폴리머 튜브용 새 열 밀봉기를 구매하려고 알아보고 있다는 점입니다. 밀봉이 제대로 되어야 하는 이유는 밀봉된 튜브를 통해 내용물이 전달되기 때문입니다. 만약 밀봉이 파손되면 내용물이 바닥에 쏟아지게 됩니다. 이로 인해 여러 가지 문제가 발생할 수 있습니다. 환자에게 직접적인 위험은 없지만, 백신 한 배치를 손실할 위험이 있는 것이고, 이는 절대 원치 않는 상황입니다.
이 새로운 밀봉 장치를 생산에 투입하기 전에, 저희는 이러한 설계 실험을 해보기로 했습니다. 우선, 성공의 기준은 무엇일까요? 언제 실제로 튜브가 밀봉되었다고 볼 수 있을까요? 현재는 육안 검사로 확인합니다. 제 이전 슬라이드에서 밀봉된 튜브 사진 몇 장을 보실 수 있습니다. 육안으로 튜브를 평가하여 합격 또는 불합격을 판정합니다. 이게 전부입니다.
저는 정말로 "다른 방법은 없을까요? 어떻게든 연속적인 테스트를 할 수 있을까요?"라고 물어보려고 했습니다. 하지만 "아니요, 하지만 다른 합격/불합격 기준, 즉 압력을 이용한 테스트를 할 수 있었습니다. 튜브에 압력을 가하고 물속에 넣어보는 거죠. 만약 기포가 새어 나온다면, 제대로 밀봉되지 않은 겁니다. 자전거 타이어를 테스트할 때와 비슷한 방식이죠."라고 답했습니다.
저는 연속적인 답변을 찾으려고 정말 애썼습니다. 그게 훨씬 쉬울 테니까요. 그런데 그때 맨체스터에서 들었던 발표가 생각났습니다. 바로 이 주제에 관한 발표였죠. 그 후 설계를 구상하기 시작했습니다. 제가 이 실험계획법(DOE)을 만든 이유는 새로운 튜브를 가져와서 새로운 실험을 하는 것이 비교적 쉽다는 것을 알고 있었기 때문입니다. 제가 정말로 시도해 보고 싶었던 것은... 음, 우선 작업자의 시간을 고려하여 필요 이상으로 설계나 실험을 반복하지 않는 것이었습니다.
저는 순차적인 실험계획법(DOE)을 염두에 두고 있었습니다. 가능한 한 작은 규모로 시작해서 필요에 따라 실험을 추가하고 점차 규모를 키워나가는 방식이었죠. 궁극적으로는 여러 요인들을 고려하여 매번 성공적인 밀봉이 이루어지거나, 적어도 실패율이 매우 낮은 공정 범위를 정의하는 것이 목표였습니다. 실패율이 0이 될 수는 없다는 것을 통계학자들이 알고 있지만, 0에 최대한 가깝게 만드는 것이 목표였습니다.
제가 설계를 구상할 때, 이 실러에 대한 모든 지식을 실험 설계에 반영하고 싶었습니다. 왜냐하면 저보다 훨씬 더 많은 것을 아는 작업자와 전문가들이 있다는 것을 깨달았기 때문입니다. 분명히 말씀드리지만, 저는 실러를 직접 만져본 적도 없고, 앞으로도 만져볼 생각이 없습니다.
제가 하는 말이 일리가 있는지 없는지 알려줄 수 있는 사람이 회의실에 있어야 해요. 왜냐하면 제 말이 틀릴 수도 있기 때문이죠. 저는 그런 지식을 에너지부에 전달하고 싶었고, 나중에 어떻게 그렇게 했는지, 그리고 그 지식을 제 설계에 접목하는 것이 실제로 어떤 의미인지에 대해 다시 이야기해 보겠습니다.
설계를 진행할 때, 일부 요소의 조합이 불가능한 문제가 있었습니다. JMP에서는 설계 공간의 일부를 잘라내는 것이 비교적 쉽습니다. 여기에서 냉각 온도와 냉각 유형이 있는데, 하나는 연속형 변수이고 다른 하나는 2단계 범주형 변수입니다.
과학적인 헤어 스트레이트너나 튜브 밀봉기 같은 기기에는 외부 냉각 장치를 부착할 수 있습니다. 내부에도 냉각 시스템이 있지만, 예상하시다시피 외부 압축기가 훨씬 효과적입니다. 외부 압축기의 크기가 상대적으로 작기 때문입니다. 외부 압축기를 사용하면 냉각 온도를 낮출 수 있습니다. 튜브가 밀봉된 후 밀봉 상태를 유지하려면 차가워져야 하므로 냉각 과정이 시작됩니다.
이제 추가적인 이점으로, 외부 냉각 시스템을 사용하면 천장 마감 시간을 상당히 줄일 수 있다는 것을 알게 되었습니다. 전혀 예상하지 못했던 부분인데, 이 작업을 진행하면서 외부 냉각을 항상 사용하는 것이 훨씬 좋다는 것을 깨달았습니다. 하지만 내부 냉각을 사용할 때는 온도가 65도 이하로 떨어지면 안 됩니다.
이 설정을 하는 것은 생각보다 훨씬 쉽습니다. 제가 이 방법을 설명하는 유튜브 영상도 만들었으니, 이 영상을 시청하시는 분들은 QR 코드를 스캔해서 디자인 공간을 만드는 방법을 확인해 보세요.
최종 설계는 24가지 조합으로, 각 조합당 3회씩 반복하여 총 72개의 용접이 필요했습니다. 감사 인사는 나중에 드리도록 하고, 먼저 설계도를 살펴보겠습니다. 이 작업은 세 단계로 진행되었습니다. 먼저 초기 실험계획법(DOE)을 수립했습니다. 그 다음 첫 번째 보강 작업을 통해 12회 더 용접을 추가했고, 세 번째 보강 작업을 통해 8회 또는 6회 더 용접을 추가했습니다. 각 단계별 이유와 그 과정에서 얻은 교훈을 차근차근 설명드리겠습니다.
여기 원래 설계도를 보여드리겠습니다. 24번의 실험 결과를 보시면 실패한 경우가 세 번 있습니다. 총 3번 실패했는데, 시각적 실패와 압력 실패 횟수를 각각 표시했습니다. 이번 실험의 설정값을 보시면 시각적 실패나 압력 실패가 모두 없었던 실험이 세 번 있었습니다. 그런데 왜 24번이나 실험을 했을까요? 제가 말씀드리는 걸 깜빡했는데, 이 실험 설계에는 두 가지 수준의 범주형 변수가 5~6개, 연속 변수가 4개, 그리고 세 가지 수준의 범주형 변수가 1개 있어서 변수가 상당히 많습니다. 그래서 결국 24번으로 실험을 진행하게 된 겁니다. 어떻게 이런 결과가 나왔을까요?
어떻게 이렇게 되었는지 보여드리겠습니다. 여기서 제가 DOE를 적용했던 아이디어로 다시 돌아오게 되는데, 제가 한 작업은 (이 부분은 취소할 수도 있습니다.) 아직 남아있는지 확인해 보겠습니다. 여기 보시면 모든 요인이 나와 있습니다. 상당히 좋은 요인 목록이죠. 이건 사용자 지정 DOE에서 만든 겁니다. 반응 표면 모델을 누르면 주효과처럼 각 요인의 효과를 개별적으로 확인할 수 있습니다. 모든 연속형 요인과 그 곡률 효과도 볼 수 있는데, 가능하다면 이 네 가지 요인도 곡선으로 나타내 보겠습니다. 그리고 모든 상호작용도 확인할 수 있습니다.
최소한 이 디자인을 완성하려면 82번의 테스트를 해야 했습니다. 그런데 3번씩 반복해서 82번을 테스트하는 건 말도 안 됐죠. 그렇게 하면 웃음거리가 될 테니까요. 200번, 246번이나 테스트해야 할지도 모르겠네요. 계산은 여기서 그만두겠습니다. 그래서 저는 이 목록을 하나씩 살펴봤습니다. 시간이 좀 걸리긴 했지만, 매번 "제품과 밀봉 시간 때문에 이건 필요 없어요."라는 말을 들었습니다. 그렇게 계속하다 보니 마침내 이 최종 모델, 그러니까 "뒤로 눌러야겠군." 하는 모델에 도달했습니다.
보시다시피, 저희는 그 수치를 상당히 줄였습니다. 왜냐하면 그들은 "그런 상호작용들은 [들리지 않는 부분 00:09:59] 발생할 가능성이 매우 낮다"라고 말할 수 있었기 때문입니다. 저는 여전히 설계를 해두었기 때문에, 나중에 추가 실행을 통해 식별할 수 있도록 했습니다. 결국 저희는 주요 효과와 기타 효과만 원했고, 그 결과 최소 24개의 효과만 남게 되었습니다.
저는 용기를 내서 최소한의 데이터만 사용해 보기로 했습니다. 나중에 더 많은 실험을 추가할 수 있다는 걸 알고 있었기 때문이죠. 그렇게 해서 24라는 숫자가 나왔습니다. 그다음 단계는 이 데이터를 과학적으로 분석하고 싶어서 Generate 플랫폼에서 모델을 만드는 것이었습니다. 저는 그 모델이 정말 자랑스러웠고, 얼마나 멋진지 보여드리겠습니다.
이건 톰의 영상을 보고 따라 하면서 만든 거예요. 영상을 보면서 톰이 하는 대로 따라 한 거죠. 여기 보이는 건 실러 헤드인데, 구형 실러 헤드랑 신형 실러 헤드가 있어요. 감멜은 구형이고 신형은 신형이죠. 신형은 신형이에요. 그리고 추가할 수 있는 미디어가 두 종류 있어요. 튜브 재질도 두 가지인데, 하나는 아반타플렉스고 다른 하나는 C-플렉스예요.
그다음은 절단 온도와 치수입니다. 제가 여러분께 정말 강조하고 싶은 부분은 튜브 재질, 즉 C-Flex와 Avantaflex의 차이점입니다. 보시다시피 이 설정, 즉 온도 165도와 절단 시간 100초(총 시간)에서 C-Flex의 경우 불량 확률이 0.00%이지만, Avantaflex의 경우 최대 0.04%까지 발생할 수 있습니다.
하지만 아반타플렉스의 경우, 불확실성이 훨씬 더 높다는 것을 알 수 있습니다. 아반타플렉스로 바꾸면서 다른 불확실성 구간들이 어떻게 변하는지도 볼 수 있는데, 마치 폭발하듯이 커집니다. 아반타플렉스를 사용하면서 구형 실링 헤드를 쓰면 결과가 정말 엉망이 될 수 있습니다.
제가 처음으로 깨달은 것은, 우리가 무슨 일이 일어나고 있는지 확신할 수 없는 특정 조합들이 있다는 것이었습니다. 다시 말해, 우리는 여기서 무슨 일이 일어나고 있는지 완전히 이해하지 못하고 있다는 거죠. 하지만 제가 발견한 것은, 높은 차수에서 그 불확실성이 얼마나 아름다운가 하는 것이었습니다. 그러니 이 불확실성을 180도까지 끌어올리면 모든 것이 완벽해질 거라고 생각했습니다.
보시다시피 이 모든 것들이 완전히 평평해졌는데, 이게 제가 처음 내린 결론이었어요. 미리 말씀드리자면, 제가 틀렸지만 프로파일러만 보고 내린 초기 결론은 그랬습니다. 제가 데이터 분석에서 첫 번째 실수를 저지른 것 같아요. 데이터를 충분히 시각화하지 않았던 거죠. 이제 그게 무슨 의미인지 보여드리겠습니다.
저는 그들에게 돌아가서 "있잖아요, 이 온도를 180도로 올리면 괜찮을 거예요."라고 말했습니다. 그들은 "좋아요, 크리스찬, 좋은 생각이에요. 시험해 보고 싶네요."라고 했습니다. 그게 첫 번째 실험 설계(DOE)의 결과였습니다. 저는 자신만만하게 "180도로 하면 괜찮을 거야. 무슨 일이 일어나는지 보자."라고 말했죠. 실제로 어떤 일이 일어나는지 보자고 했습니다. 제가 그들에게 보여준 그래프가 바로 이것입니다. 여기에는 최고 온도와 최고 시간이 나와 있습니다.
앞서 말씀드렸듯이, 우리가 정말로 원하는 것은 밀봉 상태가 양호한 범위입니다. 파란색 점은 세 번의 반복 작업이 모두 성공한 지점을 나타냅니다. 만약 한 번이라도 실패했다면 빨간색으로 표시될 것입니다. 우리는 모든 부분이 파란색으로 채워진 영역을 목표로 합니다. 제가 이 그래프를 회의에 가져가서 "좋아요, 우리 함께 이 새로운 프로세스 범위를 정의해 봅시다!"라고 말했습니다.
섭씨 140도는 정말 원하지 않아요. 그걸 제거하죠. 훨씬 나아 보이네요. 그리고 섭씨 200도는 너무 높아요. 어떤 경우에는 괜찮지만, 위험 수준인 경우도 있으니까 온도를 낮추죠. 이제 빨간색 점이 하나만 남았는데, 그 점은 최고 도달 시간이 너무 짧아요. 그렇게 하지 않으면 안 되는데, 사실 그 범위가 적절하다는 걸 증명할 데이터가 많지 않네요. 모델 예측을 믿고 있지만, 그다음에는 이 범위 안에서, 그러니까 확대해서 보니 괜찮아 보이네요. 그 범위에는 데이터가 없지만, 유망해 보여요. 그게 다음 설계였어요.
자, 한번 살펴볼까요. 보시다시피 원래 듀이 분류법 하나와 12개의 추가 분류법이 있습니다. 방금 전에 봤던 그 그래프가 아니라, 이 그래프를 보면 여기 12개의 점이 있고 그중 하나가 빨간색으로 나온 것을 알 수 있습니다. 사실 저는 모든 점이 파란색이길 정말 바랐어요. 낙관적인 디자인 공간이었기 때문에 빨간색이라도 괜찮았겠지만, 만약 그렇게 할 수 있다면 정말 멋질 거라고 생각했죠. 하지만 하나가 빨간색으로 나왔네요.
회의 중에 그래프 작성 도구를 사용해서 이 그래프를 만들어 봤습니다. 이 그래프를 통해 실제로 대부분의... 우리가 보고 있는 것은 이전과 마찬가지로 온도와 시간이지만, 재질과 치수로 구분했습니다. C-Flex와 Avantaflex, 그리고 튜브 치수는 0.5인치, 3인치에서 3x5인치, 그리고 3x9인치 16인치로 구분되어 있습니다.
우리가 본 건 마치, 잠깐만. 이 조합으로 성공적인 결과를 낸 적이 없었던가? 하는 생각이 들게 했어요. 크리스티안, 당신은 180 이상에서는 괜찮다고 했잖아요. 네, 그렇게 말했죠. 하지만 실제로 우리가 본 건, 제 예측이 괜찮다고 말하는 것과는 좀 다르네요. 그런 건 처음 봤어요. 그게 바로 일어난 일이에요.
제가 조금 자랑스럽게 생각하는 부분은 실패 예측을 살펴보면, 여기 있는 모든 새로운 예측들을 보면 얼마나 명확한지 알 수 있습니다. 거의 모든 예측이 0.00이고, 단 두 개만 예외입니다. 굳이 하나를 꼽자면 바로 이 예측입니다. 실패 확률이 13%밖에 안 되지만, 아직 상대적으로 작은 데이터셋이라는 점을 감안하면 충분히 설명이 될 수 있습니다.
저는 정확히 짚어낼 수 있었고, 그렇게 했습니다. 제가 말했듯이, 만약 경쟁 분야가 있다면 바로 그곳일 겁니다. 그리고 그 분야가 실패했죠. 그 결과는 제 예측이 완전히 틀린 건 아니라는 걸 보여줬습니다.
세 번째 증강입니다. 세 번째 증강 또는 세 번째 실행이라고 할까요? 두 번째 증강 후에 이 새로운 데이터셋을 추가했습니다. 이제 원본, 첫 번째 증강, 두 번째 증강이 있습니다. 같은 공간을 다시 살펴보면 재미있는 일이 일어났는데, 눈치채셨는지 모르겠습니다. 저는 모델을 만드는 작업을 완전히 멈추고 이 그래프만 보고 있었는데, 파란색 먼지가 보이면 좋은 결과라고 생각했습니다.
사실 다시 모델을 만들어야 하는데, 원래 24개의 데이터 포인트, 즉 24개의 점을 보면 시각적으로 너무 명확해서, 만약 이 그래프를 먼저 만들었다면 180 이상이라고 해서 모두 정상이라고 할 수는 없다는 걸 알 수 있었을 거예요. 저는 그걸 미처 몰랐거든요. 예를 들어, 이 두 점은 모두 180 이상이지만, 둘 다 실패라는 걸요. 그런데 이 점을 추가하고 나니 비로소 깨달았어요. 보세요, 하나를 제외하고 모두 파란색인데 빨간색이잖아요.
그런 다음 세 번째 용기를 추가했는데, 이 용기의 제조사가 말한 범위와 정확히 일치합니다. 제 생각에는 이 지점이 바로 제조사가 말하는 적정 위치인 것 같습니다. 그리고 나서 파란색 점만 남습니다. 우리는 통조림이라고 말합니다. 이 다섯 가지 용기는 비교적 밀봉하기 쉽습니다. 지나치게 낮은 온도를 사용하지 않는다면, 지나치게 낮은 온도를 제외하고는 실제로 점이 두 개밖에 남지 않습니다. 이 모든 과정을 거치면 수많은 조합과 반복 실험을 통해 좋은 결과만 얻을 수 있습니다.
유일하게 이상한 조합은 바로 이겁니다. 여기서 중요한 점은, 이 조합을 아예 사용하지 않을 수 있을까 하는 겁니다. 왜냐하면 모두가 이 조합이 사용하기 너무 어렵다고 했거든요. 만약 이 조합만 사용할 수 있다면 가장 좋을 텐데, 아직 그 단계는 아니지만, 제 생각은… 돈, 이제 당신에게 넘기겠습니다. 어쨌든, 이 디자인은 여기까지 진행된 상태였습니다. 순전히 시각적인 검사에 불과했던 것을 데이터로 변환하고, 그 데이터를 기반으로 시각화를 통해 데이터베이스 의사결정을 내릴 수 있게 된 거죠. 자, 이제 그만 얘기하고 당신에게 넘기겠습니다.
고마워요, 크리스티안. 화제를 좀 바꿔볼게요. 제가 지금부터 이야기할 내용은... 잠깐만요. 제 화면, 제 일지가 잘 보이시죠? 좋습니다. 그럼, 제가 처음부터 이런 시스템을 어떻게 구성해야 충분한 실험과 검증을 거쳐 실질적으로 중요한지, 아니면 의미 있는 결과인지 판단할 수 있을지에 대한 것입니다.
우리의 목표는 실험을 설계하는 것입니다. 다시 말하지만, 저는 실험 규모를 충분히 크게 하고, 충분한 횟수를 반복하고, 충분한 시행착오를 거쳐 실질적으로 유의미한 결과가 나오는지 여부를 판단하고 싶습니다.
자, 시작하기 전에 몇 가지 용어를 정의하겠습니다. 제가 사용하는 두 가지 용어, 즉 '시행(trial)'과 '실행(run)'을 구분해서 설명드리겠습니다. '처리 조건' 또는 '실행'이라고 하면 실험 설계 데이터 표의 한 행을 의미합니다. 다시 말해, 제가 실행할 고유한 처리 조합 또는 요인 설정 집합을 가리키는 것입니다.
시험이란 일종의 복제본이라고 생각하면 됩니다. 하지만 저는 이것을 복제본이라고 부르지 않겠습니다. 왜냐하면 수학적으로는 조금 다르게 처리하기 때문입니다. 분석을 시작할 때 시험 데이터는 한 행에만 나타납니다. 일반적으로 저는 복제본을 다룰 때 데이터 테이블에서 각각 다른 행에 배치합니다. 저는 복제본 수, 즉 시험 횟수뿐만 아니라 처리 조합 수, 즉 실험 실행 횟수도 알아야 합니다. 따라서 이 두 가지를 분리해야 합니다.
어떻게 하면 제 목표를 달성할 수 있는 설계를 할 수 있을까요? 첫 번째 단계는 이미 잘 알고 계실 겁니다. 좋은 설계에서 시작하는 것이죠. 크리스티안의 예시에서 보셨듯이, 그는 해당 분야 전문가들과 함께 몇 개의 요인을 고려해야 하는지, 어떤 요인이 중요한지, 두 요인 간의 상호작용은 몇 개나 포함해야 하는지, 이차 효과 등은 어떻게 해석해야 하는지 등을 논의했습니다. 이는 항상 시작점이며, 반응 변수가 연속형일 때와 마찬가지로 접근 방식입니다.
자, 이제 조금 다른 부분이 나옵니다. 여러분은 JMP가 생성한 설계, 예를 들어 사용자 지정 설계 도구를 사용하여 얻은 결과를 바탕으로, 치료 조건이 기준선과 통계적으로 유의미한 차이를 보이는지 판단할 수 있을 만큼 충분한 실험 횟수가 확보되었는지 알고 싶어 할 것입니다. 즉, "기준선이 목표값과 통계적으로 유의미한 차이가 있는지 확인할 수 있을까?"라는 질문에 대한 답을 찾고 싶어 하는 것입니다.
그러기 위해서는 기준선을 계산해야 합니다. 기준선에서의 실패율 또는 사건 발생률이 얼마인지 알아야 하고, 중요한 변화가 무엇인지도 계산하거나 결정할 수 있어야 합니다. 예를 들어, 기준선이 실패율 75%라고 가정해 보겠습니다. 하지만 실제로 중요한 변화는 실패율을 50%로 낮추는 것일 수도 있고, 20%로 낮추는 것일 수도 있습니다. 따라서 이러한 변화를 사전에 결정해야 합니다.
이 두 가지 정보를 확보하고 JMP에서 실험을 설계했다면, 실험 규모를 적절하게 조정하는 데 필요한 모든 도구를 갖추게 됩니다. 이제 시뮬레이션을 통해 "현재 위치(기준선)에서 목표 위치(목표)에 도달할 수 있을까?"라는 질문에 대한 답을 찾을 것입니다.
좋습니다, 이제 제가 어떻게 하는지 설명해 드리겠습니다. 다시 한번 말씀드리지만, 먼저 DOE(실험계획법)부터 시작합니다. 크리스천이 만든 것과 비슷한 DOE가 하나 준비되어 있습니다. 이 경우, 10개의 요인이 있는데, 그중 6개가 범주형입니다. 모두 CA로 시작합니다. 이 6개의 범주형 요인 중 5개는 2단계이고, 하나는 3단계입니다. 나머지 4개는 연속형 요인입니다.
모델을 살펴볼 때, 모든 주효과, 2차 상호작용의 일부, 그리고 이차 효과의 일부를 고려합니다. 크리스티안이 설계한 것과 유사하죠. 처음에는 해당 분야 전문가들과 이야기를 나누면서 설계에 무엇을 원하는지 결정합니다. 설계 평가에도 비슷한 도구를 많이 사용합니다. 실험을 설계할 때, 색상표를 보고 "효과들 간의 상관관계가 최대한 낮았으면 좋겠다"라고 생각할 수도 있습니다.
하지만 여기서는 그렇게 하면 안 됩니다. 이건 올바른 검정력 분석 방법이 아닙니다. 이제 제가 올바른 검정력 분석을 설정하는 방법을 보여드리겠습니다. 합격/불합격 실험의 경우, 시뮬레이션을 하는 것이 유일한 방법입니다.
이제 디자인 설정이 완료되었고, 결과물에 만족한다고 가정해 보겠습니다. 표를 생성하기 전에 한 가지 더 작업을 진행하겠습니다. 핫스팟 메뉴에서 '응답 시뮬레이션'을 활성화하겠습니다. 이 기능은 시뮬레이션을 도와주는 숨겨진 도구 중 하나인데, 아마 잘 모르셨을 수도 있습니다.
이 기능은 이미 켜져 있습니다. 디자인 테이블을 생성해 보겠습니다. 그러면 두 가지 결과가 나타납니다. 하나는 효과의 크기를 지정할 수 있는 상자이고, 다른 하나는 생성된 디자인 테이블입니다.
시작하기 전에 몇 가지 작업을 하겠습니다. 오른쪽으로 스크롤해서 어떤 일이 일어나는지 보여드리겠습니다. 계수를 0으로 재설정하겠습니다. 아래쪽 분포 항목에서 이항 분포를 클릭하겠습니다.
첫 번째 시도를 시뮬레이션으로 진행해 보겠습니다. 크리스티안이 했던 방식대로 진행할게요. 3번 시도한다고 가정해 보겠습니다. '적용'을 클릭하면 두 개의 열이 생성됩니다. 하나는 수식 열이고, 이 수식 열을 좀 더 자세히 살펴보고 시뮬레이션을 어떻게 설정했는지 알아보겠습니다. 다른 하나는 시도 횟수를 나타내는 고정 열입니다.
참고로, 어떤 이유로든 이 창을 닫거나 여는 것을 잊어버리더라도, 실험계획법(DOE)을 생성할 때 'DOE 시뮬레이션' 버튼은 항상 여기에 있습니다. 테이블 스크립트를 삭제하지 않는 한 언제든지 해당 버튼에 접근할 수 있습니다.
자, 이제 문제는, 디자인을 완성했고, 설정도 마쳤고, 각 열과 이진 변수도 있는데, 어떻게 추정치를 구하느냐는 겁니다. 수학적인 세부 사항은 제가 이 자료들과 함께 첨부할 문서에 자세히 설명할 예정이니, 여기서는 생략하고 간단하게 설명하기 위해 표를 만들었습니다.
우리가 할 일은 기준 오류율, 즉 기준 사건 발생률을 지정하는 것입니다. 예를 들어, 이 경우에는 0.9가 아니라 0.75로 설정해 보겠습니다. 제 기준 오류율은 0.75이고, 제가 달성하고자 하는 목표는 0.2라고 가정해 보겠습니다. 그러면 기준 오류율과 목표 오류율에 대한 추정치를 얻을 수 있습니다.
제가 할 일은 이 기준선을 복사해서 붙여넣는 겁니다. 다시 이 값들을 0으로 초기화할게요. 이걸 절편으로 붙여넣을 테니, 제 기준선이 바로 절편이 되는 거죠. 이제 목표값을 복사하겠습니다.
돈, 아주 간단한 질문 하나 해도 될까요?
물론이죠.
아주 간단합니다. 제가 이해하기로는 현재 75이신데, 0.2로 낮추시면 상당한 변화라고 생각하실 것 같습니다.
네, 맞습니다. 제가 보고 싶은 변화가 바로 그 정도입니다.
그보다 못한 거라면 신경 안 쓰겠지. 하지만 가는 건...
맞습니다. 완전히 맞습니다.
감사해요.
목표 추정치를 복사했습니다. 이제 들어가서 연속형 변수부터 시작할게요. 연속형 변수 값을 붙여넣겠습니다. 범주형 변수는 좀 더 통제된 상태에서 처리하고 싶어서 나중에 입력할게요. 그 전에 제가 세운 가정을 명확히 설명드리겠습니다. 실험계획법(DOE)을 실행할 때, 기준 조건이 있다면 그 기준 조건이 연속형 변수의 중심이 되고, 범주형 변수는 특정 수준에 있다고 가정합니다.
연속형 요인에 대한 데이터는 여기에 붙여넣기만 하면 얻을 수 있습니다. 자, 이제 이것들을 붙여넣어 보겠습니다. 네 개의 연속형 요인, 이 연속형 요인과 관련된 이차 효과, 그리고 두 개의 연속형 요인과 관련된 이차 상호작용 항입니다. 이항 분포가 선택되어 있는지 확인하고, 이항 분포 값을 다시 3으로 설정한 다음, 적용을 클릭합니다. Y 시뮬레이션 열이 변경되는지 확인해 보겠습니다. 실제로 변경되었네요.
이제 들어가서 범주형 요인들을 수정하고 싶습니다. 범주형 요인들의 기준선으로 사용할 수준을 지정하고 싶습니다. JMP가 생성한 수식을 열어보겠습니다. 이 수식은 매번 실행할 때마다 다른 값들을 생성하기 위해 무작위 이항 변수를 생성합니다.
여기서 모든 세부 사항에 얽매이지 마세요. 중요한 것은 이것이 내 요인 효과라는 점입니다. 이 경우, 이것은 내 요인, 즉 범주형 요인 1부터 6까지입니다. 예를 들어, 범주형 요인 1에서 기준값을 어디에 두어야 하는지 지정해야 합니다. 기준값이 0이 되도록 해야 합니다. 기준값이 0이라고 가정해 보겠습니다.
제가 할 일은 효과 크기를 붙여넣는 것입니다. 다시 말해, 위쪽이 기준선이라고 가정하면, 아래쪽에 그것을 붙여넣겠습니다. 이 경우 CA3에는 세 가지 레벨이 있으므로 1을 기준선으로 두고, 나머지 두 개에는 효과 크기(예: 작음, 큼)를 붙여넣겠습니다. 저는 기준선 레벨을 선택하는 모든 범주형 요인과 범주형 효과가 포함된 두 요인 간의 상호작용에 대해 이와 같은 방식으로 처리합니다.
다시 말씀드리지만, 3단계가 있는데, 저는 그중 2단계를 선택하고 세 번째 단계는 기준선으로 남겨두겠습니다. 나가기 전에, 함수, 즉 수식이 제대로 적용되도록 '적용' 버튼을 누르겠습니다. 이제 준비가 완료되었습니다. 시뮬레이션을 실행할 수 있도록 디자인 앱을 설정했습니다. 제가 하려는 작업은 해석을 한 번 실행한 다음, JMP Pro의 원클릭 시뮬레이션 도구를 사용하여 시뮬레이션을 실행하는 것입니다.
분석 메뉴에서 모델 적합을 선택합니다. 크리스티안이 몇 번 언급했던 작년 발표에서 분석 설정 방법과 옵션에 대해 좀 더 자세히 설명했습니다. 제공할 문서에서 더 자세히 다루겠지만, 지금은 생략하고 설계를 설정해 보겠습니다. 이 경우 JMP에서 자동으로 입력하는 내용을 삭제하고 시뮬레이션 값과 시행 횟수를 각각 다른 열에 입력해야 합니다.
저는 일반화 회귀 분석을 선택하고 이항 분포를 사용하겠습니다. 나중에 다시 확인해야 할 경우를 대비해 대화 상자를 열어 두겠습니다. 이제 실행을 클릭하겠습니다. 이 시점에서 JMP가 기본적으로 모든 효과를 적용하도록 설정되어 있으므로 모델 축소를 선택해야 합니다. 크리스티안이 했던 것처럼 Lasso를 선택하겠습니다. 유전성을 강제로 적용하면 Lasso가 때때로 조금 일찍 종료되는 경우가 있으므로, 이 옵션을 끄고 실행을 클릭하겠습니다.
여기서 알 수 있는 것은 한 번의 반복만 실행된다는 점입니다. 만약 이 과정을 천 번 또는 만 번 반복하여 각 효과가 유의미하게 나타난 횟수를 수집하고, 유의미한 것으로 정확하게 식별한 빈도를 확인하고 싶다면 어떻게 해야 할까요? JMP Pro에서는 확률 열, 즉 P값 열에 마우스를 올리고 마우스 오른쪽 버튼을 클릭한 다음 하단에 있는 '시뮬레이션' 옵션을 사용하면 됩니다.
강조 표시된 부분은 수식 열입니다. 2,500번 실행하면 몇 분 정도 걸리므로 250번으로 줄이겠습니다. 실행 횟수는 2,500번 또는 10,000번 등 원하는 만큼 선택하고 확인을 클릭합니다. 그러면 JMP가 해당 수식을 다시 실행하고, 라쏘 효과 유전 기능을 끄고 제가 선택한 모든 설정을 적용하여 분석을 다시 수행합니다.
놀라운 점은 이 모든 데이터가 하나의 데이터 테이블에 수집된다는 것입니다. 검정력 분석은 테이블에 포함된 스크립트에서 확인할 수 있으며, 제 검정력 분석 결과는 아래에 있습니다. 이 분석은 "알파 값을 0.01, 0.05, 0.1로 설정했을 때 시뮬레이션된 검정력은 어떻게 될까?"를 알려줍니다.
알파 버전 0.05를 살펴보면, 시뮬레이션된 전력 소모량이 33%에서 45% 사이로, 다소 낮은 편입니다. 이 값들을 하나의 표로 모으고 싶다면, 아주 간단합니다. 마우스 오른쪽 버튼을 클릭하고 "통합 데이터 표 만들기"를 선택하면, 모든 전력 설정값과 각 효과에 대한 시뮬레이션된 전력 소모량 값이 하나의 표에 저장됩니다.
제가 간단한 워크플로우를 만들었습니다. 현재 JMP 버전 16이나 17을 사용하고 있지 않다면 워크플로우를 생성할 수 있습니다. 제가 사용하는 워크플로우는 다음과 같습니다. 이 워크플로우를 사용하여 테이블을 정리하므로 알파 버전 0.05만 보면 됩니다. 보시다시피, 제 능력치들을 보면 대부분 0.5 정도의 중간 정도의 능력을 가진 경우가 몇 건 있지만, 0.8 이상으로 아주 뛰어난 경우는 없습니다.
다시 말씀드리지만, 이 결과는 2,500번의 시뮬레이션을 통해 얻은 것입니다. 제가 다음에 이야기하고 싶은 내용, 즉 제가 얻을 수 있는 파워에 영향을 미치는 요소들을 보여드리기 위해 몇 가지 다른 조건에서 이 과정을 반복했습니다. 당연히 파워가 높을수록 좋습니다. 파워는 실제로 존재하는 효과를 구별해내는 제 능력을 의미합니다.
잠시 닫겠습니다. 바탕화면을 좀 정리하고 결과를 보여드리겠습니다. 시뮬레이션을 위해 약 2,500번 실행했다고 적어 놓았습니다. 대략적인 규모를 알려드리기 위해서요. 여기 기준선이 있습니다. 그리고 살펴본 내용은 다음과 같습니다. 이것은 시뮬레이션 1회 실행 결과입니다. 다시 실행하면 결과가 약간 달라질 수 있습니다. 제 실험 설계는 24회 실행, 3회 시행으로 구성되어 있으며, 크리스티안과 동일하게 진행했습니다. 모든 효과가 유의미한 것으로 나타났습니다. 모든 것이 유의미하다고 가정하고, 여기서의 비교 기준은... 기준선은 0.75였고, 목표값은 0.2였습니다.
보시다시피, 일반적으로 중요하지 않은 절편이 유의미한 것으로 나타났습니다. 하나의 효과가 A 지점 쪽으로 향하고 있지만, 다른 모든 효과는 그보다 낮습니다. 만약 시행 횟수를 3회에서 5회로 바꾸면 어떻게 될까요? 어떤 변화가 생길까요? 시행 횟수를 3회에서 5회로 늘리면 유의성이 향상되는 것을 알 수 있습니다.
만약 제가 전체 모델에서 모든 효과가 유의미하다는 것을 확인한 후, 부분집합으로 모델을 변경한다면 어떨까요? 물론 모든 변수를 설계에 포함시키고 추정해야 하지만, 특정 변수들만 고려하는 겁니다. 예를 들어, 연속형 변수 2개와 범주형 변수 1개로 구성된 부분집합을 선택하면 결과가 조금 더 개선됩니다.
이러한 시뮬레이션을 실행하여 다양한 가상 시나리오를 살펴볼 수 있습니다. 다른 시나리오를 하나 더 시도해 보겠습니다. 초기 설계에서 24회 실행 대신 36회 실행해 보면 결과가 더 좋아집니다. 만약 차이점을 살펴보고 싶다면, 기준값이 0.75가 아니라 0.90이라고 가정해 보겠습니다. 참고로, 별표(*)는 모델에서 유의미하다고 지정한 효과를 나타냅니다.
다시 말하지만, 이것들은 모두 JMP를 사용하여 시뮬레이션해 볼 수 있는 가상 시나리오들입니다. 이를 통해 "좋아, 괜찮아 보이네. 이 정도 실행 횟수, 이 정도 시도 횟수로 진행해도 되겠어."라고 판단하거나, "실력이 너무 낮아서 실행 횟수를 더 늘려야 할지도 모르겠네. 아니면 지금 상태로도 괜찮을지도 몰라."라고 판단할 수 있습니다.
정리해 봅시다. 검정력에 영향을 미치는 요소는 무엇일까요? 당연히 실험 횟수가 많을수록 검정력은 높아집니다. 실험 횟수가 늘어날수록 검정력도 높아지죠. 기준선과 실험 시작점의 차이도 검정력에 영향을 미칩니다. 두 지점 간의 차이가 클수록, 그리고 끝점에 가까울수록 구별하기 쉬워지죠. 유의미한 효과가 줄어들수록 검정력은 높아집니다. 네, 이렇게 검정력에 영향을 미치는 요소들을 살펴보았습니다.
다시 한번 정리해 드리겠습니다. 이미 해당 분야 전문가들을 확보했고, 설계에 대해서도 생각하고 계실 겁니다. 이러한 설계를 적절하게 조정하는 방법은 좋은 설계에서 시작하는 것입니다. 좋은 설계를 바탕으로 무엇을 살펴볼지 결정하고, 효과들 간의 상관관계를 최소화하도록 노력하세요. 그래야 검정력을 높일 수 있습니다.
두 번째는 기준선을 정하는 것입니다. 기준값을 설정하고, 목표값을 정하고, 실질적으로 의미 있는 변화의 크기를 결정하세요. 이러한 값들을 입력하고 반응을 시뮬레이션하세요. 분포를 이항분포로 설정하고, 중요한 효과의 크기를 지정할 수 있도록 공식을 설정한 다음, JMP를 실행하고 원클릭 시뮬레이션을 통해 검정력을 추정하면 됩니다.
원하는 결과가 나오지 않거나, 결과가 낮게 나온다면 실행 횟수나 실험 횟수를 바꾸거나, 중요하다고 생각되는 효과를 변경하는 등 여러 가지를 시도해 보세요. 다양한 가능성을 탐색해 보는 것이 중요합니다. 세상에 공짜는 없다는 말이 있듯이, 이것은 사실상 공짜나 다름없습니다. 시간과 비용을 크게 들이지 않고도 실험적인 실행을 할 수 있으며, JMP에 이미 필요한 도구들이 갖춰져 있기 때문에 누구나 무료로 이용할 수 있습니다.
네, 제가 하고 싶었던 말은 여기까지입니다. 실제로 이런 설계를 실행해 주신 크리스티안 님께 감사드립니다. 실제 실험에서 실패한 사례를 보는 건 언제나 흥미로운 일이죠. 시청해 주신 모든 분들께 감사드리고, 유익한 정보였기를 바랍니다. 질문이 있으시면 디스커버리 토크 게시판이나 JMP 커뮤니티에 올려주세요. 기꺼이 답변해 드리고 더 자세한 이야기를 나눌 수 있도록 하겠습니다. 감사합니다.
고마워요, 돈.