拓端tecdat|在R語言中實現sem進行結構方程建模和路徑圖視覺化
原文連結:http://tecdat.cn/?p=23312
原文出處:拓端資料部落公眾號
引言
結構方程模型是一個線性模型框架,它對潛變數同時進行迴歸方程建模。 諸如線性迴歸、多元迴歸、路徑分析、確認性因子分析和結構迴歸等模型都可以被認為是SEM的特例。在SEM中可能存在以下關係。
- 觀察到的變數與觀察到的變數之間的關係(γ,如迴歸)。
- 潛變數與觀察變數(λ,如確認性因子分析)。
- 潛變數與潛變數(γ,β,如結構迴歸)。
SEM獨特地包含了測量和結構模型。測量模型將觀測變數與潛變數聯絡起來,結構模型將潛變數與潛變數聯絡起來。目前有多種軟體處理SEM模型,包括Mplus、EQS、SAS PROC CALIS、Stata的sem和最近的R的lavaan。R的好處是它是開源的,可以免費使用,而且相對容易使用。
本文將介紹屬於SEM框架的最常見的模型,包括
- 簡單迴歸
- 多元迴歸
- 多變量回歸
- 路徑分析
- 確認性因素分析
- 結構迴歸
目的是在每個模型中介紹其
- 矩陣表述
- 路徑圖
lavaan語法
- 引數和輸出
在這次訓練結束時,你應該能夠理解這些概念,足以正確識別模型,認識矩陣表述中的每個引數,並解釋每個模型的輸出。
語法簡介
語法一:f3~f1+f2(路徑模型)
結構方程模型的路徑部分可以看作是一個迴歸方程。而在R中,迴歸方程可以表示為y~ax1+bx2+c,“~”的左邊的因變數,右邊是自變數,“+”把多個自變數組合在一起。那麼把y看作是內生潛變數,把x看作是外生潛變數,略去截距,就構成了語法一。
語法二:f1 =~ item1 + item2 + item3(測量模型)
"=~"的左邊是潛變數,右邊是觀測變數,整句理解為潛變數f1由觀測變數item1、item2和item3表現。
語法三:item1 ~~ item1 , item1 ~~ item2
"~~"的兩邊相同,表示該變數的方差,不同的話表示兩者的協方差
語法四:f1 ~ 1
表示截距
基礎知識
載入資料
在這種情況下,我們將模擬資料。
- y ~ .5*f #有外部標準的迴歸強度
- f =~ .8*x1 + .8*x2 + .8*x3 + .8*x4 + .8*x5 #定義因子f,在5個專案上的載荷。
- x1 ~~ (1-.8^2)*x1 #殘差。請注意,通過使用1平方的載荷,我們在每個指標中實現了1.0的總變異性(標準化的)。
- ......
- #產生資料;注意,標準化的lv是預設的
- simData
- #看一下資料
- describe(simData)[,1:4]
指定模型
- y ~ f # "~迴歸"
- f =~ x1+ x2 + x3 + x4 + x5 # "=~被測量的是"
- x1 ~~ x1 # 方差
- x2 ~~ x2 #方差
- x3~~x3 #變數
- x4~~x4 #變數
- x5~~x5 #變數
- #x4~~x5將是協方差的一個例子
擬合模型
summary(model_m)
inspect(model_m)
Paths
路徑分析
與上述步驟相同,但主要側重於迴歸路徑。值得注意的是這種方法對調節分析的效用。
- ##載入資料
- set.seed(1234)
- Data <- data.frame(X = X, Y = Y, M = M)
指定模型
- # 直接效應
- Y ~ c*X #使用字元來命名迴歸路徑
- # 調節變數
- M ~ a*X
- Y ~ b*M
- # 間接效應(a*b)
- ab := a*b #定義新引數
- # 總效應
- total := c + (a*b) #使用":="定義新引數
擬合模型
summary(model_m)
Paths(model)
間接效應的Bootstrapping置信區間
除了指定對5000個樣本的標準誤差進行bootstrapping外,下面的語法還指出標準誤差應進行偏差校正(但不是accelearted)。這種方法將產生與SPSS中的PROCESS巨集程式類似的結果,即對標準誤差進行偏差修正。
sem(medmodel,se = "bootstrap")
確認性因素分析
載入資料
我們將使用例子中的相同資料
指定模型
- '
- f =~ x1 + x2 + x3 +x4 + x5
- x1~~x1
- x2~~x2
- x3~~x3
- x4~~x4
- x5~~x5
- '
擬合模型
sem(fit, simData)
Paths(fit)
anova
正如各模型的LRT所示,sem()和cfa()是具有相同預設值的軟體包。CFA可以很容易地使用cfa()或sem()完成 結構方程模型
載入資料
在這種情況下,我將模擬資料。
- #結構成分
- y ~ .5*f1 + .7*f2 #用外部標準迴歸的強度
- #測量部分
- f1 =~ .8*x1 + .6*x2 + .7*x3 + .8*x4 + .75*x5 #定義因子f,在5個專案上的載荷。
- x1 ~~ (1-.8^2)*x1 #殘差。注意,通過使用1平方的載荷,我們實現了每個指標的總變異性為1.0(標準化)。
- ...
- #生成資料;注意,標準化的lv是預設的
- sim <- sim(tosim)
- #看一下資料
- describe(sim )
指定模型
測試正確的模型
- #結構性
- y ~ f1+ f2
- #測量
- f1 =~ x1 + x2 + x3 + x4 + x5
- f2 =~ x6 + x7
測試不正確的模型。假設我們錯誤地認為X4和X5負載於因子2。
- incorrect
- #結構性
- y ~ f1+ f2
- #測量
- f1 =~ x1 + x2 + x3
- f2 =~ x6 + x7 + x4 + x5
擬合模型
正確的模型
summary(model_m)
不正確的模型
summary(incorrectmodel_m, fit.measures = TRUE)
比較模型
正確模型
不正確模型
Paths(incorrec)
anova
除了不正確模型的整體擬合指數較差--如CFI<0.95,RMSEA>0.06,SRMR>0.08和Chi-square test<0.05所示,正確模型也優於不正確模型,如正確模型的AIC和BIC低得多所示。
最受歡迎的見解
3.matlab中的偏最小二乘迴歸(PLSR)和主成分迴歸(PCR)
6.r語言中對LASSO迴歸,Ridge嶺迴歸和Elastic Net模型實現
7.R語言邏輯迴歸、Naive Bayes貝葉斯、決策樹、隨機森林演算法預測心臟病
9.R語言用邏輯迴歸、決策樹和隨機森林對信貸資料集進行分類預測
▍關注我們 【大資料部落】第三方資料服務提供商,提供全面的統計分析與資料探勘諮詢服務,為客戶定製個性化的資料解決方案與行業報告等。 ▍諮詢連結:http://y0.cn/teradat ▍聯絡郵箱:[email protected]