样本量估计及其在nQuery和SAS软件上的实现*
——相关分析(二)

2021-07-07 09:27南方医科大学公共卫生学院生物统计学系510515钱晨坚吴研鹏段重阳陈平雁
中国卫生统计 2021年3期
关键词:参数设置样本量组内

南方医科大学公共卫生学院生物统计学系(510515) 钱晨坚 吴研鹏 段重阳 陈平雁

本刊之前已介绍了单样本的kappa系数检验(二分类变量)、相关系数检验(连续变量)和Lin和谐系数检验(连续变量)等有关相关分析的样本量估计方法[1-2],本文将进一步介绍相关分析中单样本Cronbachα系数检验、单样本组内相关系数检验和两独立样本Pearson相关系数检验的样本量估计方法,前两种方法主要用于量表的评价。

相关分析

1.单样本相关性分析

(1)差异性检验

①Cronbachα系数检验

方法:Feldt等[3]提出的单样本Cronbachα系数检验样本量的估计方法,是建立在自由度为v1和v2的F分布上的,检验效能的计算公式如下:

(1)

式中,v1=n-1,v2=(n-1)(k-1),n为样本量,k为量表的条目数;α为检验水准,s取1表示单侧检验,取2表示双侧检验,1-β为检验效能;F1-α(v1,v2)表示

自由度为v1和v2的F分布上侧α分位数,ProbF表示F分布的累积分布函数;ρα0和ρα1分别表示已知总体的Cronbachα系数和预期总体的Cronbachα系数。

计算样本量时,设定样本量n的初始值为2,通过不断增加样本量直至检验效能满足设定条件为止,最终得到的所需样本量。

【例1】欲评价某生活质量量表(SF-36)的信度,已知该量表共36个条目,即k=36。预期该量表的Cronbachα系数为0.89,以Cronbachα系数等于0.8为目标值(即原假设ρα0=0.8)。试估计单侧检验水准α=0.025,检验效能为90%,该量表的Cronbachα系数不低于0.8所需样本量。

nQuery Advanced 8.6.0.0实现:设置单侧检验水准α=0.025,检验效能1-β=90%,其他数据相应代入,在nQuery Advanced 8.6.0.0主菜单选择:

方法框中选择:Test for One Coefficient(Cronbach)Alpha

在弹出的样本量计算窗口将各参数值键入,如图1所示,结果n=60。即本研究所需样本量为60例。

图1 nQueryAdvanced8.6.0.0关于例1样本量估计的参数设置与计算结果

SAS 9.4软件实现:

/*Cronbach alpha系数检验*/

%macro cronbach(

alpha=/*检验水准*/

,side=/*单双侧检验,1表示单侧检验,2表示双侧检验*/

,r0=/*已知总体的Cronbachα系数*/

,r1=/*预期总体的Cronbachα系数*/

,k=/*量表条目数*/

,power=/*检验效能(%)*/

);

data a;

r0=&r0;r1=&r1;alpha=αk=&k;side=&side;power=&power/100;

/*输出错误信息*/

if(alpha>0.2 | alpha<0)then do;

error=1;

put “error:Test significance level′s range:0-0.2”;

end;

if(side^=1 & side^=2)then do;

error=1;

put “error:Side′s range:1 OR 2”;

end;

if(r0<=0 | r0>=1)then do;

error=1;

put “error:r0′s range:0

end;

if(r1<=0 | r1>=1)then do;

error=1;

put “error:r1′s range:0

end;

if(k<2)then do;

error=1;

put “error:k must be greater than 1”;

end;

if(&power>100 | &power<0)then do;

error=1;

put “error:Power′s range:0-100”;

end;

/*如有错误,跳出循环*/

if(error=1)then stop;

power=0;n=2;

do while(power<&power);

f1=FINV(1-alpha/side,n-1,(k-1)*(n-1));

f2=FINV(alpha/side,n-1,(k-1)*(n-1));

c=(1-r1)/(1-r0);

/*r0

if(r0 < r1)then power=100*(1-PROBF(c*f1,n-1,(k-1)*(n-1)));

/*r0>r1*/

if(r0 > r1)then power=100*(PROBF(c*f2,n-1,(k-1)*(n-1)));

if(power>=&power)then leave;

else n=n+1;

end;

power=round(power,0.01);

run;

/*结果输出*/

proc print data=a label;

var alpha side r0 r1 k power n;

label

alpha=“Test Significance Level”

