1. 程式人生 > 其它 >拓端tecdat|在R語言中實現sem進行結構方程建模和路徑圖視覺化

拓端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

表示截距

基礎知識

載入資料

在這種情況下,我們將模擬資料。

  1. y ~ .5*f #有外部標準的迴歸強度
  2. f =~ .8*x1 + .8*x2 + .8*x3 + .8*x4 + .8*x5 #定義因子f,在5個專案上的載荷。
  3. x1 ~~ (1-.8^2)*x1 #殘差。請注意,通過使用1平方的載荷,我們在每個指標中實現了1.0的總變異性(標準化的)。
  4. ......
  5. #產生資料;注意,標準化的lv是預設的
  6. simData
  7. #看一下資料
  8. describe(simData)[,1:4]

指定模型

  1. y ~ f # "~迴歸"
  2. f =~ x1+ x2 + x3 + x4 + x5 # "=~被測量的是"
  3. x1 ~~ x1 # 方差
  4. x2 ~~ x2 #方差
  5. x3~~x3 #變數
  6. x4~~x4 #變數
  7. x5~~x5 #變數
  8. #x4~~x5將是協方差的一個例子

擬合模型

summary(model_m)
inspect(model_m)
Paths

路徑分析

與上述步驟相同,但主要側重於迴歸路徑。值得注意的是這種方法對調節分析的效用。

  1. ##載入資料
  2. set.seed(1234)
  3. Data <- data.frame(X = X, Y = Y, M = M)

指定模型

  1. # 直接效應
  2. Y ~ c*X #使用字元來命名迴歸路徑
  3. # 調節變數
  4. M ~ a*X
  5. Y ~ b*M
  6. # 間接效應(a*b)
  7. ab := a*b #定義新引數
  8. # 總效應
  9. total := c + (a*b) #使用":="定義新引數

擬合模型

summary(model_m)
Paths(model)

間接效應的Bootstrapping置信區間

除了指定對5000個樣本的標準誤差進行bootstrapping外,下面的語法還指出標準誤差應進行偏差校正(但不是accelearted)。這種方法將產生與SPSS中的PROCESS巨集程式類似的結果,即對標準誤差進行偏差修正。

sem(medmodel,se = "bootstrap")

確認性因素分析

載入資料

我們將使用例子中的相同資料

指定模型

  1. '
  2. f =~ x1 + x2 + x3 +x4 + x5
  3. x1~~x1
  4. x2~~x2
  5. x3~~x3
  6. x4~~x4
  7. x5~~x5
  8. '

擬合模型

sem(fit, simData)
Paths(fit)
anova

正如各模型的LRT所示,sem()和cfa()是具有相同預設值的軟體包。CFA可以很容易地使用cfa()或sem()完成 結構方程模型

載入資料

在這種情況下,我將模擬資料。

  1. #結構成分
  2. y ~ .5*f1 + .7*f2 #用外部標準迴歸的強度
  3. #測量部分
  4. f1 =~ .8*x1 + .6*x2 + .7*x3 + .8*x4 + .75*x5 #定義因子f,在5個專案上的載荷。
  5. x1 ~~ (1-.8^2)*x1 #殘差。注意,通過使用1平方的載荷,我們實現了每個指標的總變異性為1.0(標準化)。
  6. ...
  7. #生成資料;注意,標準化的lv是預設的
  8. sim <- sim(tosim)
  9. #看一下資料
  10. describe(sim )

指定模型

測試正確的模型

  1. #結構性
  2. y ~ f1+ f2
  3. #測量
  4. f1 =~ x1 + x2 + x3 + x4 + x5
  5. f2 =~ x6 + x7

測試不正確的模型。假設我們錯誤地認為X4和X5負載於因子2。

  1. incorrect
  2. #結構性
  3. y ~ f1+ f2
  4. #測量
  5. f1 =~ x1 + x2 + x3
  6. 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低得多所示。


最受歡迎的見解

1.R語言多元Logistic邏輯迴歸 應用案例

2.面板平滑轉移回歸(PSTR)分析案例實現

3.matlab中的偏最小二乘迴歸(PLSR)和主成分迴歸(PCR)

4.R語言泊松Poisson迴歸模型分析案例

5.R語言混合效應邏輯迴歸Logistic模型分析肺癌

6.r語言中對LASSO迴歸,Ridge嶺迴歸和Elastic Net模型實現

7.R語言邏輯迴歸、Naive Bayes貝葉斯、決策樹、隨機森林演算法預測心臟病

8.python用線性迴歸預測股票價格

9.R語言用邏輯迴歸、決策樹和隨機森林對信貸資料集進行分類預測

▍關注我們 【大資料部落】第三方資料服務提供商,提供全面的統計分析與資料探勘諮詢服務,為客戶定製個性化的資料解決方案與行業報告等。 ▍諮詢連結:http://y0.cn/teradat ▍聯絡郵箱:[email protected]