拓端tecdat|在R語(yǔ)言中實(shí)現(xiàn)sem進(jìn)行結(jié)構(gòu)方程建模和路徑圖可視化
原文鏈接:?http://tecdat.cn/?p=23312
原文出處:拓端數(shù)據(jù)部落公眾號(hào)
引言
結(jié)構(gòu)方程模型是一個(gè)線性模型框架,它對(duì)潛變量同時(shí)進(jìn)行回歸方程建模。 ?諸如線性回歸、多元回歸、路徑分析、確認(rèn)性因子分析和結(jié)構(gòu)回歸等模型都可以被認(rèn)為是SEM的特例。在SEM中可能存在以下關(guān)系。
觀察到的變量與觀察到的變量之間的關(guān)系(γ,如回歸)。
潛變量與觀察變量(λ,如確認(rèn)性因子分析)。
潛變量與潛變量(γ,β,如結(jié)構(gòu)回歸)。
SEM獨(dú)特地包含了測(cè)量和結(jié)構(gòu)模型。測(cè)量模型將觀測(cè)變量與潛變量聯(lián)系起來(lái),結(jié)構(gòu)模型將潛變量與潛變量聯(lián)系起來(lái)。目前有多種軟件處理SEM模型,包括Mplus、EQS、SAS PROC CALIS、Stata的sem和最近的R的lavaan。R的好處是它是開(kāi)源的,可以免費(fèi)使用,而且相對(duì)容易使用。
本文將介紹屬于SEM框架的最常見(jiàn)的模型,包括
簡(jiǎn)單回歸
多元回歸
多變量回歸
路徑分析
確認(rèn)性因素分析
結(jié)構(gòu)回歸
目的是在每個(gè)模型中介紹其
矩陣表述
路徑圖
lavaan語(yǔ)法
參數(shù)和輸出
在這次訓(xùn)練結(jié)束時(shí),你應(yīng)該能夠理解這些概念,足以正確識(shí)別模型,認(rèn)識(shí)矩陣表述中的每個(gè)參數(shù),并解釋每個(gè)模型的輸出。
語(yǔ)法簡(jiǎn)介
語(yǔ)法一:f3~f1+f2(路徑模型)
結(jié)構(gòu)方程模型的路徑部分可以看作是一個(gè)回歸方程。而在R中,回歸方程可以表示為y~ax1+bx2+c,“~”的左邊的因變量,右邊是自變量,“+”把多個(gè)自變量組合在一起。那么把y看作是內(nèi)生潛變量,把x看作是外生潛變量,略去截距,就構(gòu)成了語(yǔ)法一。
語(yǔ)法二:f1 =~ item1 + item2 + item3(測(cè)量模型)
"=~"的左邊是潛變量,右邊是觀測(cè)變量,整句理解為潛變量f1由觀測(cè)變量item1、item2和item3表現(xiàn)。
語(yǔ)法三:item1 ~~ item1 , item1 ~~ item2
"~~"的兩邊相同,表示該變量的方差,不同的話表示兩者的協(xié)方差
語(yǔ)法四:f1 ~ 1
表示截距
基礎(chǔ)知識(shí)
加載數(shù)據(jù)
在這種情況下,我們將模擬數(shù)據(jù)。
y ~ .5*f ?#有外部標(biāo)準(zhǔn)的回歸強(qiáng)度
f =~ .8*x1 + .8*x2 + .8*x3 + .8*x4 + .8*x5 ?#定義因子f,在5個(gè)項(xiàng)目上的載荷。
x1 ~~ (1-.8^2)*x1 #殘差。請(qǐng)注意,通過(guò)使用1平方的載荷,我們?cè)诿總€(gè)指標(biāo)中實(shí)現(xiàn)了1.0的總變異性(標(biāo)準(zhǔn)化的)。
......
#產(chǎn)生數(shù)據(jù);注意,標(biāo)準(zhǔn)化的lv是默認(rèn)的
simData
#看一下數(shù)據(jù)
describe(simData)[,1:4]
指定模型
y ~ f # "~回歸"
f =~ x1+ x2 + x3 + x4 + x5 # "=~被測(cè)量的是"
x1 ~~ x1 # 方差
x2 ~~ x2 #方差
x3~~x3 #變量
x4~~x4 #變量
x5~~x5 #變量
#x4~~x5將是協(xié)方差的一個(gè)例子
擬合模型
summary(model_m)
inspect(model_m)
Paths
路徑分析
與上述步驟相同,但主要側(cè)重于回歸路徑。值得注意的是這種方法對(duì)調(diào)節(jié)分析的效用。
##加載數(shù)據(jù)
set.seed(1234)
Data <- data.frame(X = X, Y = Y, M = M)
指定模型
# 直接效應(yīng)
Y ~ c*X #使用字符來(lái)命名回歸路徑
# 調(diào)節(jié)變量
M ~ a*X
Y ~ b*M
# 間接效應(yīng)(a*b)
ab := a*b #定義新參數(shù)
# 總效應(yīng)
total := c + (a*b) #使用":="定義新參數(shù)
擬合模型
summary(model_m)
?
Paths(model)
間接效應(yīng)的Bootstrapping置信區(qū)間
除了指定對(duì)5000個(gè)樣本的標(biāo)準(zhǔn)誤差進(jìn)行bootstrapping外,下面的語(yǔ)法還指出標(biāo)準(zhǔn)誤差應(yīng)進(jìn)行偏差校正(但不是accelearted)。這種方法將產(chǎn)生與SPSS中的PROCESS宏程序類似的結(jié)果,即對(duì)標(biāo)準(zhǔn)誤差進(jìn)行偏差修正。?
sem(medmodel,se = "bootstrap")
?
?
確認(rèn)性因素分析
加載數(shù)據(jù)
我們將使用例子中的相同數(shù)據(jù)
指定模型
'
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()是具有相同默認(rèn)值的軟件包。CFA可以很容易地使用cfa()或sem()完成 結(jié)構(gòu)方程模型
加載數(shù)據(jù)
在這種情況下,我將模擬數(shù)據(jù)。
#結(jié)構(gòu)成分
y ~ .5*f1 + .7*f2 #用外部標(biāo)準(zhǔn)回歸的強(qiáng)度
#測(cè)量部分
f1 =~ .8*x1 + .6*x2 + .7*x3 + .8*x4 + .75*x5 #定義因子f,在5個(gè)項(xiàng)目上的載荷。
x1 ~~ (1-.8^2)*x1 #殘差。注意,通過(guò)使用1平方的載荷,我們實(shí)現(xiàn)了每個(gè)指標(biāo)的總變異性為1.0(標(biāo)準(zhǔn)化)。
...
#生成數(shù)據(jù);注意,標(biāo)準(zhǔn)化的lv是默認(rèn)的
sim <- sim(tosim)
#看一下數(shù)據(jù)
describe(sim )
?
?
指定模型
測(cè)試正確的模型
#結(jié)構(gòu)性
y ~ f1+ f2
#測(cè)量
f1 =~ x1 + x2 + x3 + x4 + x5
f2 =~ x6 + x7
測(cè)試不正確的模型。假設(shè)我們錯(cuò)誤地認(rèn)為X4和X5負(fù)載于因子2。
incorrect
#結(jié)構(gòu)性
y ~ f1+ f2
#測(cè)量
f1 =~ x1 + x2 + x3
f2 =~ x6 + x7 + x4 + x5
擬合模型
正確的模型
?
summary(model_m)
不正確的模型
?
summary(incorrectmodel_m, fit.measures = TRUE)
比較模型
正確模型
?不正確模型
Paths(incorrec)
anova
除了不正確模型的整體擬合指數(shù)較差--如CFI<0.95,RMSEA>0.06,SRMR>0.08和Chi-square test<0.05所示,正確模型也優(yōu)于不正確模型,如正確模型的AIC和BIC低得多所示。
最受歡迎的見(jiàn)解
1.R語(yǔ)言多元Logistic邏輯回歸 應(yīng)用案例
2.面板平滑轉(zhuǎn)移回歸(PSTR)分析案例實(shí)現(xiàn)
3.matlab中的偏最小二乘回歸(PLSR)和主成分回歸(PCR)
4.R語(yǔ)言泊松Poisson回歸模型分析案例
5.R語(yǔ)言混合效應(yīng)邏輯回歸Logistic模型分析肺癌
6.r語(yǔ)言中對(duì)LASSO回歸,Ridge嶺回歸和Elastic Net模型實(shí)現(xiàn)
7.R語(yǔ)言邏輯回歸、Naive Bayes貝葉斯、決策樹(shù)、隨機(jī)森林算法預(yù)測(cè)心臟病
8.python用線性回歸預(yù)測(cè)股票價(jià)格
9.R語(yǔ)言用邏輯回歸、決策樹(shù)和隨機(jī)森林對(duì)信貸數(shù)據(jù)集進(jìn)行分類預(yù)測(cè)