鐘志強 張毅寧
(鞍山師范學院物理科學與技術(shù)學院,遼寧 鞍山 114007)
多元回歸是一種簡單的因果關(guān)系分析,其偏回歸系數(shù)(partial regression coefficient)表示在控制其他自變量的條件下,每個自變量單獨對因變量的作用。其中各個自變量處于相同地位,對因變量的作用是并列。如果在兩個變量之間加上中介變量,一個變量既是自變量又是因變量時,存在多個環(huán)節(jié),這就構(gòu)成路徑。多元回歸就不能兼顧這種因果關(guān)系。
路(通)徑分析(Path Analysis,Sewall Wright,1921)是相關(guān)系數(shù)分解的一種統(tǒng)計方法,不僅揭示自變量xi(i=1,2,…m)與因變量y的直接影響力和間接影響力,而且可以在xi,y間的復雜關(guān)系中,從某個自變量與其他自變量的“協(xié)調(diào)”關(guān)系中得到對y的最佳影響的路徑信息。目標是探索是事物內(nèi)在因果關(guān)系規(guī)律,將因變量與自變量的相互影響的相關(guān)系數(shù)分解為直接效果的路徑系數(shù)和間接效果的路徑系數(shù)。這使對模型中的變量的因果關(guān)系分析研究更為具體和深入。
路徑分析早期在經(jīng)濟學領(lǐng)域,被稱為聯(lián)立方程模型(simultaneous equation modeling)[1],多用來分析價格等經(jīng)濟相關(guān)統(tǒng)計數(shù)據(jù)之間的關(guān)系[2,3]。國內(nèi)相關(guān)文獻中,路徑分析研究主要體現(xiàn)在農(nóng)林科學研究中[4,5],其實現(xiàn)技術(shù)有Excel,SPSS,SAS[6-10]。當下,受結(jié)構(gòu)方程模型影響,學者們開始利用R語言(如利用“l(fā)avaan”和“semPlot”包)與Mplus工具通過潛變量和中介關(guān)系進行路徑分析研究[11]。但當其研究顯變量和無獨立中介模型時,卻要退回利用Excel計算,或利用引入截距項的回歸算法和檢驗方式進行路徑分析。如此造成了研究上的不方便與不科學。本文利用Python語言,實現(xiàn)借助矩陣算法計算決定系數(shù)和完成F檢驗,以期進一步說明路徑系數(shù)的意義。
y=b0+b1x1+…+bn xn+e
其中bi是自變量xi對因變量y的偏回歸系數(shù)。由于各自變量本身變異程度和量綱的不同,使得偏回歸系數(shù)絕對值并不能準確反映相應(yīng)自變量對依變量相對貢獻的大小。為此需將各偏回歸系數(shù)標準化,即用相應(yīng)自變量的標準差與因變量的標準差之比去乘以各偏回歸系數(shù),因而路徑系數(shù)為標準的偏回歸系數(shù)pyxi,即為自變量對因變量y的直接通徑系數(shù)。其推導如下:
由于
當i=1時,
其度量各自變量對因變量的直接效應(yīng),其意義上是其它自變量保持不變時,該自變數(shù)變動一個單位時,因變量y變動的標準單位數(shù),它不受度量單位和自變量變異程度的影響。
如有三個自變量時:
其中r xiy,rxixj都可以通過已知數(shù)據(jù)計算得出。令
三個自變量的全體路徑系數(shù)為P矩陣表示方式為:
這里r x1x2px2y是自變量x1通過自變量x2對y的間接效應(yīng)。間接通徑系數(shù)即自變量xi通過其它相關(guān)變量對因變量y的影響,系直接路徑系數(shù)乘以二者的相關(guān)系數(shù)rij pyj。其總間接通徑效果為:
用于分析的數(shù)據(jù)“pathdata.csv”為多個參考文獻利用(小麥豐產(chǎn)3號各性狀與單株籽粒產(chǎn)量或腰果種子發(fā)芽普遍期天數(shù)與氣溫)數(shù)據(jù)[12-14],在網(wǎng)絡(luò)中亦可得到,見附錄1。其有一個因變量(y)四個自變量(x1-4),四個自變量間互相關(guān),沒有獨立中介變量。計算路徑回歸Python程序如下(其中變量名與文中公式標識一致,下同):
附錄1 路徑分析計算數(shù)據(jù)
import numpy asnp
import pandas as pd
from scipy.stats import f
df=pd.read_csv("pathdata.csv")#讀取文檔數(shù)據(jù)
y=df.iloc[:,-1]#得到y(tǒng)值
x=df.iloc[:,:-1]#得到x值
m,n=x.shape#得到x的行列數(shù),為后期F檢驗做準備
r=df[["x1","x2","x3","x4"]].corr()#得到x1-4的相關(guān)系數(shù)
s=df.corr()["y"][:-1]#得到y(tǒng)對x1-4的相關(guān)系數(shù)
rni=np.linalg.inv(r)#得到相關(guān)系數(shù)R的逆矩陣
p=rni.dot(s)#得到直接相關(guān)系數(shù)
print(p)
a=np.diag(p)
P=r.dot(a)#得到直接、間接系數(shù)矩陣
P["sum"]=P.sum(axis=1)#得到直接、間接與總路徑系數(shù)矩陣(見表1)
表1 直接、間接與總路徑系數(shù)
print("P",P)
del P["sum"]#刪除總路徑系數(shù),為后期計算決定系數(shù)做準備
由于路徑系數(shù)就是標準偏回歸系數(shù),因而可以利用多元回歸分析中偏回歸系數(shù)顯著性檢驗的方法對路徑系數(shù)進行顯著性檢驗。檢驗方法可用t檢驗,也可用F檢驗。F值計算如下[15]:
m為樣本容量,n為自變數(shù)個數(shù)。C是自變量相關(guān)系數(shù)的逆矩陣的主對角元素的倒數(shù)。
c=1/np.diag(rni)
fx=np.power(a,2).dot(c)/((1-r2)/(m-n-1))#計算數(shù)據(jù)F值
for iin fx:
print(i,f.sf(i,m-1,m*(n-1)))#利用第三方scipy.stats包做F檢驗(結(jié)果見表2)
表2 路徑系數(shù)F檢驗表
從表2可以得知,除X4路徑系數(shù)不顯著為0外,不拒絕零假設(shè)(H0),其它系數(shù)都達到顯著水平。認為路徑系數(shù)有意義。
決定系數(shù)(Coefficient of determination)R2表示y值的變異在其總變異中所占的比率。
又因為
所以,決定系數(shù)是相關(guān)系數(shù)的平方。
在路徑分析中,根據(jù)因變量y的方差:
進一步推導:
表示自變量xi,對因變量y的相對決定程度,即直接決定系數(shù);而2rxixj Pxiy Pxjy表示自變量xixj共同對因變量y的相對決定程度,即間接決定系數(shù)。總決定系數(shù)是直接決定系數(shù)與間接決定系數(shù)的和。為不可控因素e對因變量y的相對決定程度,稱為剩余決定系數(shù)。
總決定系數(shù)R2=[1 1 1]*D*[1 1 1]T。則剩余決定系數(shù)pye2=1-R2。
def toD(d):#封裝計算成D矩陣函數(shù)
路徑分析的使用條件:各變量均為等距以上級別變量,各變量之間為線性關(guān)系,各因變量的作用可疊加。因果關(guān)系必須是單向,不得包括反饋環(huán)節(jié)[17]。根據(jù)路徑系數(shù)的計算結(jié)果,可以進行以下分析:按絕對值大小,說明每一路徑對因變量的作用的相對重要性[18]。如果路徑系數(shù)接近相關(guān)系數(shù),則反映了變量之間的真實關(guān)系[19]。如果相關(guān)系數(shù)大于0,但路徑系數(shù)小于0,說明間接效應(yīng)是相關(guān)的主要原因,直接作用是無效的,二者一定通過中介發(fā)生作用[20]。一般而言,相關(guān)分析僅蘊含著因果關(guān)系,但由于大多路徑分析,有時間的先后關(guān)系,路徑分析為此進一步驗證了因果關(guān)系[21]。