皆さんこんにちは
私は、参照サンプルとテスト サンプルから定義済みの繰り返し回数 (たとえば 1000 回) のランダム データを生成し、各シミュレーションで同等性テストを実行し、定義された同等性マージンを与えられた場合のタイプ 1 エラー (同等性を誤って示す) の頻度を報告するシミュレーターを作成しようとしています。
AIと少しの調査で以下のコードを思いついたのですが、うまく動作しません。スクリプト作成は比較的初心者なので、答えはきっと簡単なはずです…ただ、私にはそうは思えないんです!
どのようなご助力でもいただければ幸いです。
ありがとう!
// パラメータ
シミュレーション回数 = 1000;
nPerGroup = 3;
refMean = 99.1;
テスト平均 = 98.8;
標準偏差 = 0.1;
等価マージン = 0.3;
type1エラー = 0;
// 自由度 = 2n - 2 の 90% CI の臨界 t 値
df = 2 * nPerGroup - 2;
tCrit = StudentTQuantile(0.950, 自由度);
// 要約テーブルを作成する
summaryTable = 新しいテーブル("シミュレーション概要",
新しい列("シミュレーション",数値),
新しい列("CI_Lower", 数値),
新しい列("CI_Upper", 数値),
新しい列("Equivalence_Concluded", 文字)、
新しい列("Mean_Diff", 数値)
);
// シミュレーションをループする
For(sim = 1, sim <= numSimulations, sim++,
// 新しいデータテーブルを作成する
dt = 新しいテーブル("Sim" || Char(sim),
行を追加(nPerGroup * 2)、
新しい列("グループ", 文字),
新しい列("値", 数値)
);
// 参照グループをシミュレートする
i = 1, i <= nPerGroup, i++, の場合
dt:Group[i] = "参照";
dt:Value[i] = ランダム正規分布(refMean, sd);
);
// テストグループをシミュレートする
i = nPerGroup + 1, i <= nPerGroup * 2, i++, の場合
dt:Group[i] = "テスト";
dt:Value[i] = ランダム正規分布(testMean, sd);
);
// 値を抽出する
refVals = dt << Get As Matrix( :Value )[1::nPerGroup];
testVals = dt << Get As Matrix( :Value )[nPerGroup+1::nPerGroup*2];
meanDiff = 平均(テスト値) - 平均(参照値)。
// 標本分散
varRef = 分散(refVals);
varTest = 分散(テスト値)。
// プールされた分散
pooledVar = ((nPerGroup - 1) * varRef + (nPerGroup - 1) * varTest) / df;
プールされたSD = Sqrt(プールされた変数);
// 差の標準誤差
seDiff = プールされたSD * Sqrt(2 / nPerGroup);
// 90% 信頼区間
ciLower = meanDiff - tCrit * seDiff;
ciUpper = meanDiff + tCrit * seDiff;
// 同等性をチェックする
eqResult = "いいえ";
ciLower > -equivMargin & ciUpper < equivMarginの場合、
type1エラー++;
eqResult = "はい";
);
// 結果をログに記録する
summaryTable << 行を追加(1);
サマリーテーブル:シミュレーション[sim] = sim;
サマリーテーブル:CI_Lower[sim] = ciLower;
サマリーテーブル:CI_Upper[sim] = ciUpper;
サマリーテーブル:Equivalence_Concluded[sim] = eqResult;
サマリーテーブル:Mean_Diff[sim] = meanDiff;
// 乱雑にならないようにテーブルを閉じます
dt << ウィンドウを閉じる;
);
// 結果を表示
新しいウィンドウ("タイプIエラーの概要",
テキストボックス("合計シミュレーション数: " || Char(numSimulations)),
テキストボックス("タイプIエラー: " || Char(type1Errors)),
テキストボックス("推定タイプIエラー率: " || Char(Round(type1Errors / numSimulations * 100, 2)) || "%")
);