R包lavaan的結構方程建模——路徑分析

R包lavaan的路徑分析
前文已經簡介了使用lavaan包執行驗證性因子分析CFA)的過程,CFA可視為結構方程模型(SEM)的一種建模方法,CFASEM中也稱為測量模型。
本篇繼續展示lavaan包的另一種SEM建模方法,路徑分析(Path Analysis)。
關於SEM的基本概念描述,可參考前文
資料集
使用R自帶的mtcars資料集作演示SEM的路徑分析過程。
首先可以使用相關圖探索資料中變數之間的關係。
#mtcars 中的變數間相關性

library(GGally)
ggcorr(mtcars[-c(5,7,9)], nbreaks = NULL, label = TRUE, low = 'red3', high = 'green3',

label_round = 2, name = 'Correlation Scale', label_alpha = TRUE, hjust = 0.75) +

ggtitle(label = 'Correlation Plot') +

theme(plot.titl = element_text(hjust = 0.6))

由於SEM是模型驗證的方法,因此需要考慮一個初始模型結構。
對於該示例資料集,根據變數間的相關性關係,假定了如下的變數間因果關係的模型(單向路徑結構,前者決定後者,反方向作用無效)。

該假定的模型中,所涉及的變數均為已知的觀測變數。如果使用SEM驗證該模型,即可使用路徑分析來實現。
注:實際情況中,SEM中變數間的因果關係,取決於研究設計,或者已知的自然或社會現象。本文作為示例演示,還請忽略本示例模型是否是有實際意義的;其次,忽略資料集是否滿足多元正態性。
lavaan的路徑分析
將上述假定的變數間因果關係結構輸入,進行SEM建模,驗證變數間的因果關係是否是有效的。
lavaan中,SEM透過sem()函式實現。
##結構方程模型(SEM)

#假定變數結構

model <- '

# Blue Relationship

mpg ~ hp + cyl + disp + carb + am + wt
# Green Relationship

hp ~ cyl + disp + carb

'
#執行 SEM,詳情 ?sem

#這裡 model 中不存在潛在變數,僅為觀測變數,則該模型即為一種常規的路徑分析

library(lavaan)
path <- sem(model = model, data = mtcars, se = 'bootstrap', bootstrap = 100)

summary(path, standardized = TRUE, fit.measures = TRUE, rsquare = TRUE)

概要中主要包含了擬合度指標和統計檢驗結果,可據此對模型快速評估。
模型擬合檢驗統計量(即卡方統計量,Chi-square)的p值若顯著,則表明模型有待提升。
CFITFI是擬合度的指標,大於0.9的值是“良好”模型擬合的標準,越接近1越好。
AICBIC是比較模型的標準,值越低表明模型擬合度越好。通常在存在多個備選模型的情況下使用,既要考慮較小的AICBIC值,又要儘可能選擇簡約模型。
RMSEAp值若顯著,則表明模型有待提升。
由於路徑分析是迴歸模型的擴充套件,變數間關係透過迴歸確定,Regressions統計了模型中各變數的迴歸權值(引數估計值,絕對值越大表明變數間關係越大),p值反映了變數重要程度的顯著性。
R平方是反映係數擬合度的描述性統計量。

因為本示例的模型並非一個真實的試驗研究,變數間的因果關係也只是根據相關性隨意地假定的,所以上述SEM顯示模型“非常糟糕”:模型擬合優度比較差,且很多變數間的關係不顯著,這在意料之中。
而且,這也從側面反映了一個常見問題:相關性並不意味著因果關係。
真實試驗研究資料的結構建模中,如果目的明確,變數間的歸屬也合理,原則上模型不會很差。
此外,模型的擬合度評估還可透過fitmeasures()函式給出。如以下透過卡方統計量、RMSEACFIAIC值等指標對模型擬合度評估。
#模型擬合度,詳情 ?fitmeasures

fitmeasures(path, c('chisq', 'rmsea', 'cfi', 'aic'))

儘管該模型不合適,但一些函式還得展示它們的使用,請允許我繼續。
路徑圖展示圖,我們可根據引數估計值的大小,並結合路徑的顯著性(檢視summary(path)),評估關鍵的變數結構。
#展示變數間因果關係的路徑圖,詳情 ?semPaths

#例如,連線中的數值用於反映標準化的迴歸係數(標準化的引數估計值)

library(semPlot)
semPaths(path, what = 'std', layout = 'tree', residuals = FALSE, edge.label.cex = 1)

lavaan驗證性因子分析中的方法,如果期望調整模型中的路徑結構,也可使用MI值評估。
#透過 MI 值評估是否需要考慮一些遺漏的變數間關係

mf <- modificationindices(path)

mf <- mf[order(mf$mi, decreasing = TRUE), ]

head(mf)

lhsoprhs指示了建議新增的變數路徑。MI值越高,代表這種路徑的新增更有利於改善現有模型。(新增時,將這種關係在SEM計算的第一步,加入至假定變數結構公式中)
不過這種“建議”只是基於某種數學上的統計指標給定,不可盲目接受,還需仔細考慮它們的存在意義是否是合適的,實際情況中一定要謹慎對待。就拿本文中的示例來說,很多變數間關係都是“強行定義”的,故結果中這些關係大都是直接拒絕的(p>0.05),即便模型僥倖通過了,它們的實際意義可能也很難解釋。
參考資料
http://naes.unr.edu/shoemaker/teaching/NRES-746/SEM.html
連結

相關文章