side=“1 or 2 sided”

r0=“Null Coefficient Alpha”

r1=“Alternative Coefficient Alpha”

k=“Number of Raters”

power=“Power(%)”

n=“Sample Size”;

quit;

%mend cronbach;

%cronbach(alpha=0.025,side=1,r0=0.8,r1=0.89,k=36,power=90)

SAS运行结果:

图2 SAS 9.4 关于例1样本量估计的参数设置与计算结果

②组内相关系数检验

方法:Donner和Eliasziw[4]提出的单样本组内相关系数(interclass correlation coefficient,ICC)单侧检验的样本量估计方法,是建立在自由度为v1和v2的F分布上的,检验效能的计算公式如下:

(2)

式中,v1=n-1,v2=n(m-1),n为样本量,m为处理组数或重复因素的水平数;α为检验水准,1-β为检验效能;F1-α(v1,v2)表示自由度为v1和v2的F分布上侧α分位数,ProbF为F分布的累积分布函数;ρI0和ρI1为已知总体的组内相关系数和预期总体的组内相关系数。

计算样本量时,设定样本量n的初始值为2,通过不断增加样本量直至检验效能满足设定条件为止,最终得到的n表示所需样本量。

【例2】某研究使用葡萄糖氧化酶法对一批血液样本进行血糖浓度测定,欲评价不同实验者使用该法的测定结果一致性,即组内相关系数的大小。该研究下,参与一致性测定的实验者人数为3,即m=3。预期该研究的组内相关系数为0.85,以组内相关系数大于0.75(信度良好)为目标值(即原假设ρI0=0.75)。试估计单侧检验水准α=0.025,检验效能为90%,欲验证该研究的组内相关系数不低于0.75所需血液样本的样本量。

nQuery Advanced 8.6.0.0实现:设置单侧检验水准α=0.025,检验效能1-β=90%,其他数据相应代入,在nQuery Advanced 8.6.0.0主菜单选择:

方法框中选择:Test for Intraclass(Intracluster)Correlation

在弹出的样本量计算窗口将各参数值键入,如图3所示,结果n=92。即本研究所需样本量为92例。

图3 nQueryAdvanced8.6.0.0关于例2样本量估计的参数设置与计算结果

SAS 9.4软件实现:

/*组内相关系数检验*/

%macro ICC(

alpha=/*检验水准*/

,r0=/*已知总体的组内相关系数*/

,r1=/*预期总体的组内相关系数*/

,m=/*处理组数或重复因素的水平数*/

,power=/*检验效能(%)*/

);

data a;

r0=&r0;r1=&r1;alpha=&alpha;m=&m;power=&power/100;

/*输出错误信息*/

if(alpha>0.2 | alpha<0)then do;

error=1;

put “error:Test significance level′s range:0-0.2”;

end;

if(r0<0 | r0>=1)then do;

error=1;

put “error:r0′s range:0<=r0<1”;

end;

if(r1<0 | r1>=1)then do;

error=1;

put “error:r1′s range:0<=r1<1”;

end;

if(r0>=r1)then do;

error=1;

put “error:r1 must be greater than r0”;

end;

if(m<2)then do;

error=1;

put “error:m must be greater than 1”;

end;

if(&power>100 | &power<0)then do;

error=1;

put “error:Power′s range:0-100”;

end;

/*如有错误,跳出循环*/

if(error=1)then stop;

power=0;n=2;

do while(power<&power);

f=FINV(1-alpha,n-1,n*(m-1));

c=(1+m*r0/(1-r0))/(1+m*r1/(1-r1));

power=100*(1-PROBF(c*f,n-1,n*(m-1)));

if(power>=&power)then leave;

else n=n+1;

end;

power=round(power,0.01);

run;/*结果输出*/

proc print data=a label;

var alpha r0 r1 m power n;

label

alpha=“Test Significance Level”

r0=“Null Intracluster Correlation”

r1=“Alternative Intracluster Correlation”

m=“Number of Measurements/Raters”

power=“Power(%)”

n=“Sample Size”;

quit;

%mend ICC;

%ICC(alpha=0.025,r0=0.75,r1=0.85,m=3,power=90)

SAS运行结果:

图4 SAS 9.4 关于例2样本量估计的参数设置与计算结果

2.两独立样本相关性分析

(1)差异性检验

①两独立样本Pearson相关系数检验

方法:Zar[5]给出了两独立样本Pearson相关系数检验的样本量估计方法。基于大样本近似正态分布理论,检验效能的计算公式如下:

