
4.8 嵌套设计一元定量资料方差分析
4.8.1 问题与数据
【例4-8】某研究者进行绵马贯众及单芽狗脊贯众饮片的凝血时间对比实验,取昆明种小鼠48只,随机分成8组,分别为绵马贯众生品高低剂量组、炭品高低剂量组,单芽狗脊贯众生品高低剂量组、炭品高低剂量组。各组小鼠连续灌胃给药3d,第3d给药1h后以毛细管法测定小鼠凝血时间(s),数据如表4-8所示。假设专业上认为对观测指标的影响,首先生品或炭品选择影响最大,然后是剂量的选择(高剂量或低剂量),最后是药物的选择(绵马贯众或单芽狗脊贯众)。实验结果如下,请进行合适的统计分析。
表4-8 药物对凝血时间的影响

4.8.2 对数据结构的分析
研究者做了8组实验,乍一看,很像单因素8水平设计定量资料,实则不然。这8个实验组实际上涉及了三个实验因素:“药材种类”、“剂量”和“炮制类型”,并且8个实验条件正是这三个实验因素各水平的全面组合。由于有专业依据认为三个实验因素对观测指标的影响重要性不同,炮制类型>剂量>药材种类,那么此资料应为三因素嵌套设计一元定量资料。
4.8.3 分析目的与统计分析方法的选择
应选用与其设计类型相对应的方差分析处理此资料。
4.8.4 SAS程序
SAS程序名为SASTJFX4_8.SAS。

程序中的第1步为建立数据集,drug代表“药材种类”,type代表“炮制类型”,dose代表“剂量”,rep代表“受试对象个体”,y代表观测指标“凝血时间”。第2步为对数据集进行排序,这是NESTED过程的要求。在调用NESTED过程之前,需按照NESTED过程中class语句后的因素顺序对数据集进行排序,即SORT过程中by语句后的因素顺序必须与NESTED过程中class语句后的因素顺序保持一致。当然,若数据集本身就是按照NESTED过程中class语句后的因素顺序建立的,此过程可以省略。如果本数据集以循环语句“do type=1 to 2; do dose=1 to 2; do drug=1 to 2;”来录入数据集,那么建立的数据集本身就是按照type、dose、drug的顺序排过序的,可以不必再调用SORT过程。第3步为调用NESTED过程进行方差分析,此过程适用于分析平衡的嵌套设计定量资料(即各实验条件下进行相同次数独立重复实验的第1类嵌套设计,各水平下重复实验次数相等且主因素各水平下嵌套的次因素水平数相等)。在class语句中,各因素出现的顺序很重要,要求按照因素重要程度由高到低排列,即主因素在前,次因素在后。第4步为调用GLM过程进行嵌套设计定量资料方差分析,与NESTED过程不同的是,GLM过程的适用范围更广,它可以分析不平衡的嵌套设计定量资料,也不需要事先调用Sort过程,当然class语句中各因素的排列顺序也可随意安排。但在model语句中需表明各因素的嵌套关系,如本例中type为主因素,dose为次因素,drug为次次因素,那么在model语句中就需要写成y=type dose(type)drug(dose type);dose(type)表示dose嵌套于type因素之下,drug(dose type)表示drug嵌套于dose和type因素之下。此外,GLM过程还需要用test语句指明分析各因素主效应时所采用的误差项。
4.8.5 主要分析结果及解释
The NESTED Procedure

这是输出结果的第1部分,是NESTED过程产生的结果。可以看出:炮制类型和剂量各水平对凝血时间的影响之间的差异有统计学意义,对应的统计量值分别为F=19.87、F=14.94,相应的P值分别为P=0.0468、P=0.0139。在“Error Term”列可以查看计算各因素F值所用的误差项,如分析炮制类型时所用的误差项为剂量,分析剂量时所用的误差项为药物种类,分析药物种类时所用的误差项为模型的误差。由于篇幅限制,在上述结果中对小数点后位数较多的数值进行了四舍五入。
The GLM Procedure

这是输出结果的第2部分,是GLM过程产生的结果,给出了模型拟合的有关信息和方差分析表。需要注意的是,此方差分析表仅有最后一行的信息是正确的,即对药物种类检验的结果,其中F=0.14,P=0.9659,说明不同药物造成的凝血时间的差异没有统计学意义。


这是输出结果的第3部分,即由GLM过程中两个test语句和means语句得出的结果。前两个表分别给出了对炮制类型和剂量进行检验的结果,其统计量取值分别为F=19.87、F=14.94,对应的P值分别为P=0.0468、P=0.0139。说明不同炮制类型和不同剂量造成的凝血时间的差异有统计学意义,根据最后给出的均数表可以看出,生品的凝血时间一般大于炭品,低剂量药品的凝血时间一般大于高剂量药品,说明炭品比生品的凝血时间短,高剂量药品比低剂量药品凝血时间短。
请注意:若读者想计算炮制类型、剂量、药物种类各自水平对应的具体均数,在此GLM过程中是无法实现的,因为GLM过程要求means语句后的效应成分必须在之前的model语句中出现过。因此,需重新构建model语句,具体做法如下:
proc glm; class drug type dose; model y=type dose drug/ss1; means type dose drug; run;
这样就可以输出3个实验因素各自水平的均数及标准误差,当然此过程给出的统计分析是错误的,读者可不予关注。此过程计算的各因素各水平均数如下:

