안녕하세요 여러분,
정의된 반복 횟수(예: 1000)에 대한 참조 및 테스트 샘플의 무작위 데이터를 생성한 다음, 각 시뮬레이션에 대한 동등성 테스트를 실행하고 정의된 동등성 마진이 주어졌을 때 유형 1 오류(동등성을 잘못 보여주는 오류)의 빈도를 보고하는 시뮬레이터를 만들려고 합니다.
AI와 몇 가지 정찰 활동을 통해 아래 코드를 만들었지만, 제대로 작동하지 않고 있습니다. 스크립팅을 처음 접하는 초보 단계라 답변은 꽤 간단할 거라고 생각합니다... 다만 저에게는 좀 어렵네요!
귀하가 제공해 주실 수 있는 모든 도움은 감사히 받겠습니다.
감사해요!
// 매개변수
시뮬레이션 횟수 = 1000;
그룹당 n개 = 3;
참조평균 = 99.1;
테스트평균 = 98.8;
표준편차 = 0.1;
동등 마진 = 0.3;
type1오류 = 0;
// df = 2n - 2인 90% CI에 대한 중요 t 값
df = 2 * 그룹당 n개 - 2;
tCrit = 학생TQuantile(0.950, df);
// 요약 테이블 생성
summaryTable = New Table("시뮬레이션 요약",
새 열("시뮬레이션", 숫자),
새 열("CI_Lower", 숫자),
새 열("CI_Upper", 숫자),
새 열("Equivalence_Concluded", 문자),
새 열("평균 차이", 숫자)
);
// 시뮬레이션을 반복합니다
For(sim = 1, sim <= numSimulations, sim++,
// 새로운 데이터 테이블 생성
dt = 새 테이블("Sim" || Char(sim),
행 추가(nPerGroup * 2),
새 열("그룹", 문자),
새 열("값", 숫자)
);
// 참조 그룹 시뮬레이션
i = 1, i <= nPerGroup, i++,
dt:Group[i] = "참조";
dt:Value[i] = Random Normal(참조평균, sd);
);
// 테스트 그룹 시뮬레이션
i = nPerGroup + 1, i <= nPerGroup * 2, i++,
dt:Group[i] = "테스트";
dt:Value[i] = Random Normal(testMean, sd);
);
// 값 추출
refVals = dt << Get As Matrix( :Value )[1::nPerGroup];
testVals = dt << Get As Matrix( :Value )[nPerGroup+1::nPerGroup*2];
평균차이 = 평균(테스트값) - 평균(참조값);
// 표본 분산
varRef = 분산(refVals);
varTest = 분산(testVals);
// 풀링된 분산
pooledVar = ((nPerGroup - 1) * varRef + (nPerGroup - 1) * varTest) / df;
풀링된 SD = Sqrt(풀링된 변수);
// 차이의 표준 오차
seDiff = 풀링된 SD * Sqrt(2 / nPerGroup);
// 90% 신뢰구간
ciLower = 평균차이 - tCrit * se차이;
ciUpper = 평균차이 + tCrit * se차이;
// 동등성 확인
eqResult = "아니요";
ciLower > -equivMargin & ciUpper < equivMargin인 경우,
type1오류++;
eqResult = "예";
);
// 결과 기록
summaryTable << 행 추가(1);
요약표:시뮬레이션[sim] = sim;
요약표:CI_Lower[sim] = ciLower;
요약표:CI_Upper[sim] = ciUpper;
요약표:동등성_종료[sim] = eqResult;
요약표:평균차이[sim] = 평균차이;
// 어수선함을 피하기 위해 테이블을 닫습니다.
dt << 창 닫기;
);
// 결과 표시
새 창("1종 오류 요약",
텍스트 상자("총 시뮬레이션: " || Char(numSimulations)),
텍스트 상자("1종 오류: " || Char(type1Errors)),
텍스트 상자("예상되는 1종 오류율: " || Char(Round(type1Errors / numSimulations * 100, 2)) || "%")
);