日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

多因素方差分析中预测因素的筛多_用回归来理解方差分析(二):两因素方差分析...

發布時間:2024/7/23 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 多因素方差分析中预测因素的筛多_用回归来理解方差分析(二):两因素方差分析... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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”和來源即可

總結

以上是生活随笔為你收集整理的多因素方差分析中预测因素的筛多_用回归来理解方差分析(二):两因素方差分析...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。