方差分析的主要功能就是驗證兩組樣本,或者兩組以上的樣本均值是否有顯著性差異(是否一致)。
這里有兩個大點需要注意:①方差分析的原假設是:樣本不存在顯著性差異(即,均值完全相等);②兩樣本數據無交互作用(即,樣本數據獨立)這一點在雙因素方差分析中判斷兩因素是否獨立時用。
原理
方差分析的原理就一個方程:SST=SSM+SSE (全部平方和=模型平方和+誤差平方和)
方差分析看的最終結果看的統計量是:F統計量、R2。
F=[SSM/(S-1)]/[SSE/(N-S)] S水平個數,S-1模型只有度,N-S誤差自由度。
R2=SSM/SST
方差分析步驟:
①建立原假設和備澤假設,原假設為:不同水平對應均值相等;
②給定那個顯著水平α,默認0.05;
③計算F統計量的F0值(F0=誤差自由度/模型自由度)。
方差假設條件為殘差服從正態分布,其條件等價於:
①每組觀測服從正態分布(觀測數目足夠多就認為正態分布);
②方差齊性;
③數據中的觀測間獨立。
可用於方差分析的三個過程步:TTEST、ANOVA、GLM分別適用於一個因素兩個水平(TTEST\ANOVA\GLM)、一個因素多個水平(ANOVA\GLM)、多個因素(ANOVA\GLM)。不同的是ANOVA適用於處理均衡數據(每個分類觀測數量相等)。
DATA RELIEFTIME; INPUT MEDICINE $ HOURS @@; DATALINES; A 7 A 5 A 3 A 1 B 6 B 5 B 5 B 3 C 7 C 9 C 8 C 9 D 4 D 4 D 3 D 3 ; RUN; PROC ANOVA DATA=RELIEFTIME; CLASS MEDICINE; MODEL HOURS=MEDICINE; RUN;
注:進行此分析有一個大前提,是在假設方差分析的三個條件都滿足的前提下!
此處MEDICINE是影響的因素,因素中包含多個水平,HOURS是相應變量。
結果如下圖:
先統計有多少個水平,多少個觀測;
由上圖第一張表得知:模型自由度為3,誤差自由度為12,擬合的合計自由度為15。F0=4,即當模型平方和=誤差平方和時F=4,而在第一張表中F=7.75說明SSM/SSE>1所以在P值允許的情況下該因素的不同水平之間是存在顯著差異的。而進一步看P值,看出F值有效,即得出結論,該葯物對緩解時間有顯著性影響。
在進一步看盒形圖,也能得出C水平葯物與其他的有明顯差異。
以下來介紹GLM過程步
該過程步可以對正態性條件和方差齊性條件進行驗證,實則方便許多。
PROC GLM DATA=RELIEFTIME PLOTS(ONLY)=DIAGNOSTICS; CLASS MEDICINE; MODEL HOURS=MEDICINE; MEANS MEDICINE/HOVTEST; RUN;
先看該數據是否滿足條件進行方差分析,
其殘差是已經滿足正態分布的,看Q-Q圖也可以看出大致分布在直線兩側,所以數據是滿足正態性條件的;
上圖是齊方差性檢驗,看P>0.05,所以滿足齊方差性的假設,即滿足的方差齊性條件。
同時該題假設各組觀測數據是獨立的。
接下來看方差分析結果:
從第二張表F=7.75說明在模型平方和占比顯著,說明數據值有效。進而因為P<0.05所以拒絕原假設,不同水平之間存在顯著差異。
同時看第三張表R方>0.5說明數據模型平方和占比顯著。
在看最后兩張表,有兩種平方和的計算方法,因為是單因素分析,所以不同方法求得的值相同,一般情況下我們默認看Ⅲ型平方和數據,和之前的數據是一樣的。
LSMEANS語句
GLM過程步中有LSMEANS語句(LSMEANS 因素<選項>)進行水平的差異分析,選項可用來控制誤差,若要控制兩兩比較的誤差則用 LSMEANS/PDIFF=ALL ADJUST=T,
若重點控制正果實驗過程中的誤差則用 LSMEANS/PDIFF=ALL ADJUST=TUKEY(此選項僅考慮兩兩比較的情形) 或者 LSMEANS/PDIFF=CONTROL('控制組') ADJUST=DUNNETT。
PROC GLM DATA=RELIEFTIME PLOTS(ONLY)=DIAGNOSTICS; CLASS MEDICINE; MODEL HOURS=MEDICINE; LSMEANS MEDICINE/PDIFF=ALL; RUN;
即如果如下:
第一張表是表明不同水平於1234的對應關系,
第二張表可以看出M12 、M14、M24、M43、M24的P>0.05所以我們接受原假設量水平見無顯著差異,但是其余的就有顯著差異了。
雙因素方差檢驗
雙因素甚至多因素方差檢驗多看了一個因素之間的交互性除了各個因素分別看差異之外,還有因素1*因素2合起來的水平之間的差異性,如下代碼:
PROC GLM DATA=SASHELP.CLASS; CLASS AGE SEX; MODEL WEIGHT= AGE SEX AGE*SEX; RUN;
與單因素方差分析的結果相比不一樣的結果如下:
注:前面提到的原假設是因素間各自獨立,沒有交互作用。所以看交互因素AGE*SEX的P>0.05所以原假設成立,兩因素沒有交互作用。所以兩因素各自分開看即可。
同時從表中可以看到只有AGE一個顯著因素,所以后面加上語句LSMEANS AGE/PDIFF=ALL ADJUST=TUKEY
PROC GLM DATA=SASHELP.CLASS; CLASS AGE SEX; MODEL WEIGHT= AGE SEX AGE*SEX; LSMEANS AGE/PDIFF=ALL ADJUST=TUKEY; RUN;
多出結果;
該圖為年齡對體重的影響的置信區間圖,對角線為組間差異的參考先(0線),與改線相交說明兩水平均值沒有顯著差異,
所以有意義的線只有一條藍線(11歲和15歲差異性比較顯著)。
接下來看一個因素間有交互作用的例子,
PROC GLM DATA=FRUIT; CLASS HUMIDITY TEMPERATURE; MODEL OUTPUT_LBS=HUMIDITY TEMPERATURE HUMIDITY*TEMPERATURE; LSMEANS HUMIDITY*TEMPERATURE/SLICE=HUMIDITY; RUN;
之前運行過一遍不加LSMEANS HUMIDITY*TEMPERATURE/SLICE=HUMIDITY;語句的,結果看到:
HUMIDITY*TEMPERATURE無交互作用的假設被拒絕了,說明有交互作用,所以加上LSMEANS HUMIDITY*TEMPERATURE/SLICE=TEMPERATURE;
看交互因素的不同水平間的影響,並且因素TEMPERATURE是顯著因素,HUMIDITY是不顯著因素,(這里兩因素交互對植物生長影響是顯著的,可是單單溫度對植物生長沒有顯著影響,所以這里可以看當濕度為什么情況下,溫度才會起顯著作用。)所以,SLICE選項功能是從那個溫度角度出發看不同溫度下不同濕度對生長情況的影響你。結果如下圖:
結果就是溫度為B2、B3情況下,濕度對植物生長具有顯著影響。(注:方差分析原假設為均值相等,即無差別)