方差分析就是多組均值比較,方差分析和T檢驗區別:group > 2組。
方差分析除了用作多組均值比較,在一般線性模型中也會用到。原因是方差分析的實質是變異(方差)的分解。
使用條件:
每個group中的觀測獨立
正態分布
group間方差齊性
For a balanced layout as shown in this example, the SAS Types I, II, III, and IV sums of squares (see Appendix D) are identical
對於平衡試驗設計,I II III IV型平方和是一樣的。詳見sums of squares。
1. 原理
如果F大,組間均方大,組內均方小,證明至少有一個組的分布相對其他組分布較遠,且每個組方差較小,分布都非常集中,因此可以拒絕H0
上述公式是計算總方差,總變異
MSE = SSE / N - K.
上述公式是計算組內誤差,或組內標准差
ni是第i組的觀測數量。
上述公式是計算,MSG是組間標准差,衡量的是組間變異。
2. 單因素
*one-factor; data one; input patno dosegrp $ hama @@; datalines; 101 LO 21 104 LO 18 106 LO 19 110 LO . 112 LO 28 116 LO 22 120 LO 30 121 LO 27 124 LO 28 125 LO 19 130 LO 23 136 LO 22 137 LO 20 141 LO 19 143 LO 26 148 LO 35 152 LO . 103 HI 16 105 HI 21 109 HI 31 111 HI 25 113 HI 23 119 HI 25 123 HI 18 127 HI 20 128 HI 18 131 HI 16 135 HI 24 138 HI 22 140 HI 21 142 HI 16 146 HI 33 150 HI 21 151 HI 17 102 PB 22 107 PB 26 108 PB 29 114 PB 19 115 PB . 117 PB 33 118 PB 37 122 PB 25 126 PB 28 129 PB 26 132 PB . 133 PB 31 134 PB 27 139 PB 30 144 PB 25 145 PB 22 147 PB 36 149 PB 32 ; ods html; proc glm data = one; class dosegrp; model hama = dosegrp; means dosegrp/hovtest = bartlett; run;
單因素方差分析,Model總變異和group變異相同。
Model顯著的意思是,H0: HI LO PB三組均值相同.
dosegrp的原假設是: 每組的效應相同,也就是模型中的 alpha。
在group顯著的情況下,比較均值;means dosegrp/hovtest = bartlett;
estimate "Compare HI - PB" dosegrp 1 0 -1 / ;
根據高亮部分算出HI - PB置信區間,estimate 和 means兩種方式得出結果相同。
lsmeans dosegrp/tdiff diff cl STDERR adjust=bon;
第一部分是最小二乘均值,第三部分是最小二乘均值和置信區間
第二部分是均值差和 對應的T檢驗的P值。
第四部分是均值差的置信區間。
第二部分和第四部分其實都是兩兩比較,由tdiff 和 diff控制。都是靠前的減去靠后的。生存分析中是靠前的比靠后的。
第五部分是stderr產生的,這的P,H0: HI、LO、PB的lsmeans = 0;
3. 兩兩比較
means dosegrp/snk bon dunnett('PB'); lsmeans dosegrp/tdiff diff cl stderr adjust=bon;
3.1 兩兩比較:
LSD: 最小顯著差異法,沒控制總的 水平。隨着比較次數增多,犯第一類錯誤概率增大
SNK:q檢驗
Tukey HSD
3.2 所有可能比較:
例如 A vs B, A vs C, A B vs C.
Bonferroni:每次比較都設定 alpha 水平,alpha/k, K是比較次數
3.3 對照組和其它所有實驗組比較:
Dunnett:和設定組比較
多項式比較:指定比較類別。Contrast ‘label’ class_group values; contrast ‘a’ drug 1 -1 0;
4. 多因素方差比較
TRT就是用TRT組的每組均值 - 總體均值
TYPE就是用TYPE組的每組均值 - 總體均值
TRT - by - TYPE就是交叉相乘的每個小單元格,也就是交互作用
就是每個人的數據 - 總體均值
*tw-factor; data two; input trt $ type $ patno hgbch @@; datalines; ACT C 1 1.7 ACT C 3 -0.2 ACT C 6 1.7 ACT C 7 2.3 ACT C 10 2.7 ACT C 12 0.4 ACT C 13 1.3 ACT C 15 0.6 ACT P 22 2.7 ACT P 24 1.6 ACT P 26 2.5 ACT P 28 0.5 ACT P 29 2.6 ACT P 31 3.7 ACT P 34 2.7 ACT P 36 1.3 ACT R 42 -0.3 ACT R 45 1.9 ACT R 46 1.7 ACT R 47 0.5 ACT R 49 2.1 ACT R 51 -0.4 ACT R 52 0.1 ACT R 54 1.0 PBO C 2 2.3 PBO C 4 1.2 PBO C 5 -0.6 PBO C 8 1.3 PBO C 9 -1.1 PBO C 11 1.6 PBO C 14 -0.2 PBO C 16 1.9 PBO P 21 0.6 PBO P 23 1.7 PBO P 25 0.8 PBO P 27 1.7 PBO P 30 1.4 PBO P 32 0.7 PBO P 33 0.8 PBO P 35 1.5 PBO R 41 1.6 PBO R 43 -2.2 PBO R 44 1.9 PBO R 48 -1.6 PBO R 50 0.8 PBO R 53 -0.9 PBO R 55 1.5 PBO R 56 2.1 ; proc glm data = two; class trt type; model hgbch = trt type trt*type/; *means trt*type/hovtest = levene; lsmeans trt*type/tdiff lines adjust=bon; *lsmeans trt*type/slice=type; run;
slice = type 對TYPE的每個level進行計算。
/ lines adjust=bon
進行兩兩比較,Bon方法,如上圖所示,高亮部分沒有相同字母,所以只有 1 和 6之間由顯著差異。