多因素方差分析中预测因素的筛多_用回归来理解方差分析(二):两因素方差分析...
1 兩因素方差分析的形式
多因素方差分析針對的是多因素完全隨機設計。包含兩個及以上的自變量,為便于講解,本文以兩因素方差分析為例。
在一個兩因素完全隨機設計中,自變量
包含,共個水平。自變量包含,共個水平。總共形成個處理。各處理之下有個觀測值。特別的,當各處理的觀測值都為時,稱為等組設計。等組設計的具體形式如下:
若各組觀測值
數量不同,稱為非等組設計,形式如下:其中
各不相同兩因素方差分析的邏輯是對變異進行比較。通過對平方和(Sum of Squares)和自由度(Degree of Freedom)的分解,利用公式:
計算出各主效應方差,交互作用方差和組內方差(即誤差方差)。各主效應和交互作用的方差與誤差方差的差異(比值)體現了該效應的顯著性。而且在零假設為真的情況下,該比值服從F分布,進而分別完成各效應的假設檢驗。
具體的分解如下圖:
常規的流程大家都非常熟悉,不再贅述。接下來換個角度,從多元線性回歸來看一看兩因素方差分析。
2 兩因素方差分析的線性模型
模型的基本形式
兩因素方差分析的線性模型可以表示為:
其中
指A因素第個水平的效應,指因素第個水平的效應,指A因素第個水平與B因素第個水平的交互作用效應,表示處理中,第個觀測值的隨機誤差。該式說明:某個觀測值等于其所在處理的各主效應和交互作用效果疊加,并附加上一個隨機誤差組成。通常,我們讓:
其中
表示各平均效應。上述式子意味著:以各因素的平均效應為基準,用相對的效應值來表示各水平的效應。可見,就是是相對效應量,是各效應偏離平均效應的程度,即離均差。易知:2.2.4和2.2.5式需要稍微推導一下,有興趣的同學可以自己動手試試,沒興趣忽略就好
據此,可將2.1式寫為:
其中:
- 是觀測值
- 是總平均,相當于是截距
- 是隨機誤差,且獨立同分布
模型表達的意思是:每一個觀測值
實際上都是在某個總平均上附加了一個因素水平的效果,一個因素水平的效果,因素和因素在各自水平上的交互作用,并且還受到了隨機誤差的影響。例如,如果某被試接受的是自變量
的處理,那么他的觀測值就是是指該處理中觀測值的編號,引入虛擬變量
為了便于理解,我們可以引入虛擬變量
,令:意味著:在
處理中,,其余虛擬變量均為0。例如:對第
處理中,,其余均為0可以發現,當把虛擬變量帶入2.3式之后得到:
2.4式可看成是一個包含
個自變量的多元線性回歸模型。此時
的取值為:此時
的取值為:是不是眼花繚亂?哈哈。
如果從矩陣的角度來看,此時的
形成的矩陣就是一個的單位矩陣,只有對角線元素為1。而且注意到:的取值都可以由組合得到。即的每一列都可以是列向量的線性組合。也就是自變量之間存在多重共線性,此時有效的自變量數量僅僅只有的個。這就出問題了,因為我們需要估計的參數一共有個別擔心,我們還有2.2.2-2.2.5這幾個式子,利用這幾個式子將上述取值改為:(又要眼花繚亂了)
此時利用2.2.1和2.2.2式將
和中各去掉了一個自變量,表中去掉的是各自的最后一項,因為,所以當時,將都取為就可以了。實際上去掉任何一項都可以,不影響最終結果。同理,可將交互作用的虛擬變量改為:
注意到對角線的子矩陣,以及最后一行的各矩陣。特別是最后一行
時的取值,用心的小伙伴簡單推導就可以得到,這里就不再啰嗦了。3 對單因素方差分析的線性模型進行多元回歸
提示:該部分直接用公式推導實在太麻煩了,所以用一個數據例子來進行說明。
以一個3×2的兩因素完全隨機設計為例,其中A因素個水平,B因素兩個水平,每個處理之下一共4個觀測值。
將觀測值
和虛擬變量都列出來為。為了偷懶,除了第一個處理的四個觀測值都列出來之外,其余的每個處理只列出一個。接下來,利用python的statemodels進行計算:
from statsmodels.formula.api import ols #擬合線性模型的包 from statsmodels.stats.anova import anova_lm#進行方差分析的包 import pandas as pd import numpy as np data={'XA1': [1,1,1,1, 1, 1, 1, 1,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1],'XA2': [0,0,0,0, 0, 0, 0, 0,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1],'XB1': [1,1,1,1,-1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1],'XAB11':[1,1,1,1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,-1,-1,-1,-1,1,1,1,1],'XAB21':[0,0,0,0,0,0,0,0,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1],'Y':[5,3,4,2,6,3,5,5,7,6,7,8,8,7,8,5,9,7,5,7,10,12,11,7],'A':[1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3],'B':[1,1,1,1,2,2,2,2,1,1,1,1,2,2,2,2,1,1,1,1,2,2,2,2] }#其中前5行是虛擬變量,Y是觀測值,A,B是分類變量 df=pd.DataFrame(data) model_lin=ols('Y~XA1+XA2+XB1+XAB11+XAB21',data=df).fit()#用虛擬變量進行回歸 model_anova=ols('Y~C(A)*C(B)',data=df).fit()#用分類變量進行方差分析 anova_Result=anova_lm(model_anova)print(anova_Result)df sum_sq mean_sq F PR(>F) C(A) 2.0 79.083333 39.541667 17.905660 0.000052 C(B) 1.0 12.041667 12.041667 5.452830 0.031315 C(A):C(B) 2.0 9.083333 4.541667 2.056604 0.156887 Residual 18.0 39.750000 2.208333 NaN NaN #利用方差分析結果計算決定系數,組間平方和(主效應與交互作用之和)/總平方和 R_square=np.sum(anova_Result.sum_sq[0:3])/np.sum(anova_Result.sum_sq) print(R_square)0.7159869008633524 #打印回歸分析結果 print(model_lin.summary())OLS Regression Results ============================================================================== Dep. Variable: Y R-squared: 0.716 Model: OLS Adj. R-squared: 0.637 Method: Least Squares F-statistic: 9.075 Date: Sat, 11 Apr 2020 Prob (F-statistic): 0.000191 Time: 18:02:59 Log-Likelihood: -40.109 No. Observations: 24 AIC: 92.22 Df Residuals: 18 BIC: 99.29 Df Model: 5 Covariance Type: nonrobust ==============================================================================coef std err t P>|t| [0.025 0.975] ------------------------------------------------------------------------------ Intercept 6.5417 0.303 21.566 0.000 5.904 7.179 XA1 -2.4167 0.429 -5.633 0.000 -3.318 -1.515 XA2 0.4583 0.429 1.068 0.299 -0.443 1.360 XB1 -0.7083 0.303 -2.335 0.031 -1.346 -0.071 XAB11 0.0833 0.429 0.194 0.848 -0.818 0.985 XAB21 0.7083 0.429 1.651 0.116 -0.193 1.610 ============================================================================== Omnibus: 1.556 Durbin-Watson: 2.330 Prob(Omnibus): 0.459 Jarque-Bera (JB): 1.295 Skew: -0.535 Prob(JB): 0.523 Kurtosis: 2.614 Cond. No. 1.73 ==============================================================================Warnings: [1] Standard Errors assume that the covariance matrix of the errors is correctly specified. #利用回歸模型輸出各預測值 model_lin.predict()array([ 3.5 , 3.5 , 3.5 , 3.5 , 4.75, 4.75, 4.75, 4.75, 7. ,7. , 7. , 7. , 7. , 7. , 7. , 7. , 7. , 7. ,7. , 7. , 10. , 10. , 10. , 10. ]) #利用回歸模型輸出參數估計值 model_lin.paramsIntercept 6.541667 XA1 -2.416667 XA2 0.458333 XB1 -0.708333 XAB11 0.083333 XAB21 0.708333 dtype: float64 #輸出原始觀測值的總均值 np.mean(df['Y'])6.541666666666667可見,用常規的方差分析計算出來的結果與回歸分析一致,決定系數
是相同的。此外,回歸模型告訴我們:各處理的預測值就是該處理的組均值;模型的截距(總平均)就是所有觀測值的平均值。實際上,決定系數就是回歸平方和除以總平方和。而回歸平方和等于觀測值與預測值的平方和,對應的就是方差分析組間平方和,不過多因素方差分析中,組間平方和等于所有主效應與交互作用平方和之和。回歸總平方和就是觀測值與總平均的平方和,此處與方差分析的總平方和一致。繞了這么半天,似乎說了好多廢話。有同學可能會嫌棄,認為我把簡單的事情搞復雜了。確實這樣理解很復雜,但是只有這樣理解了,我們才能搞清楚什么是Ⅰ型平方和以及Ⅲ型平方和。這兩種平方和專門針對多因素方差分析,在等組設計中二者沒有區別,但是非等組設計中二者區別就大了,反正我最終是通過回歸才搞清楚。
關于Ⅰ型平方和以及Ⅲ型平方和,我會專門寫一篇文章來介紹。
4 結論
- 多元回歸的結果與方差分析的結果是一致的
- 將多因素方差分析轉換為回歸分析時,要注意虛擬變量的取值,特別是交互作用的虛擬變量。
- 通過回歸來理解方差分析,有助于我們理解Ⅰ型平方和以及Ⅲ型平方和(另開文章介紹)
歡迎非商業轉載,只需注明作者“AhaDad”和來源即可
總結
以上是生活随笔為你收集整理的多因素方差分析中预测因素的筛多_用回归来理解方差分析(二):两因素方差分析...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 哔哩哔哩公司swot分析_「127」一个
- 下一篇: ab plc编程软件_三菱PLC原装和高