FDA(Food and Drug Administration)의 규제를 받는 제품을 만드는 일에 관여하고 현장 실사를 받은 적이 있다면 FDA의 양식 483 그리고 하나를 받은 결과. 귀하의 시설을 검사하는 동안 FDA 담당자는 규정이 올바르게 준수되고 있는지 확인합니다. 내가 검사를 받는 동안 나는 대부분의 관찰이 거의 완전히 비합리적이라는 것을 발견했습니다. 그러나 소비자로서 다른 사람들의 관찰을 읽고 대행사가 나를 돌봐주는 것이 정말 기쁩니다.
매년 FDA 검사의 새로운 경향을 찬양하는 수많은 기사가 있습니다. 결과적으로 매년 규제 팀이 동의하는 소문에 따라 다음 검사를 시도하고 이기기 위한 많은 활동이 있습니다. 나는 FDA가 정말로 매년 그 초점을 바꾸었는지 궁금했습니다.보다 구체적으로, 연간 초점 이동의 증거가 있습니까?2009년에 발표된 열린 정부 이니셔티브로 인해 FDA는 현장 실사 결과 중 일부를 대중에게 제공하기 시작했습니다. 목표는 FDA의 집행 조치에 대한 대중의 이해를 개선하는 데 도움을 주는 것이었습니다. 인용 데이터는 FDA의 전자 검사 도구에서 직접 가져온 쉽게 액세스할 수 있는 스프레드시트로 제공됩니다. 상당히 엄숙한 부분도 있습니다 주의 사항 데이터와 함께 이동: 모든 레코드가 포함되지 않음 , 수동 레코드는 포함되지 않으며 최종 형식이 아닌 예비 결과일 수 있습니다.
사용 가능한 부분 데이터 세트로 배울 수 있는 것이 많다고 생각합니다. 이 기사에서는 검사 데이터베이스를 파헤치는 방법과 JMP Pro를 사용하여 발견한 내용에 대해 설명하겠습니다.
내가 이야기할 데이터는 다음과 같습니다.
https://www.fda.gov/ICECI/Inspections/ucm250720.htm
내 데이터 사전은 여기에서 가져옵니다.
https://www.fda.gov/iceci/inspections/ucm250729.htm
1 번 테이블. 데이터 사전
센터명
|
프로그램 영역
|
인용 ID
|
인용 ID는 각 인용에 대한 고유 식별자입니다.
|
CFR 참조 번호
|
인용에 대한 연방 규정집 참조
|
간단한 설명
|
짧은 또는 카테고리 유형 설명
|
긴 설명
|
자세한 설명은 FDA 양식 483에 입력됩니다.
|
빈도
|
회계 연도 동안 센터 프로그램 영역에 대한 483 표창이 사용된 횟수
|
년도
|
테이블의 연도에 대한 파생 용어
|
첫 번째 단계는 모든 데이터를 모으는 것이었습니다. 모든 Excel 통합 문서를 다운로드한 다음 모든 워크시트를 연 다음 일종의 복사 및 붙여넣기 방식으로 모두 함께 결합할 수 있다고 생각합니다.그것은 너무 지루하고 오류가 발생하기 쉬웠기 때문에 JMP를 사용했습니다.
파일 작업을 할 때 몇 가지 걸림돌이 발생했습니다. Excel 파일에는 두 가지 유형(.xls 및 .xlsx)이 있으며, 파일 유형이 변경되면 열 이름이 변경되고 최신 .xlsx 파일에는 처리할 빈 행이 약 700만 개 있습니다.내 JMP 스크립트를 실행하여 데이터 가져오기를 수행하는 경우 대용량 파일의 크기 때문에 몇 분 정도 걸립니다.데이터를 여는 JMP 스크립트는 빈 행을 정리하고, 연도 열을 추가하고, 변경되는 열 이름을 수정하고, 일반적으로 첫 번째 단계를 쉽게 만듭니다. (아래 스크립트 첨부)
18,737개의 행이 있는 원시 데이터만 액세스 가능하고 흥미롭게 볼 수 있습니다(그림 1). 모든 추세를 함께 시각화하기 위해 y축을 로그 스케일로 조정했습니다. 그래프를 구성하려면 빈도 열을 사용해야 합니다. 예를 들어 방사선 건강 인용은 2009년과 2010년에 급증했으며 인간 조직 및 생물 제제에 대한 인용은 감소 추세입니다.추세에 원인을 할당할 때 매우 주의하십시오. 혈액 제품 공급업체가 통합되고 검사할 사이트가 줄어들었거나 업계가 좋아졌기 때문에 생물학적 제제가 다운되었을 수 있습니다(그렇기를 바랍니다).

그림 1. 2006년부터 2017년까지 센터별 483개. 원시 그래프
데이터베이스 파일에서 가져온
나는 주로 제약 회사와 일하기 때문에 약물에 대한 483에 가장 관심이 있으므로 약물 센터에서 인용한 부분 집합만 만들었습니다. 비슷한 긴 설명을 모두 함께 그룹화하고 싶습니다. 그들 중 많은 수가 독특하다면 문제가 되지 않겠지만 사실은 그렇지 않습니다. 나는 그것들을 분류하기 시작할 수 있도록 긴 설명을 읽기 시작했지만, 4,167개의 레코드로 그것은 영웅적인 작업이 될 것이라는 것이 곧 분명해졌습니다. 문서를 분류하는 한 가지 방법은 잠재 클래스 분석이라는 텍스트 마이닝 도구를 사용하는 것입니다. 이 방법은 유사한 문서가 함께 클러스터될 수 있도록 문서 내의 단어 빈도에 점수를 매깁니다.
텍스트 마이닝은 SAS 텍스트 마이닝 솔루션과 몇 명의 전문가에 대한 액세스 권한이 없는 한 대규모 자동 프로세스가 아니지만 분석을 수행하기 전에 문서를 정리하는 데 약간의 작업이 필요합니다.
텍스트를 다루는 용어가 약간 변경되었습니다. 이 방향에서 각 긴 설명은 문서라고 하며 각 "단어" 또는 토큰은 용어입니다. 나는 약간의 텍스트 정리로 시작했습니다.예를 들어 JMP Recode 도구를 사용하면 다음과 같습니다.
- 제거됨 " . , ; : [ ] * -- - ”
- 제거됨 (s), (S), s
- 설명 끝에서 "구체적으로" 제거
- 재코딩, 소문자, 공백 자르기, 공백 접기
- "단어/단어"를 "단어/단어"로 변경
다음 단계는 Recode의 보다 극단적인 적용이었습니다. 전체 문자열이 아닌 단어 단위로 Recode를 사용하고 싶었기 때문에 공백을 구분 기호로 사용하여 모든 단어를 별도의 열로 분리한 다음 단어를 쉼표 구분 기호로 결합했습니다. Recode에서 모든 단어를 개별적으로 볼 수 있도록 이 열을 "다중 응답" 데이터 유형으로 가지고 있습니다. 이를 통해 몇 가지 다른 것들과 함께 두 개 이상의 철자가 있는 깨진 단어와 단어를 고칠 수 있습니다. 목표는 텍스트 분석과 관련이 없는 특성을 기반으로 하는 용어 간의 차이점을 줄이는 것이었습니다.
이것은 완전하거나 완벽한 정리는 아니지만 텍스트 탐색을 위한 다음 단계의 "정리"를 시작하기에 충분했습니다.JMP 텍스트 탐색기 도구에는 비슷한 단어를 같은 단어로 만들 수 있는 형태소 분석 옵션이 포함되어 있습니다. 예를 들어, "adulterate", "adulterated", "adulterating"은 모두 "adulter-"가 됩니다. 각 단어는 동사 시제와 단어의 복수형이 모두 같은 단어가 되도록 어간으로 대체됩니다. JMP는 또한 용어로 추가할 수 있도록 자주 사용되는 구문을 찾습니다. "컨테이너 마개", "품질 관리" 또는 "서면 절차"와 같은 일부 문구는 매우 자주 나타납니다.
텍스트 탐색으로 시작했습니다. 이것은 문서에 있는 내용을 이해하려고 시도하는 단어 빈도(단어 모음) 접근 방식입니다. 유사한 문서를 그룹화하기 위해 잠재 의미 분석(Latent Class Analysis 또는 LCA)을 위한 특이 값 분해를 사용했습니다. 벡터를 중앙에 놓고 크기를 조정하고 TF-IDF 가중치를 사용한 다음 계층적 클러스터링 방법을 사용하여 100개의 문서 클러스터를 분류했습니다. 100개의 각 클러스터에서 시간 경과에 따른 추세를 찾기 위해 연도를 속성 ID로 사용하고 LCA 클러스터를 개체 ID로 사용하고 LCA 클러스터의 빈도로 클러스터링하는 두 번째 클러스터링 라운드를 사용했습니다. 이 계층적 클러스터링 접근 방식은 시간이 지남에 따라 빈도 경향이 동일한 문서 그룹을 찾습니다(그림 2 및 3).
분류 및 클러스터 접근 방식을 사용하여 4,167개 문서에서 283개로 추세 검색 범위를 좁혔고, 이러한 문서를 3개의 시간 추세 클러스터와 총 7개의 문서 클러스터(LCA) 그룹으로 분류할 수 있습니다(표 1).
문서를 시간 추세별로 그룹화하면 다음 문제는 우리가 식별한 문서의 내용을 이해하는 것과 관련됩니다. 나는 283개의 긴 설명을 읽을 수 있었고, 그것은 흥미롭지만 지루할 수도 있습니다. 대신 이 인용이 무엇에 관한 것인지 이해하기 위해 텍스트 분석으로 돌아가겠습니다. 결과적으로 종종 단어 구름으로 표시되는 단어 빈도는 통찰력을 도출한 다음 우리의 두뇌가 문맥에 대한 친숙도를 기반으로 구실을 해결하도록 하는 빠른 방법입니다. 이러한 단어 구름에서 단어의 크기는 발생 빈도에 비례하며 단어의 어두움은 문서의 빈도를 나타냅니다. 단어가 어두우면 더 많은 문서에 있는 것이고 더 크면 문서에서 더 자주 나타납니다. 이 컨텍스트에서 사용되는 텍스트 분석은 불완전하지만 각 문서를 개별적으로 수동으로 처리하는 대안보다 더 실용적입니다(그림 4, 5 및 6).
결론
이 분석 연습의 목표는 현장 검사 중에 집행 경향이 있는지 여부를 발견하는 것이었습니다. 이 분석에서 가장 눈에 띄는 증가 추세는 무균 처리 및 오염과 관련이 있었습니다. 이러한 추세는 기관의 관심 증가를 나타내거나 제약 산업의 무균 처리 증가 또는 무균 처리 약물의 수 증가를 나타낼 수도 있습니다. 상당한 추가 연구를 추가하지 않고는 집행 강화와 오류 기회 증가를 구분할 수 없습니다. 그러나 무균 공정을 수행하는 사람들을 위한 메시지는 명확해야 합니다. 프로세스, 검증 활동 및 이러한 활동이 오염 방지를 모니터링하도록 설계되는 방식에 주의하십시오. (소비자로서, 이것도 우선 순위가 높아야 한다고 생각합니다!)
일반적으로 FDA는 전체 21CFR 210 및 211 규정(대부분의 의약품 특정 규정이 있는 곳)에 걸쳐 일반적으로 일관된 집행을 하는 것으로 보입니다. 다른 모든 문서 클러스터를 살펴보면 한 영역에서 다른 영역에 대한 인용의 연간 급증이 분명히 발생하지 않는다는 분명한 추세가 나타납니다. 이것은 전설적인 "올해의 초점" 가설에 반하는 증거를 제공하는 경향이 있습니다.


