파레토 도표에 익숙하지 않은 분들을 위해, 이 웹사이트는 병원 환경에서의 약물 투여 오류에 파레토 도표를 적용한 흥미로운 예시를 제공합니다. 저는 제가 가르치는 데이터 시각화 수업에서 이 예시를 사용합니다(그림 1).
Figure 1. Pareto plot of medication errors.그림 1. 투약 오류에 대한 파레토 도표.
파레토 도표의 기본 아이디어는 분석가가 품질 문제의 가장 흔한 원인을 파악하는 데 도움을 주는 것입니다. 대부분의 문제(예: 80%)를 해결하려면 그림 1에서 빨간색으로 표시된 오류 유형을 해결하는 솔루션을 구현하는 것이 목표입니다. 즉, 투약 누락, 투약 시간 오류, 잘못된 약물 투여, 과다 투약과 같은 투약 오류와 관련된 품질 문제를 해결하면 전체 투약 오류의 약 80%가 해결될 것입니다. 솔루션은 발생 빈도가 낮은 투약 오류까지 해결할 수 있으며, 네 가지 주요 투약 오류와 관련된 모든 문제를 해결하지 못할 수도 있습니다. 하지만 적어도 투약 오류 문제를 개선하여 최대의 효과를 얻는 방법에 대한 명확한 아이디어를 얻을 수 있습니다.
이 글의 나머지 부분에서는 100명의 환자를 대상으로 한 시뮬레이션 데이터를 사용하며, 각 연구일(10일) 동안 특정 결과의 빈도를 기록합니다(그림 2). 이 결과는 해당일에 발생한 이상 반응의 빈도, 알레르기 증상 완화를 위해 환자가 안약을 사용한 횟수 등 무엇이든 될 수 있습니다. 첫 번째 관찰 열에 대해서는 나중에 다시 살펴보겠습니다.
Figure 2. Unsorted simulated data of events.그림 2. 정렬되지 않은 시뮬레이션 이벤트 데이터.
환자별 사건 발생 빈도에 대한 파레토 분포와 유사한 그래프를 생성할 수 있습니다(그림 3).
Figure 3. Pareto plot of events by patient.그림 3. 환자별 사건 발생률의 파레토 도표.
그림 3에서 X축은 10일 동안 발생한 총 사건 수를 기준으로 내림차순으로 정렬된 환자를 나타내고, Y축은 발생한 총 사건 수를 나타냅니다. 검은색 선은 그래프에서 왼쪽에서 오른쪽으로 갈수록 발생한 총 사건 수 대비 누적 비율을 보여줍니다. 눈금선을 이용하여 관심 있는 비율(예: 80%)을 찾고, 검은색 선 위에 마우스를 올려놓으면 전체 사건의 약 80%가 발생한 환자를 확인할 수 있습니다. 위 그림에서 환자 6번은 전체 사건의 약 80%를 경험했습니다. 그림 3에는 몇 가지 한계점이 있습니다.
- 이는 누적 사건 발생 빈도를 나타내는 것은 아닙니다.
- 이는 80%의 사건 중 환자가 연루된 누적 빈도 또는 비율을 알려주지 않습니다.
그림 2의 데이터 테이블에는 '첫 번째 관찰'이라는 열이 있으며, 이 열에는 그림 4에 제시된 수식이 포함되어 있습니다. 이 수식은 환자 내 첫 번째 기록에 1을, 그렇지 않은 기록에 0을 부여합니다.
Figure 4. Formula to identify the first record for each patient.그림 4. 각 환자에 대한 첫 번째 기록을 식별하는 공식.
이 수식은 통계 범주의 민 대령 함수를 사용합니다. 열 데이터를 요약하는 통계 수식은 JMP에서 제가 가장 좋아하는 기능 중 하나입니다. 나중에 이 함수들에 대한 자세한 블로그 게시물을 작성할 예정이며, 여기에는 아래 정렬된 데이터 테이블의 열을 생성하는 데 사용된 수식에 대한 자세한 설명도 포함될 것입니다.
이 변수를 사용하여 그림 5의 파레토 도표에서 누적 환자 비율(빨간색)을 생성할 수 있습니다. 누적 사건의 80%가 발생하는 지점에서, 이는 환자의 69%에서 발생합니다. 물론, 이 추정치를 얻는 과정은 다소 번거롭습니다. 검은색 선에서 빨간색 선으로 이동하여 필요한 정보를 일치시켜야 하기 때문입니다.
Figure 5. Pareto plot with cumulative patient percentage.그림 5. 누적 환자 비율을 나타낸 파레토 도표.
하지만 그림 5에는 여전히 몇 가지 문제가 있습니다.
- 이는 환자 또는 사건의 누적 빈도를 나타내지 않습니다.
- 누적 환자 비율 또는 사건 발생률에 대한 데이터를 얻으려면 각 줄 위에 마우스 커서를 하나씩 올려놓아야 하는데, 이는 불편합니다.
참고로, 누적 빈도 문제를 해결하기 위해 두 개의 평행한 Y축을 추가할 수 있습니다. 하나는 누적 사건 빈도를 나타내고, 다른 하나는 누적 환자 빈도를 나타냅니다. 하지만 이 접근 방식으로는 다음과 같은 문제가 발생합니다.
- 추가된 Y축과 두 개의 선으로 인해 그래프가 더욱 복잡해졌습니다.
- 원하는 데이터를 얻으려면 여전히 각 줄 위에 마우스 커서를 하나씩 올려놓아야 합니다.
저는 이 문제들을 해결할 수 있지만, 데이터 테이블에 추가적인 작업이 필요합니다. 그림 6은 위의 데이터 테이블에 몇 가지 추가 변수를 정의하고, 환자 총계 (내림차순), 환자 수 , 그리고 일수를 기준으로 정렬한 결과를 보여줍니다.
Figure 6. Sorted simulated data of events.그림 6. 정렬된 시뮬레이션 이벤트 데이터.
왜 추가적인 절차가 필요한가요?
- 환자 총계 열을 이용하면 그래프에 필요한 X축 순서에 따라 데이터 테이블을 정렬하여 네 가지 누적 빈도 및 백분율 변수를 생성할 수 있습니다.
- 데이터 테이블(또는 그래프 빌더 )에서 이러한 변수를 계산하면 해당 열에 따라 행에 레이블을 지정할 수 있으므로 마우스 커서를 어디에 올리든 누적 이벤트 및 환자에 대한 전체 그림을 얻을 수 있습니다.
그림 7을 참조하십시오.
Figure 7. Patient Pareto with cumulative frequencies and percentages.그림 7. 누적 빈도 및 백분율을 포함한 환자 파레토 분포.
그림 7은 누적 백분율 선이나 사건 발생 빈도 막대에 마우스를 올리더라도 전체 데이터를 한눈에 볼 수 있음을 보여줍니다. 환자 6은 이 연구 대상 100명 중 누적 발생 빈도와 백분율 모두에서 69 번째 환자이며, 이 환자는 총 807건의 누적 사건(전체 환자 1,012건의 79.74%)을 나타냅니다.
그림 6의 데이터 표에서 간략하게 언급했던 부분이 있습니다. 이 열들은 여러 통계 열 수식을 사용하는데, 앞서 언급했듯이 이에 대해서는 향후 블로그 게시물에서 자세히 설명하겠습니다. 중요한 점은 이러한 모든 함수 호출에 '제외(Excluded) ' 옵션이 사용된다는 것입니다. 이 옵션은 데이터 필터를 사용하여 환자를 부분 집합으로 추출할 때 누적 변수가 축소된 모집단에 따라 적절하게 업데이트되도록 하는 데 필수적입니다. 그림 2의 데이터 표에서는 그래프 변환기가 이러한 계산을 자동으로 처리했기 때문에 이 단계가 필요하지 않았습니다.
그림 8은 데이터필터를 사용하여 이 연구에 포함된 여성 환자 20명에 대한 환자 파레토 플롯을 보여줍니다. 누적 사건의 약 80% 시점에서 13명의 환자(총 204건 중 160건)에서 사건이 발생했으며, 이는 여성 환자의 65%에 해당합니다.
Figure 8. Patient Pareto for females.그림 8. 여성 환자의 파레토 분포.
이 게시물 오른쪽 상단의 링크에서 그림 2와 6의 데이터 표를 다운로드하여 누적 빈도와 백분율 계산 공식을 확인할 수 있습니다. 내장된 환자 파레토 스크립트를 사용하면 그래프를 생성할 수 있으며, 빨간색 삼각형 메뉴에서 제어판을 열면 더 자세히 살펴볼 수 있습니다. 제어판에서 그래프 생성에 필요한 옵션과 함께 변수들이 특정 역할에 어떻게 할당되었는지 확인할 수 있습니다.