二、平行设计的多独立样本均数比较
function n = calculate_sample_size(alpha, beta, sigma, mu,dropout_rate)
% alpha: 显著性水平 (例如 0.05)
% beta: 检验的二类错误概率 (例如 0.1, 表示功效为 90%)
% sigma: 总体标准差
% mu: 各组的均值 (向量,例如 [8.35, 12, 13.15])
%测试
% alpha=0.05;
% beta=0.1;
% sigma=3.2;
% mu=[8.35, 12.00, 13.15]
% dropout_rate=0.1
%参考文献:邓伟.临床试验设计与统计分析[M].人民卫生出版社,2012.
lambda_data=[11.68 7.85 14.88 10.51
13.89 9.64 17.43 12.66
15.46 10.91 19.25 14.18
16.75 11.94 20.74 15.41
17.87 12.83 22.03 16.47
18.88 13.63 23.19 17.42
19.79 14.36 24.24 18.29
20.64 15.03 25.22 19.09
21.43 15.65 26.13 19.83
22.18 16.25 26.99 20.54
22.89 16.81 27.80 21.20
23.57 17.34 28.58 21.84
24.22 17.85 29.32 22.44
24.84 18.34 30.04 23.03
25.44 18.82 30.73 23.59
26.02 19.27 31.39 24.13
26.58 19.71 32.04 24.65
27.12 20.14 32.66 25.16
27.65 20.56 33.27 25.66
];
k = length(mu); % 组数
mu_bar = mean(mu); % 组均值的算术平均值
df = k – 1; % 自由度
% Step 1: 计算效应量 Delta
Delta = (1 / sigma^2) * sum((mu – mu_bar).^2);
% Step 2: 查找 Lambda
if beta == 0.2 && alpha == 0.01;
lambda = lambda_data(df, 1); % 对应 beta=0.2, alpha=0.01 的非中心参数
elseif beta == 0.2 && alpha == 0.05;
lambda = lambda_data(df, 2); % 对应 beta=0.2, alpha=0.05 的非中心参数
elseif beta == 0.1 && alpha == 0.01;
lambda = lambda_data(df, 3); % 对应 beta=0.1, alpha=0.01 的非中心参数
elseif beta == 0.1 && alpha == 0.05;
lambda = lambda_data(df, 4); % 对应 beta=0.1, alpha=0.05 的非中心参数
else
error(‘无法找到对应的 lambda 值,请检查 alpha 和 beta 的输入是否正确’);
end
% Step 3: 样本量计算
n = lambda / Delta;
modyfy_n=ceil(n*(1+dropout_rate));
% 输出结果
disp([‘λ 值为:’, num2str(lambda)]);
disp([‘组均值的算术平均值为:’, num2str(mu_bar)]);
disp([‘每组的样本量为:’, num2str(ceil(n))]);
disp([‘脱落率为:’, num2str(dropout_rate)]);
disp([‘考虑脱落率样本量为:’, num2str(modyfy_n)]);
end