【专题】临床研究样本量计算(Matlab)

二、平行设计的多独立样本均数比较

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

发表回复