(3)

计算样本量时,设定样本量n1的初始值为4,n2=n1/R,R为两组样本量比值,通过不断增加样本量直至检验效能满足设定条件为止,最终得到的n1和n2分别表示两组所需样本量。

【例3】某研究欲比较不同组织细胞的端粒DNA长度与年龄的相关性。据既往研究,外周血白细胞中端粒DNA长度与年龄的相关性系数为0.79,心肌细胞中端粒DNA长度与年龄的相关性系数为0.87。两相关系数分别从两组人群获得,试估计双侧检验水准α=0.05,检验效能为80%,两组样本量比例R=1的情况下,能够发现这两种不同细胞的端粒DNA长度与年龄的相关系数存在差异所需的样本量。

nQuery Advanced 8.6.0.0实现:设置检验水准α=0.05,双侧检验,检验效能1-β=80%,其他数据相应代入。在nQueryAdvanced 8.6.0.0主菜单选择:

方法框中选择:Two Correlations

在弹出的样本量计算窗口将各参数值键入,如图5所示,结果n1=233,n2=233。即本研究两组所需样本量各为233例,共需466例。

图5 nQueryAdvanced8.6.0.0关于例3样本量估计的参数设置与计算结果

SAS 9.4软件实现:

/*两独立样本相关系数的检验*/

%macro twocor(

alpha=/*检验水准*/

,side=/*单双侧检验,1表示单侧检验,2表示双侧检验*/

,p1=/*样本1的相关系数*/

,p2=/*样本2的相关系数*/

,R=/*两组样本量比例*/

,power=/*检验效能(%)*/

);

data a;

p1=&p1;p2=&p2;alpha=&alpha;R=&R;side=&side;

/*输出错误信息*/

if(alpha>0.2 | alpha<0)then do;

error=1;

put “error:Test significance level′s range:0-0.2”;

end;

if(side^=1 & side^=2)then do;

error=1;

put “error:Side′s range:1 OR 2”;

end;

if(p1<=-1 | p1>=1)then do;

error=1;

put “error:P′s range:-1

end;

if(p2<=-1 | p2>=1)then do;

error=1;

put “error:P′s range:-1

end;

if(&power>100 | &power<0)then do;

error=1;

put “error:Power′s range:0-100”;

end;

/*如有错误,跳出循环*/

if(error=1)then stop;

z1=0.5*log((1+p1)/(1-p1));

z2=0.5*log((1+p2)/(1-p2));

power=0;

n1=4;

/*直到效能达到要求,跳出循环*/

do while(power<&power);

sigma=sqrt(1/(n1-3)+1/(n1/R-3));

/*双侧*/

if side=2 then

power=100*(probnorm((z1-z2)/sigma-probit(1-alpha/2))+

probnorm(-((z1-z2)/sigma)-probit(1-alpha/2)));

/*p1

if side=1 and p1

power=100*(probnorm((z1-z2)/sigma-probit(1-alpha)));

/*p1>p2,单侧*/

if side=1 and p1>p2 then

power=100*(probnorm(-((z1-z2)/sigma)-

probit(1-alpha)));

if(power >=&power)then leave;

else n1=n1+1;

n2=n1/R;

end;

n2=ceil(n1/R);R=n1/n2;

power=round(power,0.01);

run;

/*结果输出*/

proc print data=a label;

var alpha side p1 p2 R n1 n2 power;

label

alpha=“Test significance level”

side=“1 or 2 sided test”

p1=“Control Correlation”

p2=“Treatment Correlation”

R=“Sample Size Ratio”

n1=“Control Sample Size”

n2=“Treatment Sample Size”

power=“Power(%)”;

quit;

%mend twocor;

%twocor(alpha=0.05,side=2,p1=0.79,p2=0.87,R=1,power=80)

SAS运行结果:

图6 SAS 9.4关于例3样本量估计的参数设置和计算结果

猜你喜欢
参数设置样本量组内
医学研究中样本量的选择
用心说题 提高效率 培养能力
航空装备测试性试验样本量确定方法
Sample Size Calculations for Comparing Groups with Binary Outcomes
蚁群算法求解TSP中的参数设置
RTK技术在放线测量中的应用
合作学习组内交流讨论时间的遵循原则
合作学习“组内交流讨论时间”注意问题
合作学习组内交流讨论时间探究
基于STM32处理器的大棚温湿度监控系统设计