看了你的提问,觉得和我前段时间做了个医学统计的数据分析很像,一个例子,供你参考:
研究不同的氧浓度(A)和不同的药物(B)对人白血病细胞K562抑制效果,因素A分为A1(含氧3%)和A2(含氧20%),因素B分为B1(表阿霉素)、B2(自制中药)、B3(132Ge)、B4(B1+ B3)、B5(B1+ B2)、B6(B2+ B3)、B7(B1+ B2+ B3);进行2*7析因设计并收集到数据如下,分析A、B两因素对K562细胞抑制的效果。
B药物
A氧浓度 重复编号 B1 B2 B3 B4 B5 B6 B7
A1((含氧3%)) 1 0.31 0.46 0.29 0.49 0.72 0.45 0.19
2 0.18 0.39 0.18 0.51 0.49 0.42 0.20
3 0.12 0.40 0.12 0.62 0.55 0.44 0.18
4 0.13 0.34 0.13 0.53 0.37 0.42 0.17
A2(含氧20%) 1 0.29 0.65 0.87 0.74 1.09 1.04 0.81
2 0.27 0.84 0.39 0.78 0.73 0.63 1.01
3 0.29 0.45 0.57 1.45 0.81 1.18 1.18
4 0.28 0.63 0.64 1.41 0.77 1.45 0.94
解题思路:先对数据进行交互作用分析,若无交互作用,那么分析其主效应就可以了,若主效应有多个水平,那么可以采用means a b/snk进行各个主效应的多水平的比较就可以了;
但是如果存在交互效应的话,分析主效应其意义不大,就需要把A或B控制在不同的水平下,对B或A的各个水平之间进行两两比较。
首先对交互效应的分析:
Sas程序:
data h1;
do a=1 to 2;
do r=1 to 4;
do b=1 to 7;
input x@@;
output;
end;
end;
end;
list;
cards;
0.31 0.46 0.29 0.49 0.72 0.45 0.19
0.18 0.39 0.18 0.51 0.49 0.42 0.20
0.12 0.40 0.12 0.62 0.55 0.44 0.18
0.13 0.34 0.13 0.53 0.37 0.42 0.17
0.29 0.65 0.87 0.74 1.09 1.04 0.81
0.27 0.84 0.39 0.78 0.73 0.63 1.01
0.29 0.45 0.57 1.45 0.81 1.18 1.18
0.28 0.63 0.64 1.41 0.77 1.45 0.94
;
proc anova;
class a b;
model x=a b a*b;
means a b a*b;
run;
经过数据分析,发现存在交互效应,那么采用contrast语句分析一个因素的各个水平在另外一个因素的某一水平下的两两比较;
程序如下:
data h1;
do a=1 to 2;
do r=1 to 4;
do b=1 to 7;
input x@@;
output;
end;
end;
end;
list;
cards;
0.31 0.46 0.29 0.49 0.72 0.45 0.19
0.18 0.39 0.18 0.51 0.49 0.42 0.20
0.12 0.40 0.12 0.62 0.55 0.44 0.18
0.13 0.34 0.13 0.53 0.37 0.42 0.17
0.29 0.65 0.87 0.74 1.09 1.04 0.81
0.27 0.84 0.39 0.78 0.73 0.63 1.01
0.29 0.45 0.57 1.45 0.81 1.18 1.18
0.28 0.63 0.64 1.41 0.77 1.45 0.94
;
proc glm;
class a b;
model x=a b a*b;
contrast'(a1- a2)/b1'
a 1 -1 b*a 1 0 0 0 0 0 0 -1 0 0 0 0 0 0;
contrast'(a1 vs a2)/b2'
a 1 -1 b*a 0 1 0 0 0 0 0 0 -1 0 0 0 0 0;
contrast'(a1 vs a2)/b3'
a 1 -1 b*a 0 0 1 0 0 0 0 0 0 -1 0 0 0 0;
contrast'(a1 vs a2)/b4'
a 1 -1 b*a 0 0 0 1 0 0 0 0 0 0 -1 0 0 0;
contrast'(a1 vs a2)/b5'
a 1 -1 b*a 0 0 0 0 1 0 0 0 0 0 0 -1 0 0;
contrast'(a1 vs a2)/b6'
a 1 -1 b*a 0 0 0 0 0 1 0 0 0 0 0 0 -1 0;
contrast'(a1 vs a2)/b7'
a 1 -1 b*a 0 0 0 0 0 0 1 0 0 0 0 0 0 -1;
contrast'(b1-b7)/a1'
b 1 -1 0 0 0 0 0 a*b 1 -1 0 0 0 0 0 0 0 0 0 0 0 0,
b 1 0 -1 0 0 0 0 a*b 1 0 -1 0 0 0 0 0 0 0 0 0 0 0,
b 1 0 0 -1 0 0 0 a*b 1 0 0 -1 0 0 0 0 0 0 0 0 0 0,
b 1 0 0 0 -1 0 0 a*b 1 0 0 0 -1 0 0 0 0 0 0 0 0 0,
b 1 0 0 0 0 -1 0 a*b 1 0 0 0 0 -1 0 0 0 0 0 0 0 0,
b 1 0 0 0 0 0 -1 a*b 1 0 0 0 0 0 -1 0 0 0 0 0 0 0;
contrast'(b1-b7)/a2'
b 1 -1 0 0 0 0 0 a*b 0 0 0 0 0 0 0 1 -1 0 0 0 0 0,
b 1 0 -1 0 0 0 0 a*b 0 0 0 0 0 0 0 1 0 -1 0 0 0 0,
b 1 0 0 -1 0 0 0 a*b 0 0 0 0 0 0 0 1 0 0 -1 0 0 0,
b 1 0 0 0 -1 0 0 a*b 0 0 0 0 0 0 0 1 0 0 0 -1 0 0,
b 1 0 0 0 0 -1 0 a*b 0 0 0 0 0 0 0 1 0 0 0 0 -1 0,
b 1 0 0 0 0 0 -1 a*b 0 0 0 0 0 0 0 1 0 0 0 0 0 -1;
contrast'(b1-b2)/a1'
b 1 -1 0 0 0 0 0 a*b 1 -1 0 0 0 0 0;
contrast'(b1-b3)/a1'
b 1 0 -1 0 0 0 0 a*b 1 0 -1 0 0 0 0;
contrast'(b1-b4)/a1'
b 1 0 0 -1 0 0 0 a*b 1 0 0 -1 0 0 0;
contrast'(b1-b5)/a1'
b 1 0 0 0 -1 0 0 a*b 1 0 0 0 -1 0 0;
contrast'(b1-b6)/a1'
b 1 0 0 0 0 -1 0 a*b 1 0 0 0 0 -1 0;
contrast'(b1-b7)/a1'
b 1 0 0 0 0 0 -1 a*b 1 0 0 0 0 0 -1;
contrast'(b2-b3)/a1'
b 0 1 -1 0 0 0 0 a*b 0 1 -1 0 0 0 0;
contrast'(b2-b4)/a1'
b 0 1 0 -1 0 0 0 a*b 0 1 0 -1 0 0 0;
contrast'(b2-b5)/a1'
b 0 1 0 0 -1 0 0 a*b 0 1 0 0 -1 0 0;
contrast'(b2-b6)/a1'
b 0 1 0 0 0 -1 0 a*b 0 1 0 0 0 -1 0;
contrast'(b2-b7)/a1'
b 0 1 0 0 0 0 -1 a*b 0 1 0 0 0 0 -1;
contrast'(b3-b4)/a1'
b 0 0 1 -1 0 0 0 a*b 0 0 1 -1 0 0 0;
contrast'(b3-b5)/a1'
b 0 0 1 0 -1 0 0 a*b 0 0 1 0 -1 0 0;
contrast'(b3-b6)/a1'
b 0 0 1 0 0 -1 0 a*b 0 0 1 0 0 -1 0;
contrast'(b3-b7)/a1'
b 0 0 1 0 0 0 -1 a*b 0 0 1 0 0 0 -1;
contrast'(b4-b5)/a1'
b 0 0 0 1 -1 0 0 a*b 0 0 0 1 -1 0 0;
contrast'(b4-b6)/a1'
b 0 0 0 1 0 -1 0 a*b 0 0 0 1 0 -1 0;
contrast'(b4-b7)/a1'
b 0 0 0 1 0 0 -1 a*b 0 0 0 1 0 0 -1;
contrast'(b5-b6)/a1'
b 0 0 0 0 1 -1 0 a*b 0 0 0 0 1 -1 0;
contrast'(b5-b7)/a1'
b 0 0 0 0 1 0 -1 a*b 0 0 0 0 1 0 -1;
contrast'(b6-b7)/a1'
b 0 0 0 0 0 1 -1 a*b 0 0 0 0 0 1 -1;
contrast'(b1-b2)/a2'
b 1 -1 0 0 0 0 0 a*b 0 0 0 0 0 0 0 1 -1 0 0 0 0 0;
contrast'(b1-b3)/a2'
b 1 0 -1 0 0 0 0 a*b 0 0 0 0 0 0 0 1 0 -1 0 0 0 0;
contrast'(b1-b4)/a2'
b 1 0 0 -1 0 0 0 a*b 0 0 0 0 0 0 0 1 0 0 -1 0 0 0;
contrast'(b1-b5)/a2'
b 1 0 0 0 -1 0 0 a*b 0 0 0 0 0 0 0 1 0 0 0 -1 0 0;
contrast'(b1-b6)/a2'
b 1 0 0 0 0 -1 0 a*b 0 0 0 0 0 0 0 1 0 0 0 0 -1 0;
contrast'(b1-b7)/a2'
b 1 0 0 0 0 0 -1 a*b 0 0 0 0 0 0 0 1 0 0 0 0 0 -1;
contrast'(b2-b3)/a2'
b 0 1 -1 0 0 0 0 a*b 0 0 0 0 0 0 0 0 1 -1 0 0 0 0;
contrast'(b2-b4)/a2'
b 0 1 0 -1 0 0 0 a*b 0 0 0 0 0 0 0 0 1 0 -1 0 0 0;
contrast'(b2-b5)/a2'
b 0 1 0 0 -1 0 0 a*b 0 0 0 0 0 0 0 0 1 0 0 -1 0 0;
contrast'(b2-b6)/a2'
b 0 1 0 0 0 -1 0 a*b 0 0 0 0 0 0 0 0 1 0 0 0 -1 0;
contrast'(b2-b7)/a2'
b 0 1 0 0 0 0 -1 a*b 0 0 0 0 0 0 0 0 1 0 0 0 0 -1;
contrast'(b3-b4)/a2'
b 0 0 1 -1 0 0 0 a*b 0 0 0 0 0 0 0 0 0 1 -1 0 0 0;
contrast'(b3-b5)/a2'
b 0 0 1 0 -1 0 0 a*b 0 0 0 0 0 0 0 0 0 1 0 -1 0 0;
contrast'(b3-b6)/a2'
b 0 0 1 0 0 -1 0 a*b 0 0 0 0 0 0 0 0 0 1 0 0 -1 0;
contrast'(b3-b7)/a2'
b 0 0 1 0 0 0 -1 a*b 0 0 0 0 0 0 0 0 0 1 0 0 0 -1;
contrast'(b4-b5)/a2'
b 0 0 0 1 -1 0 0 a*b 0 0 0 0 0 0 0 0 0 0 1 -1 0 0;
contrast'(b4-b6)/a2'
b 0 0 0 1 0 -1 0 a*b 0 0 0 0 0 0 0 0 0 0 1 0 -1 0;
contrast'(b4-b7)/a2'
b 0 0 0 1 0 0 -1 a*b 0 0 0 0 0 0 0 0 0 0 1 0 0 -1;
contrast'(b5-b6)/a2'
b 0 0 0 0 1 -1 0 a*b 0 0 0 0 0 0 0 0 0 0 0 1 -1 0;
contrast'(b5-b7)/a2'
b 0 0 0 0 1 0 -1 a*b 0 0 0 0 0 0 0 0 0 0 0 1 0 -1;
contrast'(b6-b7)/a2'
b 0 0 0 0 0 1 -1 a*b 0 0 0 0 0 0 0 0 0 0 0 0 1 -1;
run;
注意:若a和b之间没有交互作用的话,那么可以分别比较a和b因素下的各个水平之间的差异,程序如下:
data h1;
do a=1 to 2;
do r=1 to 4;
do b=1 to 7;
input x@@;
output;
end;
end;
end;
list;
cards;
0.31 0.46 0.29 0.49 0.72 0.45 0.19
0.18 0.39 0.18 0.51 0.49 0.42 0.20
0.12 0.40 0.12 0.62 0.55 0.44 0.18
0.13 0.34 0.13 0.53 0.37 0.42 0.17
0.29 0.65 0.87 0.74 1.09 1.04 0.81
0.27 0.84 0.39 0.78 0.73 0.63 1.01
0.29 0.45 0.57 1.45 0.81 1.18 1.18
0.28 0.63 0.64 1.41 0.77 1.45 0.94
;
proc glm;
class a b;
model x=a b a*b;
lsmeans a b a*b;
contrast'(a1-a2)'
a 1 -1;
contrast'(b1-b2)'
b 1 -1 0 0 0 0 0;
contrast'(b1-b3)'
b 1 0 -1 0 0 0 0;
contrast'(b1-b4)'
b 1 0 0 -1 0 0 0;
contrast'(b1-b5)'
b 1 0 0 0 -1 0 0;
contrast'(b1-b6)'
b 1 0 0 0 0 -1 0;
contrast'(b1-b7)'
b 1 0 0 0 0 0 -1;
contrast'(b2-b3)'
b 0 1 -1 0 0 0 0;
contrast'(b2-b4)'
b 0 1 0 -1 0 0 0;
contrast'(b2-b5)'
b 0 1 0 0 -1 0 0;
contrast'(b2-b6)'
b 0 1 0 0 0 -1 0;
contrast'(b2-b7)'
b 0 1 0 0 0 0 -1;
contrast'(b3-b4)'
b 0 0 1 -1 0 0 0;
contrast'(b3-b5)'
b 0 0 1 0 -1 0 0;
contrast'(b3-b6)'
b 0 0 1 0 0 -1 0;
contrast'(b3-b7)'
b 0 0 1 0 0 0 -1;
contrast'(b4-b5)'
b 0 0 0 1 -1 0 0;
contrast'(b4-b6)'
b 0 0 0 1 0 -1 0;
contrast'(b4-b7)'
b 0 0 0 1 0 0 -1;
contrast'(b5-b6)'
b 0 0 0 0 1 -1 0;
contrast'(b5-b7)'
b 0 0 0 0 1 0 -1;
contrast'(b6-b7)'
b 0 0 0 0 0 1 -1;
run;
但是显然a和b是有交互作用的,这里写的这种情况是没有交互作用的。
程序看起来很吓人,其实也就是个体力活。
|