ai-startup-skills
AI 제품을 만드는 스타트업을 위한 7단계 에이전트 스킬: 검증 → 비즈플랜 → 정책 → 로드쇼 → 고객 확보 → 가격 책정 → 등록
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
공개 유방암 코호트로 치료 의사결정 환경을 만들고, 단순화한 NCCN 정책과 Monte Carlo Tree Search(MCTS) 정책을 비교하는 학부 연구 프로젝트입니다. 현재 단계: 채널 분해 v1.5 완료 (2026-09-07) 연구용 예측 실험이며 실제 환자의 치료 권고 도구가 아닙니다.README 전문 보기 ↗
공개 유방암 코호트로 치료 의사결정 환경을 만들고, 단순화한 NCCN 정책과 Monte Carlo Tree Search(MCTS) 정책을 비교하는 학부 연구 프로젝트입니다.
현재 단계: 채널 분해 v1.5 완료 (2026-09-07)
연구용 예측 실험이며 실제 환자의 치료 권고 도구가 아닙니다.
METABRIC 2,509명을 공통 임상 변수 23개로 전처리했습니다.
분석 가능한 1,980명에서 분포, Kaplan-Meier 곡선, NCCN 정책 일치율을 계산했습니다.
수술·항암·호르몬·방사선의 4단계, 환자별 8~16개 치료 경로 환경을 구현했습니다.
규제 Cox 생존모형을 5년 전체생존 보상으로 사용해 UCT-MCTS를 실행했습니다.
고정 테스트셋 390명에서 MCTS를 완전탐색과 검증하고 NCCN과 비교했습니다.
OS/RFS를 사용해 반응·독성·재발 상태가 변하는 5년 확률환경을 만들었습니다.
환자별 의사결정 궤적을 18~135개로 확장하고 동적 MCTS를 8,000회 평가했습니다.
v0.3: 20개 시드로 강건성을 검증해 MCTS 우세가 작고(생존 +1.9%p) 개별 결정은 시드에 민감함을(첫 결정 평균 63% 일치) 확인했습니다.
v0.3: 합성 가정 민감도 분석으로 결론을 가장 크게 좌우하는 요인이 임상 효과가 아니라 보상 가중치(가치판단) 임을 밝히고, target trial 인과 명세와 K-CURE 변수 요청 명세를 초안했습니다.
v0.4: 결정 불안정성의 원인을 탐색 부족과 진짜 동률로 분리했습니다. 잡음은 이론값대로 1/√N 로 줄었고(기울기 −0.508) 예산을 2048로 올리자 일치율이 57.8% → 80.4%로 올랐지만, 49개 결정 지점 중 10개는 어떤 예산에서도 갈리지 않았고 그 지점들은 호르몬치료·방사선에 몰려 있었습니다.
v0.5: MCTS·MDP 구현을 형식적 정의에 대조해 감사했습니다. 알고리즘은 맞았으나 환경에서 선행치료를 고르기만 하면 재발 위험이 6.5~8.6% 깎이는 미선언 이득을 찾아 중립화했습니다. 할인율도 설정에 명시해 민감도 대상으로 만들었습니다.
v0.6: 관찰 연관성을 인과추정으로 바꾸는 첫 시도로 IPW 표적시험 에뮬레이션을 돌렸습니다. 항암 시행 여부가 사실상 결정돼 있어 positivity가 무너졌고(가중 후 최악 |SMD| 1.13 → 2.19, 유효표본 24명), 겹침 구간 38%로 좁혀야 균형이 잡혔습니다. 그 안에서 조정 전후로 효과의 부호가 뒤집혔습니다(+0.057 → −0.036, CI는 0 포함).
v0.7: 서로 다른 모형에 기대는 세 추정량(IPW·g-계산·AIPW)이 CI 폭의 3% 안에서 일치해 모형 오설정이 아님을 확인했습니다. 결정별 식별 가능성 지도를 그리다가 방사선치료의 넓은 겹침이 교란요인(수술 유형) 누락의 산물임을 발견했습니다 — 넣자마자 유지율 96%→69%, 균형 실패.
v0.8: v0.5의 "편향 영향은 검출 한계보다 43배 작다"는 예측을 v0.3·v0.4 재실행으로 확인했습니다(효용 격차 소수점 넷째 자리까지 동일). 이어서 2차원 격자에서 두 가치판단이 서로의 방향을 뒤집는 것처럼 보였고, 할인율(0~5%)은 결론을 바꾸지 않음을 확인했습니다.
v0.9: 그 방향 반전을 시드 12개로 확인했더니 살아남지 못했습니다 — 상호작용이 절반(−0.0115)이 되고 z가 잡음 기준 아래로 내려갔으며 부호 반전 자체가 사라졌습니다. 승자의 저주 사례이며, v0.8의 해당 서술에 정정 표기를 달았습니다.
v1.0: v0.3 민감도를 시드 12개로 재실행했습니다. 시드만 4배 늘렸는데 기준선이 0.019 움직여 순위를 매기려던 효과들보다 컸습니다. 핵심 결론(상위 2개가 가치판단)은 유지되나 예산 1024에서만 성립하고, v0.3이 보고한 부호 반전은 전부 철회됐습니다.
v1.1: 마지막 병목이던 환자 수를 8 → 20명으로 늘렸습니다. 헤드라인은 +0.0004만 움직여 처음으로 버텼지만, 환자 부트스트랩에서 "상위 2개가 가치판단"의 재현율이 8명 24.6% → 20명 69.5% 였습니다. 결론은 맞았어도 8명은 그 근거가 못 됐습니다. 임상 파라미터들의 영향은 70~86% 사라졌고, |z|≥2인 파라미터가 처음으로 2개가 되면서 그 둘이 정확히 두 가치판단이었습니다.
v1.2: 겹치지 않는 20명으로 순위를 재검했습니다. 실행 전에 코드에 적어 둔 예측이 빗나갔습니다 — B의 1위는 A에서 꼴찌였던 임상 파라미터였고, 두 코호트 순위의 Spearman은 +0.03입니다. 다만 코호트 하나의 해상도도 부족해 "둘 다 결정할 수 없다"가 맞습니다. 살아남은 것은 헤드라인(A +0.0313, B +0.0352, 합산 +0.0332)입니다. 사후 분석에서 아형 균등 표집이 헤드라인을 41% 부풀리고 있었다는 것을 찾았습니다 (실제 아형 구성으로 표준화하면 +0.0198).
v1.3: v0.7이 남긴 호르몬치료 효과 추정을 끝내려다 두 가지를 찾았습니다. 음성대조가 실패했습니다 — 약이 들을 수 없는 ER 음성 환자에서 ER 양성과 거의 같은 위험비가 나왔습니다(0.654 대 0.634). 그래서 이 프로젝트의 관찰 추정치는 이제 "효과"가 아니라 "교란 보정 후에도 남는 연관성" 으로만 적습니다. 그리고 트리밍이 v0.6부터 고정점에 도달하지 않고 있었습니다(10칸 전부, 5칸은 균형까지 실패). 고치자 v0.7의 "방사선은 식별 불가" 판정이 철회됐습니다 (최악 |SMD| 0.234 → 0.030).
v1.4: 인과 갈래와 시뮬레이터 갈래를 처음으로 붙였습니다. Cox 보상모형은 같은 관찰자료로 학습되므로 같은 교란을 안고 있고, 실제로 항암 HR 1.042 · 호르몬 HR 1.046 으로 둘 다 해롭다고 믿습니다(우리 보정 분석과 부호가 반대). 치료 계수를 중립화하자 격차가 +0.0332 → +0.0199로 줄었고(z = −5.37), MCTS가 나빠져서가 아니라 NCCN이 벌점을 그만 받아서였습니다(NCCN +0.0118, MCTS −0.0016).
v1.5: v1.4가 남긴 +0.0199를 선언된 이득 × 선언된 비용 2×2로 분해했습니다. 영대조(치료가 돕지도 비용도 아닌 환경)가 +0.0013으로 통과했고, 비용을 없앤 것만으로 격차의 **69%**가 사라졌습니다(z = −11.9). 이유는 config에 있었습니다 — 표준 항암·표준 호르몬·국소 방사선은 선언된 생존 이득이 0인데 비용만 있고, 그 셋이 바로 NCCN이 처방하는 것들입니다. 원래 +0.0332의 81%가 두 비대칭에서 나왔습니다(v1.4 40% + v1.5 41%). 그래서 현재 환경에서 "MCTS가 NCCN보다 낫다"를 주장하지 않습니다.
v1.6: 팀이 확보한 외부 자료 안에 GENIE BPC 유방암 v1.0-public(실제 환자 1,130명 · index 레지멘 6,579건)이 있었습니다. 9개월간 없어서 config에 선언해 지어내던 기보 — 치료 순서와 날짜, 수와 수 사이의 형세 판단(영상 판독) — 이 처음 손에 들어왔고, 효과 추정 전에 자료 적격성부터 쟀습니다. 폐루프 적응은 기록에 남아 있었습니다: 영상 판독이 "진행"인 뒤 90일 안에 치료가 바뀔 확률 71.3% 대 "안정" 뒤 29.5% (2.41배). 판독 이전 90일로 같은 계산을 하면 33.7% 대 30.8%로 거의 같아 시간 위약대조를 통과했습니다. 동시에 나쁜 소식 — 우리 행동축 5개 중 2개 (항암·내분비)만 관측 가능하고 수술·방사선·선행보조 시점은 큐레이션되어 있지 않으며, ECOG·동반질환도 없습니다. v1.5의 최우선 과제는 사라지지 않고 좁아졌습니다.
v1.7: MCTS를 쓰는 유일한 이유 — 관찰한 것에 적응하는 능력 — 을 통째로 껐습니다. 응답 채널을 탐색 정책에서만 뺏고(환경은 그대로) 재보니 격차가 +0.0199 → +0.0195, 짝지은 차이 −0.0004(SE 0.0013, z = −0.29, 12시드 중 7시드)였습니다. 부정 결과이므로 검정력과 함께 적습니다 — 이 설계는 격차의 18%보다 큰 폐루프 몫이었다면 잡았을 것입니다. 이유는 환경에 있습니다: 응답은 선행치료를 고른 20.8%의 에피소드에서만 뽑히고, 판단 시점이 최대 1회입니다(실제 진료는 5년 내 2~9수). 그래서 현재 환경에서 MCTS는 사실상 정적 최적화기이고, 문제는 알고리즘이 아니라 환경입니다.
v1.8: v1.7의 처방대로 적응할 자리를 하나 열었습니다 — 재발 시 구제치료
결정(v0.6 환경, configs/dynamic_v0_6.json). 결정 지점의 값은 +0.0009(z = 0.93,
MDE 0.0028 = 격차의 14%)로 검출되지 않았고, 그 값조차 폐루프가 아니었습니다:
우리가 선언한 구제치료가 5년 지평 안에서 순손실이라(가이드라인 정책이 강제로 받아
−0.0010, z = −13.7) MCTS는 결정의 85%를 거절했고 재발 3년차부터는 100% 거절
했습니다. v1.5의 비대칭을 새 채널에서 재생산했지만, 사전 예측 "지평 인공물"이 같은
실행에서 잡았습니다. "적응할 자리"의 조건이 셋으로 구체화됐습니다 — 자주 열리고,
선택이 갈리고, 지평이 결과를 자르지 않아야 합니다. 다음 과제는 결정 지점 추가가
아니라 지평 처리입니다.
v1.9: 지평을 고쳤습니다 — 결정 지평 뒤에 말기 가치 10년(v0.7 환경,
configs/dynamic_v0_7.json; GENIE BPC 진행 후 생존 중앙 3.9년·5년 40%·10년 18%가 근거).
v1.8의 진단이 맞았습니다: 재발 연도별 거절률 62→100%가 1.5→1.4% 로 평평해졌고,
같은 파라미터의 구제치료가 가이드라인 정책에게 순손실(−0.0010)에서 순이득
(+0.0050, z = 14.4) 으로 바뀌었습니다. 그런데 결정 지점의 값은 여전히 검출되지 않았고
(+0.0059, z = 1.15, MDE 27%) 이번엔 "항상 치료" 로 붕괴했습니다(수용 98.7%). 그리고
말기 가치가 v1.5의 비대칭을 증폭했습니다 — MCTS만 쓰는 강화 항암이 12% → 39%.
영대조는 절대 허용치를 넘겨 형식상 실패했고(z = −1.58) 규약을 상대값으로 바꿨습니다.
v0.7의 격차는 인용하지 않습니다(척도 3배).
v2.0: 구제 결정이 환자에 따라 갈리는 위험비가 있는지, 탐색 없이 환경의 산술로 지도를 그렸습니다(40명 × 재발 4연도 × 위험비 21). 없었습니다 — 치료가 이득인 칸이 0.94까지 100%, 0.98부터 0%, 환자별 무차별 위험비 0.95~0.96(퍼짐 0.01). 지도가 고른 0.96에서 시드 24로 탐색을 돌리자 정답조차 재현하지 못했습니다(오라클 1년차 100% 대 MCTS 56%, 네 해 모두 동전 던지기) — 두 선택의 차이 0.002가 예산 1024의 잡음 0.02 아래라서. 결정 지점의 값 +0.0002(격차의 0.4%, z = 0.06). 결정 지점의 값 = 판돈 × 상태 의존 × 해상도이고, 곱셈 이득 × 고정 비용 채널은 셋을 동시에 못 줍니다. 구제 선은 여기서 접고, 다음은 표준치료 이득 선언과 효과 이질성 선언(사람 검토)입니다.
v2.1: v1.5가 지목한 표준치료의 선언된 이득 0을 다이얼로 바꿨습니다 — 숫자를
고르지 않고 결론이 그 숫자에 얼마나 의존하는지를 곡선으로 쟀습니다. 무작위 배정
문헌 이득의 44.5% 만 선언해도 격차가 +0.0199 → 0 → −0.0061이 됩니다. 전환점의
재발 위험비는 항암 0.88 · 내분비 0.80 · 방사선 0.73 — 표준치료가 재발을 1227%만
줄이면 되는 크기입니다. 원래 격차의 75%가 문헌 이득의 4분의 1에서 사라집니다
(z = −10.2). 닫히는 방식은 또 같습니다 — NCCN +0.0609, MCTS +0.0350. 그리고
MCTS는 고집을 부리지 않습니다(항암 수용률 31% → 72%). 덤으로 v2.0이 구제 채널에
없다고 한 효과 이질성이 이 채널엔 이미 있습니다(환자별 교차 강도 0.201.00,
HR+ 0.40 대 HR− 0.65).
v2.2: 새로 확보한 MSK-CHORD (MSK, Nature 2024) 유방암 5,368명으로 v1.7의 한계를 자료로 겨냥했습니다. v1.7은 폐루프를 꺼도 격차가 −0.0004(z = −0.29) 밖에 안 움직였는데, 이유는 우리 환경이 응답 신호를 에피소드의 20.8%에서 단 한 번 주기 때문이었습니다. 실제 진료는 다릅니다 — 진단 90일 안에 기록에 들어온 환자는 5년에 걸쳐 적응 기회 중앙값 3회·66% 를 갖습니다(기회 3배·환자 3.2배). 그 자리에서 치료도 실제로 바뀝니다: 진행 판독 뒤 66.8% 대 안정 뒤 27.6%(2.41배), 시간 위약대조 +0.294 대 −0.050. GENIE BPC의 2.42배와 사실상 같은 수입니다. ECOG가 2회 이상인 환자 100%가 값이 변했지만 — 연속 쌍 27,692개 중 같은 값이 0개라 릴리스가 변화점만 기록하는 것이었고, 통과가 아니라 무효(실패 불가) 로 적었습니다. 헤드라인 +0.0199는 그대로이고, 바뀐 것은 우리 환경이 틀렸다는 외부 증거입니다.
v2.3: v2.2가 "환경에 적응 지점을 3개 이상 넣어라"는 목표를 줬고, 당연한 후보는
ECOG였습니다. 환경 코드를 한 줄도 쓰기 전에 그 전제를 자료로 검사했습니다 —
사전 예측 넷 중 셋이 빗나갔고, 빗나간 쪽이 훨씬 유익했습니다. ECOG는 질병을 분명히
추적하지만(진행 후 악화 2.55배), 임상의가 그것을 보고 치료를 멈추는 것은 검출
한계 아래이고(격차 +1.3%p, MDE 3.0%p), 떨어진 폭이 클수록 오히려 덜 멈추며
(1단계 +1.5%p → 4단계 −13.3%p), 항암 자격 연관은 반대로 갑니다(ECOG≥2에서 8.1%p
더 많고 Stage 1-3·Stage 4 양쪽에서 유지). 게다가 악화의 26.8%가 치료 시작 90일
안에 와서 치료 독성도 재고 있습니다(toxicity_count와 이중 계상 위험).
그래서 찾던 상태가 ECOG가 아니었습니다 — v2.2가 이미 임상의가 분명히 반응하는
신호를 찾아 뒀습니다(진행 판정 뒤 치료 변경 2.41배). 다음 과제는 ECOG 추가가
아니라 recurred를 이진에서 등급으로 바꾸는 것입니다.
v2.4: recurred 이진 플래그를 세 등급으로 쪼개면 결정이 생기는지, 환경을 바꾸기
전에 탐색 없이 물었습니다. 값을 고르지 않고 분리 강도를 다이얼로 만들었고(평균
중립, 가중치는 MSK-CHORD 32,977건의 56.0/20.1/23.9%), 영대조가 통과했습니다
(분리 0에서 등급 퍼짐 정확히 0, 환자 퍼짐 0.0116 = v2.0의 0.01). 등급이 답을
갈리게는 합니다 — 위험비 0.96에서 안정 14% 대 진행 73%. 그런데 퍼짐은
끝까지 돌려도 0.0144(예측 하한 0.05의 3분의 1)이고, 더 중요하게는 등급을 아는
값이 0.00070 으로 예산 1024의 행동값 잡음 0.02의 1/28입니다. 완벽하게 관측해도
탐색기가 쓸 수 없습니다. 네 버전 만에 벽의 이름이 나왔습니다 — 문제는 상태의
해상도가 아니라 채널의 판돈입니다(v2.1의 이득 다이얼은 같은 축에서 0.06을 움직입니다).
그리고 우리 삼각형의 한 다리(해상도)를 사전등록하지 않은 것이 이번의 절차 실패입니다.
v2.5 (마지막 실험): v2.4가 "막는 건 채널의 판돈"이라 했으니, 판돈을 키우는 쪽과 채널을 라인 사다리로 바꾸는 쪽을 같은 판돈에서 비교했습니다. 세 다리를 모두 사전등록했고(v2.4 교훈), 다섯 중 셋이 빗나갔습니다 — 제가 선언한 사다리에 지배하는 단이 있어 선택지 넷이 하나처럼 굴었기 때문입니다(설계 오류). 강한 단의 값을 다이얼로 쓸어 보니 창이 열렸다가 닫힙니다(값 배수 2~6배). 봉우리(4.5배)에서 안정이면 87%가 거절, 진행이면 100%가 강한 단 — 진짜 상태 의존입니다. 결론: 정보가치 0.00070 → 0.01744 (25배)이면서 판돈은 오히려 절반(0.0757 → 0.0392), 같은 판돈의 이진 팔은 정확히 0. 답은 크기가 아니라 모양이었습니다. 그래도 잡음 0.02의 87% 로 끝내 못 넘고, 그 봉우리는 선언값을 좁은 띠에 맞춰야 나옵니다 — 맞추면 측정되는 건 적응이 아니라 그 조율입니다. 실험은 여기서 끝납니다.
v2.6 (강건성 확인, 10-22 승인): 가장 많이 인용하는 숫자 44.5%가 5년 게임의 산물인지, 같은 다이얼을 말기 가치 10년 환경(v0.7) 에서 돌렸습니다. 버티지 않았습니다 — 격차가 0~1 범위에서 한 번도 0을 넘지 않습니다(최저 강도 0.445에서 +0.0149, z +2.43, NCCN 대비 +0.72%). 사전 예측 "B2가 버틴다"·"전환점이 더 낮아진다" 둘 다 빗나갔습니다. 사후 산술 분해로는 최선 고정 계획의 여지가 +2.2% 아래로 안 내려가고, 그 70%가 NCCN이 한 번도 쓰지 않는 강화 항암·연장 내분비에서 옵니다 — v1.5의 비대칭이 다른 문으로 돌아온 것입니다. 결론: 44.5%는 v0.5 전용이고, 두 환경 모두에서 격차는 가이드라인이 아니라 우리 선언에 매달려 있습니다 (리포트).
헤드라인 인용 규칙(2026-09-05 결정 · 2026-09-07 갱신): 효용 격차는 아형 균등 표본 ·
치료 중립 보상모형 값 +0.0199를 쓰되, 아형 표준화까지 한 +0.0136과 아형 간 3.7배
차이를 항상 함께 적습니다. 두 정정은 서로 다른 것을 고치므로 겹칩니다.
근거와 되돌릴 조건은 src/minutes/2026-09-05-headline-sampling-decision.md와
src/minutes/2026-09-07-reward-model-confounding.md에 있습니다.
전체 줄기를 한 번에 읽으려면 연구 이야기, 숫자가 왜 달라졌는지는 숫자 화해, 제안서 대비 범위 변화는 제안서 대비 산출물을 보세요. 셋 다 사이트의 /story에도 있습니다.
핵심 결과와 해석은 동적 MCTS PoC v0.2 보고서, 강건성 v0.3 보고서, 민감도 v0.3 보고서, 예산 스케일링 v0.4 보고서, 환경 편향 수정 v0.5 보고서, IPW 표적시험 v0.6 보고서, 이중강건 v0.7 보고서, 상호작용 민감도 v0.8 보고서, 확인 실험 v0.9 보고서, 민감도 재실행 v1.0 보고서, 환자 수 민감도 v1.1 보고서, 코호트 복제 v1.2 보고서, 음성대조와 트리밍 수정 v1.3 보고서, 보상모형 교란 v1.4 보고서, 채널 분해 v1.5 보고서, GENIE BPC 자료 적격성 v1.6 보고서, , , , , , , , , , , , 한 곳으로 모았습니다 — 논문 초록과 최종 발표가 거기서 나옵니다. 아홉 달치 은 에 있습니다 — 입니다. 주장 세트를 IMRaD로 편 가 수치까지 채운 상태로 있습니다(그림 8장 확정). 부록은 와 (심각도 순 26건 + 철회 4건)입니다. 날짜별 작업 근거는 에 정리되어 있습니다.
analysis/
01~05_*.py 데이터·시각화·NCCN 분석 실행 파일
06_run_mcts_poc.py 보상모형 학습과 MCTS 정책 비교
07_visualize_mcts_poc.py 결과 그림 생성 및 사이트 반영
08_run_dynamic_mcts_poc.py OS/RFS 기반 동적 정책 실험
09_visualize_dynamic_mcts_poc.py 동적환경 Figure 14~17
10_run_multiseed_robustness.py 다중 시드 강건성 (v0.3)
11_run_sensitivity_analysis.py 합성 가정 민감도 (v0.3)
12_run_budget_scaling.py 탐색 예산 스케일링 진단 (v0.4)
13_run_environment_fix_impact.py 환경 편향 수정의 영향 측정 (v0.5)
14_visualize_v03_v05.py v0.3~v0.5 Figure 18~23
15_run_ipw_target_trial.py IPW 표적시험 에뮬레이션 (v0.6)
16_visualize_ipw.py IPW Figure 24~26
17_run_doubly_robust.py AIPW·IPCW·결정별 식별 가능성 지도 (v0.7)
18_visualize_doubly_robust.py Figure 27~28
19_run_interaction_sensitivity.py 2차원 상호작용 민감도 (v0.8)
20_visualize_interaction.py Figure 29
21_visualize_env_refresh.py Figure 30 (환경 재실행 대조)
22_run_utility_interaction_confirm.py 가치판단 상호작용 확인 (v0.9)
23_visualize_interaction_confirm.py Figure 31
24_run_sensitivity_precision.py 민감도 정밀도 재실행 (v1.0)
25_visualize_sensitivity_precision.py Figure 32
26_run_sensitivity_patients.py 환자 수를 늘린 민감도 (v1.1)
27_visualize_sensitivity_patients.py Figure 33
28_run_cohort_replication.py 겹치지 않는 코호트 복제 (v1.2)
29_visualize_cohort_replication.py Figure 34~35
30_run_subtype_standardisation.py 아형 표준화 (v1.2 사후)
31_run_endocrine_effect.py 호르몬치료 효과·음성대조·트리밍 수정 (v1.3)
32_visualize_endocrine_effect.py Figure 36~37
33_run_reward_model_confounding.py 보상모형 치료 계수 중립화 (v1.4)
34_visualize_reward_confounding.py Figure 38~39
35_run_channel_decomposition.py 선언된 이득·비용 2×2 분해 (v1.5)
36_visualize_channel_decomposition.py Figure 40
causal/ipw.py 프로펜서티·균형·가중 KM·IPCW·AIPW·E-value (numpy 구현)
causal/decisions.py 결정별 코호트·교란요인 명세·고정점 트리밍
causal/effects.py IPCW·세 추정량·부트스트랩 (17과 31이 공유)
mcts/ 환경·생존모형·UCT 탐색 모듈
dynamic/ 공통 스키마·확률 전이·stochastic MCTS
dynamic/cohort.py 10~12가 공유하는 코호트·보상모형·매니페스트
data/
brca_metabric/ 원본 데이터 (Git 제외)
processed/ 전처리 데이터 (Git 제외)
reports/mcts-poc-v1/
tables/ 고정 분할, 계수, 환자별 결정, 요약표
figures/ 보고서 그림
metrics.json 모형·탐색 핵심 지표
run_manifest.json 입력 해시·시드·실행 정보
reports/dynamic-mcts-poc-v0.2/
tables/ 8,000 episode·trace·정책·안정성 결과
assumptions_snapshot.json 실행 당시 합성 가정
reports/budget-scaling-v0.4/
tables/ 결정지점 × 예산 수렴, 예산별 효용 격차
reports/environment-fix-v0.5/
tables/ 편향/수정 환경의 시드별 결과와 짝지은 차이
reports/ipw-target-trial-v0.6/
tables/ 프로펜서티·공변량 균형·효과추정·트리밍 민감도
reports/doubly-robust-v0.7/
tables/ 추정량 비교·결정별 식별 가능성 지도·검열 가중
reports/interaction-sensitivity-v0.8/
tables/ 2차원 격자 27셀·상호작용 통계
reports/utility-interaction-v0.9/
tables/ 시드 12개 확인 격자·시드별 차이-의-차이
reports/sensitivity-precision-v1.0/
tables/ 13변형 × 2예산 결과·짝지은 표준오차
reports/sensitivity-patients-v1.1/
tables/ 13변형 × 3코호트 결과·환자별 효용 격차
reports/cohort-replication-v1.2/
tables/ 겹치지 않는 두 코호트·합산·아형 표준화
reports/endocrine-effect-v1.3/
tables/ 결정별 효과·음성대조·공변량 균형·트리밍 수렴
reports/reward-confounding-v1.4/
tables/ 보상모형 계수·모형 대 인과 대조·행동 구성·아형별 격차
reports/channel-decomposition-v1.5/
tables/ 선언된 이득/비용 비대칭·2×2 팔별 격차·행동 구성
reports/genie-bpc-profile-v1.6/
tables/ 기보 길이·차수별 채널·판독→전환·행동축 커버리지
reports/closed-loop-value-v1.7/
tables/ 팔별 격차·시드별 결과·행동 구성
reports/decision-points-v1.8/
tables/ 팔별 격차·시드별 결과·행동 구성·재발 연도별 거절률
reports/horizon-v1.9/
tables/ 위와 같음 + GENIE 진행 후 생존
reports/indifference-v2.0/
tables/ 무차별 지도(40×4×21)·환자별 무차별 위험비·연도별 오라클 대 MCTS
reports/benefit-tipping-v2.1/
tables/ 강도별 격차·선언된 사다리·산술 미리보기·환자별 교차 강도
reports/msk-chord-profile-v2.2/
tables/ 행동축 관측 가능성·적응 기회·진입 시점별·전환율·ECOG 궤적
reports/ecog-state-v2.3/
tables/ ECOG 변화·중단율(크기별 포함)·ECOG별 항암 비중·악화 전이율
reports/burden-map-v2.4/
tables/ 선언된 등급 사다리·등급별 무차별 지도·퍼짐·완전정보 가치
reports/stakes-map-v2.5/
tables/ 선언된 라인·판돈별 요약·값 다이얼 스윕·등급별 라인 선택
reports/tipping-v07-v2.6/
tables/ v0.7 강도별 격차·시드별·행동 구성·v0.5 비교·정적 분해
configs/dynamic_v0_6.json v0.5 + 재발 시 구제 결정 (5년 지평에서 순손실, 인용 금지)
configs/dynamic_v0_7.json v0.6 + 말기 가치 10년 (이후 환경의 기본; 절대 격차 인용 금지)
reports/*-v0.5env/ v0.3·v0.4를 수정 환경에서 재실행한 결과
configs/dynamic_v0_5.json 현재 환경 가정 (v0.2는 과거 리포트 재현용으로 보존)
analysis/genie/ GENIE BPC 어댑터 (로더·기보 변환)
analysis/dynamic/blinding.py 응답 채널을 계획자에게서 가리는 래퍼 (v1.7)
analysis/dynamic/salvage.py 구제 결정 위임 환경·영대조·지평 진단 (v1.8)
analysis/genie/survival.py GENIE 진행 후 생존 KM (v1.9)
analysis/dynamic/indifference.py 결정론적 잔여 효용·무차별 지도 (v2.0)
analysis/dynamic/benefit.py 표준치료 이득 다이얼·계획 기대효용 (v2.1)
analysis/msk/ MSK-CHORD 어댑터 (로더·행동축·적응 기회) (v2.2)
analysis/msk/performance.py ECOG 변화·중단율·자격 게이트·전이율 (v2.3)
analysis/dynamic/burden.py 질병 부담 등급 다이얼 (평균 중립) (v2.4)
analysis/dynamic/stakes.py 구제 라인 사다리·판돈/값 다이얼 (v2.5)
docs/k-cure-adaptation.md K-CURE 이행 데이터 계약
src/minutes/ 날짜별 연구 기록과 의사결정 근거
tests/ 정책·환경·MCTS·특징변환 자동 검증
Python 분석:
py -m pip install -r requirements.txt
py analysis\04_nccn_policy.py
py analysis\06_run_mcts_poc.py
py analysis\07_visualize_mcts_poc.py
py analysis\08_run_dynamic_mcts_poc.py
py analysis\09_visualize_dynamic_mcts_poc.py
py analysis\10_run_multiseed_robustness.py
py analysis\11_run_sensitivity_analysis.py
py -m unittest discover -s tests -v
연구 블로그:
npm install
npm run dev
neutralise_treatment_terms()를 쓰고, 치료 효과는 config의 선언된 파라미터가
담당합니다. v0.2~v1.2의 수치는 옛 환경의 기록입니다.analysis/17은 재현을 위해 옛 동작으로 고정해 두었습니다.toxicity_count와의 이중
계상도 조심합니다.OS_MONTHS의 원점도 진단이 아니라 시퀀싱입니다.data/ git 제외).reports/*-v0.5env).
인용은 재실행 쪽 값을 씁니다.