1、采用均数和标准差进行方差分析的方法及SAS实现
广东省深圳市中医院 郭志武
【摘要】目的 探讨采用均数和标准差进行方差分析的方法及SAS程序。方法 通过推导,得到基于均数和标准差的方差分析计算公式,并用简洁的SAS程序实现。结果 实现了有关算法及SAS程序。结论 采用均数和标准差进行方差分析是完全可行的,编制SAS程序可以有效实现相关的计算,得到可靠的结果。
【关键词】均数 标准差 方差分析 SAS
在实际工作中,通常会遇到一些研究资料只有均数和标准差而缺失原始数据的情况,比如年代久远的研究资料、期刊文献的资料等等。对于这些资料,若需进行t检验是很容易的,有现成的公
2、式可用;但若需对多个样本资料做方差分析就不易了,现有的计算公式以及统计软件的算法都是基于原始数据的,因此有必要探讨基于均数和标准差的方差分析算法,以满足实际工作的需要。
1.算法的推导
对于单因素方差分析,传统的算法是先计算总变异,然后分别算出组间变异和组内变异,最后求出F值和对应的P值。这都是基于原始数据来计算的。若只有均数和标准差,则需要通过推导得出计算组内变异和组间变异的公式。
组间变异的理论公式为:
(1)
而,因此:
(2)
组内变异的理论公式为:
3、 (3)
由于组内标准差,因此,从而:
(4)
这样,通过(2)式和(4)式,可以很方便地计算出和,从而进一步计算出F值。
至于双因素方差分析和多因素方差分析,可作类似推导,这里不再赘述。
多个样本的两两比较可以遵照现有公式完成。
2.SAS程序的实现
下面以《卫生统计学》第四版(倪宗瓒主编)第51页的样例数据为例,介绍采用均数和标准差进行方差分析的SAS程序的实现。
/*建立数据集
4、输入各组组号、样本例数、均数、标准差,组号需按ABCD...顺序输入*/
data a;
input gp$ n X S;
cards;
A 11 105.45 10.87
B 9 102.39 14.55
C 10 122.80 17.07
;
/*采用sql过程进行方差分析计算*/
proc sql;
create table b as
select sum(n) as N, /*计算总例数N*/
count(n) as k, /*计算组数k*/
sum(n*X**2)-sum(n
5、X)**2/sum(n) as SSZJ, /*计算组间变异*/
sum(S**2*(n-1)) as SSZN /*计算组内变异*/
from a;
quit;
data c;
set b;
MSZJ=SSZJ/(k-1); /*计算组间均方*/
MSZN=SSZN/(N-k); /*计算组内均方*/
F=MSZJ/MSZN; /*计算F值*/
P=1-probf(F,k-1,N-k); /*计算P值*/
proc print data=c;
var F P;
6、 /*显示F值,P值*/
run;
/*以下进行两两比较计算,采用LSD-t检验*/
data d;
set c;
keep N k MSZN;
proc sql;
create table e as
select a1.gp as gp1,a2.gp as gp2, /* 交叉匹配生成两两比较数据集*/
a1.n as n1,a2.n AS n2,
a1.X AS X1,a2.X as X2
from a as a1, a as a2
where a1.gp7、 create table f as
select e.*,d.* from e ,d; /*生成两两比较计算表 */
quit;
data g;
set f;
dmean=x1-x2;
sd=sqrt(MSZN*(1/n1+1/n2));
t=dmean/sd;
p=(1-probt(abs(t),n-k))*2;
proc print data=g;
var gp1 gp2 n1 n2 x1 x2 dmean t p; /*显示两两比较结果*/
run;
3.讨论
参考文献
倪宗瓒 主编.卫生统计学[M].第四版.北京:人民卫生出版社,2001.