그림 2. 클러스터링 작업의 덴드로그램. Drug Center의 모든 4167개 문서는 LCA(Latent Class Analysis)를 사용하여 100개의 문서 그룹으로 클러스터링되었습니다(1 성 패널). 유사한 빈도로 발생하는 문서 그룹을 찾기 위해 두 번째 클러스터링을 수행했습니다. 100개의 문서 그룹은 9개의 시간 추세 그룹으로 요약되었습니다(2 차 패널). 클러스터 3, 4 및 8에는 그래프에서 지난 몇 년 동안 증가하기 시작하는 패턴이 있습니다.
시간 추세 클러스터
|
문서 개수
|
문서 클러스터
|
문서 개수
|
삼
|
146
|
26
|
55
|
|
|
45
|
39
|
|
|
56
|
35
|
|
|
90
|
17
|
4
|
97
|
11
|
72
|
|
|
74
|
25
|
8
|
39
|
46
|
39
|
표 2. 시간 추세 및 문서 클러스터의 내용. 실제
처리할 문서의 수가 상당히 많지만 Latent를 사용하여
클래스 문서 클러스터링에 이어 시간 추세 클러스터링
문제가 상당히 줄어듭니다.

그림 3. 각 시간 추세 클러스터 내의 클러스터를 문서화합니다. 대부분의 시간 추세 클러스터는 꽤 평평하거나 클러스터 1 및 2와 같이 빈도가 낮습니다. 그러나 클러스터 3, 4 및 8은 지난 몇 년 동안 몇 가지 흥미로운 상승 추세를 보였습니다. (선은 문서 클러스터별로 색상이 지정되며 색상은 클러스터 거리와 관련이 없습니다.)

그림 4. 시간 추세 클러스터 8. 가장 큰 추세는 문서가 멸균 처리 및 오염과 관련된 시간 추세 클러스터 8에 있습니다.

그림 5. 시간 추세 클러스터 4. 시간 클러스터 4는 인용 빈도가 다음으로 가장 많이 증가했습니다. 문서 클러스터(11)의 문서는 다시 무균 처리와 관련됩니다. 문서 클러스터(74)는 제어 기록의 적절한 수준의 인가 및 제어와 관련된다.

그림 6. 시간 추세 클러스터 3. 상승 추세가 가장 작은 시간 추세 클러스터는 클러스터 3입니다. 문서 클러스터 26 및 45는 테스트 방법 및 절차, 표준, 샘플 처리, 표준 및 제어와 관련하여 일반적인 견고성 부족과 관련됩니다. 문서 클러스터(56)는 약물 개발 및 허가의 여러 단계에서 부작용과 같은 것을 보고하는 것과 관련된 인용과 관련이 있습니다. 마지막으로, 문서 클러스터 90은 오류 제어 부족 및 오류 처리 방법과 관련이 있습니다.
데이터의 약물 하위 집합이 첨부되어 있습니다. 일부 분석에는 JMP Pro가 필요합니다.
데이터는 public.jmp.com에도 있습니다. 여기